1

http://www.rsplayers.wikia.com/の IRC ボットを作成しました。このボットはチャンネルに正常に接続し、いくつかの基本的なコマンドを備えていますが、サイト内をリンクできるようにするこの 1 つの部分に行き詰まっています。 . ウィキのリンクは基本的に [[リンク]] であり、特別なものではありません。現在、コマンドは 1 つの定義でのみ実行できます。以下に 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 Web サイトへのリンクが返されます。例は次のとおりです。

( ニック ) [[メインページ]]

(ボット) http://www.rsplayers.wikia.com/wiki/Main_Page

4

1 に答える 1

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

これを達成するためのより良い方法があるかもしれませんが。

于 2012-07-31T04:24:20.583 に答える