【问题标题】:wiki links (irc bot)wiki 链接(irc 机器人)
【发布时间】:2012-07-28 18:44:26
【问题描述】:

我已经为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}

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

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

(尼克)[[主页]]

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

【问题讨论】:

  • 这个问题不够具体。究竟创造什么?

标签: python bots irc


【解决方案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])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 2017-05-13
    • 1970-01-01
    • 2017-01-26
    • 2012-08-20
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多