识别发送用户,Python IRC
Identify sending user, Python IRC
所以我为自己的频道制作了一个 Twitch.tv 机器人,在玩了一会儿之后,我想将一些命令限制为某些用户,以及一些可以说出用户名的命令,例如:
Username reply example:
Person1: !tea
PythonBot: Would you like some tea, Person1?
Admin restriction example:
Person1: !ban Person2
PythonBot: I'm sorry, Person1, This command is restricted to admins only.
好的,这是我正在使用的代码(我将很快对其进行修改以使其成为我自己的代码)
import socket
import threading
bot_owner = '~Not Today~'
nick = '~Not Today~'
channel = '~Not Today~'
server = 'irc.twitch.tv'
password = '~Not Today~'
queue = 13
irc = socket.socket()
irc.connect((server, 6667))
irc.send('PASS ' + password + '\r\n')
irc.send('USER ' + nick + ' 0 * :' + bot_owner + '\r\n')
irc.send('NICK ' + nick + '\r\n')
irc.send('JOIN ' + channel + '\r\n')
def message(msg):
global queue
queue = 5
if queue < 20:
irc.send('PRIVMSG' + channel + ' :' + msg + '\r\n')
else:
print 'Message Deleted'
def queuetimer():
global queue
queue = 0
threading.Timer(30,queuetimer).start()
queuetimer()
while True:
botdata = irc.recv(1204)
botuser = botdata.split(':')[1]
botuser = botuser.split('!')[0]
print botdata
if botdata.find('PING') != -1:
irc.send(botdata.replace('PING', 'PONG'))
if botdata.find('!res') != -1:
irc.send(botdata.replace('!res', '1600x900'))
twitch IRC 原始消息就像
:jkm!jkm@jkm.tmi.twitch.tv PRIVMSG #trumpsc :needs Kappa
对于上面的消息,它实际上意味着频道 trumpsc
的用户jkm
说 needs Kappa
对于您的代码,获取botuser
的方法是正确的,但是您没有用户发送的消息,添加以下代码应该可以获取消息
botmsg = botdata.split(':')[2]
所以你得到了消息和用户名,下一步就是处理它们。
这是您需要的一些示例。对于我来说,我会为其他命令准备一个adminuserList
和commmandList
,但我会在这里简化它。
def commmanHandler(botuser, botmsg): # botmsg = '!ban user1'
command = botmsg.split(' ')[0] # command = '!ban'
command = command[1:] # command = 'ban'
argu = message.split(' ')[1] # argu = 'user1'
if command not in commmandList:
raise Exception("command not support")
if command == 'ban': # ban command, or using switch
# check if admin
if botuser not in adminList:
raise Exception("I'm sorry, " + botuser + ", This command is restricted to admins only.")
# admin, able to ban
irc.send('PRIVMSG' + channel + ' :' + '.ban ' + argu)
然后在你的 while 循环中调用这个函数来处理你收到的所有消息
try:
commmanHandler(botuser, botmsg)
except Exception, e:
print e
irc.send('PRIVMSG' + channel + ' :' + e)
这是我的解决方案,另外,不要忘记给机器人 版主 权限。
所以我为自己的频道制作了一个 Twitch.tv 机器人,在玩了一会儿之后,我想将一些命令限制为某些用户,以及一些可以说出用户名的命令,例如:
Username reply example:
Person1: !tea
PythonBot: Would you like some tea, Person1?
Admin restriction example:
Person1: !ban Person2
PythonBot: I'm sorry, Person1, This command is restricted to admins only.
好的,这是我正在使用的代码(我将很快对其进行修改以使其成为我自己的代码)
import socket
import threading
bot_owner = '~Not Today~'
nick = '~Not Today~'
channel = '~Not Today~'
server = 'irc.twitch.tv'
password = '~Not Today~'
queue = 13
irc = socket.socket()
irc.connect((server, 6667))
irc.send('PASS ' + password + '\r\n')
irc.send('USER ' + nick + ' 0 * :' + bot_owner + '\r\n')
irc.send('NICK ' + nick + '\r\n')
irc.send('JOIN ' + channel + '\r\n')
def message(msg):
global queue
queue = 5
if queue < 20:
irc.send('PRIVMSG' + channel + ' :' + msg + '\r\n')
else:
print 'Message Deleted'
def queuetimer():
global queue
queue = 0
threading.Timer(30,queuetimer).start()
queuetimer()
while True:
botdata = irc.recv(1204)
botuser = botdata.split(':')[1]
botuser = botuser.split('!')[0]
print botdata
if botdata.find('PING') != -1:
irc.send(botdata.replace('PING', 'PONG'))
if botdata.find('!res') != -1:
irc.send(botdata.replace('!res', '1600x900'))
twitch IRC 原始消息就像
:jkm!jkm@jkm.tmi.twitch.tv PRIVMSG #trumpsc :needs Kappa
对于上面的消息,它实际上意味着频道 trumpsc
的用户jkm
说 needs Kappa
对于您的代码,获取botuser
的方法是正确的,但是您没有用户发送的消息,添加以下代码应该可以获取消息
botmsg = botdata.split(':')[2]
所以你得到了消息和用户名,下一步就是处理它们。
这是您需要的一些示例。对于我来说,我会为其他命令准备一个adminuserList
和commmandList
,但我会在这里简化它。
def commmanHandler(botuser, botmsg): # botmsg = '!ban user1'
command = botmsg.split(' ')[0] # command = '!ban'
command = command[1:] # command = 'ban'
argu = message.split(' ')[1] # argu = 'user1'
if command not in commmandList:
raise Exception("command not support")
if command == 'ban': # ban command, or using switch
# check if admin
if botuser not in adminList:
raise Exception("I'm sorry, " + botuser + ", This command is restricted to admins only.")
# admin, able to ban
irc.send('PRIVMSG' + channel + ' :' + '.ban ' + argu)
然后在你的 while 循环中调用这个函数来处理你收到的所有消息
try:
commmanHandler(botuser, botmsg)
except Exception, e:
print e
irc.send('PRIVMSG' + channel + ' :' + e)
这是我的解决方案,另外,不要忘记给机器人 版主 权限。