1

我为http://www.rsplayers.wikia.com/创建了一个 IRC Bot,它成功连接到频道并具有一些基本命令,但我一直停留在允许您链接网站的这一部分. Wiki 链接基本上是 [[Link]],没什么特别的。目前命令只能在一个 def 中完成,这里是一个示例 say 命令:

def say(self, sender, info, cmd):
    return "PRIVMSG %s :%s\n" % (info[2], cmd[1])

info[2] 是发出命令的通道,而 cmd[1] 是 !say 之后的任何内容。命令也是这样列出的:

self.USER_CMD = {'!say': self.say, '!test': self.test, '!time': self.time, '!help': self.help, '!8ball': self.eightball}

我不知道如何创建这个,所以我需要帮助。

编辑:正如评论中所要求的更具体:每当有人输入 [[Brakets]] 时,它都会返回一个指向 rsplayers wiki 网站的链接。一个例子是:

( 尼克 ) [[主页]]

(机器人)http://www.rsplayers.wikia.com/wiki/Main_Page

4

1 回答 1

1

假设您只想将链接附加到 wiki 的末尾,那么就这样做。如果你想确保有一个实际的页面,这需要更多的工作,基本上检查 http 状态代码 200 或类似的东西。

要仅附加命令,您应该去掉括号、标题所有内容并在空格处插入下划线,因为这似乎是该 wiki 上使用的方案。

def say_wiki(self, sender, info, cmd):
    home = 'http://www.rsplayers.wikia.com/wiki/'
    link = '_'.join(cmd[1].title().split())
    return 'PRIVMSG %s :%s%s\r\n' % (info[2], home, link)

如果需要支持链接是否有效,可以使用 urllib。

import urllib

def say_wiki(self, sender, info, cmd):
    home = 'http://www.rsplayers.wikia.com/wiki/'
    link = '_'.join(cmd[1].title().split())
    page = urllib.urlopen(home + link)
    if 200 == page.getcode():
        return 'PRIVMSG %s :%s%s\r\n' % (info[2], home, link)
    else:
        return 'PRIVMSG %s :%s is not a valid page\r\n' % (info[2], cmd[1])

虽然可能有更好的方法来实现这一点。

于 2012-07-31T04:24:20.583 回答