在 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_privmsgon_part

Here您可以找到支持事件的参考。