2012-07-31 104 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]) 

雖然可能有更好的方法來實現這一點。