在 python 的 IRC 库中扩展机器人
Extending the bot in python's IRC library
我正在尝试扩展此 IRC library here. I've repasted the code of said bot here 附带的示例机器人。
我的问题是我不太明白需要修改什么才能使机器人能够响应事件,例如接收消息 - 我看不到任何事件调度程序。
我能做的是
bot = irc.bot.SingleServerIRCBot(server_list = [('irc.whatever.net.', 6667)],realname = 'irclibbot',nickname = 'irclibbot',)
bot.start()
它运行良好 - 连接到网络等等,但它什么也没做。甚至不响应基本的 CTCP 事件,如 VERSION 和 PING。
这是如何工作的?
检查 this example 您需要做什么。
class TestBot(irc.bot.SingleServerIRCBot):
def __init__(self, channel, nickname, server, port=6667):
irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
def on_nicknameinuse(self, c, e):
c.nick(c.get_nickname() + "_")
def on_welcome(self, c, e):
c.join(self.channel)
def on_privmsg(self, c, e):
self.do_command(e, e.arguments[0])
定义您自己的 class 继承自实际 irc.bot.SingleServerIRCBot
class。然后,事件将自动绑定到名为 on_'event'
的方法,如 on_privmsg
、on_part
等
Here您可以找到支持事件的参考。
我正在尝试扩展此 IRC library here. I've repasted the code of said bot here 附带的示例机器人。
我的问题是我不太明白需要修改什么才能使机器人能够响应事件,例如接收消息 - 我看不到任何事件调度程序。
我能做的是
bot = irc.bot.SingleServerIRCBot(server_list = [('irc.whatever.net.', 6667)],realname = 'irclibbot',nickname = 'irclibbot',)
bot.start()
它运行良好 - 连接到网络等等,但它什么也没做。甚至不响应基本的 CTCP 事件,如 VERSION 和 PING。
这是如何工作的?
检查 this example 您需要做什么。
class TestBot(irc.bot.SingleServerIRCBot):
def __init__(self, channel, nickname, server, port=6667):
irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
def on_nicknameinuse(self, c, e):
c.nick(c.get_nickname() + "_")
def on_welcome(self, c, e):
c.join(self.channel)
def on_privmsg(self, c, e):
self.do_command(e, e.arguments[0])
定义您自己的 class 继承自实际 irc.bot.SingleServerIRCBot
class。然后,事件将自动绑定到名为 on_'event'
的方法,如 on_privmsg
、on_part
等
Here您可以找到支持事件的参考。