2012-07-31 128 views
1

我已经创建了一个IRC Bot,用于http://www.rsplayers.wikia.com/,它成功连接到了频道并且有一些基本的命令,但是我一直被困在这一个允许你链接到网站的部分。维基链接基本上是[[Link]],没什么特别。目前,命令只能在一个高清来完成,这里有一个例子说命令:wiki链接(irc bot)

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

信息[2]的命令是在发行和CMD [1]是什么后,该通道的发言权。该命令列出这样太:

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

我没有太多的(任何)知道如何才能创造这一点,所以我需要帮助。

编辑:由于在评论中问道,更具体:每当有人在[Brakets]类型将与一个链接回rsplayers维基网站返回。一个例子是:

(尼克)[[首页]]

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

+2

这个问题不够具体。创建什么,到底? – Max 2012-07-31 03:33:55

回答

1

假设你只是想添加链接到维基结束,然后做只是。如果你想确保有一个实际的页面,这需要更多的工作,基本上检查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]) 

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