Python IRC Log Bot

时间:2013-03-13 05:31:52

标签: python irc

我正在寻找一个新的项目来让我的脚湿透。我有一个IRC频道,并希望有一个维护日志的机器人,并在提示时吐出x行消息,但我不知道从哪里开始写这样的东西。

我看到this教程,我认为这将让我开始使用机器人本身,但我不知道下一步的日志记录功能。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

假设您已经编写了一个调度函数,它为每种消息调用适当的处理程序,以及一个格式化和发送消息的发送函数。

处理程序看起来像这样:

MAX_LINES = 100

channel_logs = defaultdict(list)

def handle_public_message(user, channel, msg):
    log = logs[channel]
    log.append((user, msg))
    if len(log) > MAX_LINES:
        log.pop(0)
    if msg.partition(' ')[0].lower() == 'dumplog':
        dumplog(log, channel)

def handle_private_message(user, channel, msg):
    if msg.partition(' ')[0].lower() == 'dumplog':
        dumplog(logs[channel], channel, user)

def dumplog(log, channel, user=None):
    for line in log:
        send_msg(line, channel, user)

这就是它的全部内容。

如果你想得到想象,你可以编写一个包含“仅保留最后100个追加”的列表的类,使其成为存储到磁盘的直写缓存,添加一种方式来请求只需20线而不是100等

您还可以添加更多特定于机器人的功能,例如以更标准化的方式处理命令。但实际上,你最好为它获得一个机器人框架。

事实上,我强烈建议你不要开始处理原始套接字和命令解析的第一个项目。你将花费更多的时间来调试繁琐烦人的问题,而不是处理你的实际代码。其他选项包括:

  • 使用Python“AI”插件的完整机器人,例如supybot
  • 一个骨架机器人,在这里添加“你自己的代码”评论,你可以通过快速搜索找到大约3000条。
  • twisted框架的IRCClient协议。查看像this one这样的教程,看看一切都更高层次,更简单。
  • irclib