维基链接(irc bot)

时间:2012-07-31 03:30:49

标签: python bots irc

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

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

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

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

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

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

  

(尼克)[[主页]]

     

(Bot)http://www.rsplayers.wikia.com/wiki/Main_Page

1 个答案:

答案 0 :(得分:1)

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

要添加命令,您应该去除括号,标记所有内容并在空格中插入下划线,因为这似乎是该维基上使用的方案。

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])

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