0

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

我看到了本教程,我认为这将使我开始使用机器人本身,但我不确定下一步该去哪里获取日志记录功能。有人可以指出我正确的方向吗?

4

1 回答 1

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。看看这样的教程看看一切是多么的高级和简单。
  • irclib.
于 2013-03-13T05:46:25.690 回答