使用irckit的干净、可扩展的irc bot。

toastbot的Python项目详细描述


toastbot
==


一个干净的、可扩展的irc bot,使用python、irckit、gevent&;请求。

**作者:**daniel lindsley<;br>;
**许可证:**bsd<;br>;
**版本:**0.4.1



Requirements
----

*gevent
*irckit
*requests



-


''myircchannel')
bot.setup()



>然后用``python bot.py```运行。













>各种非必需选项。
















>关于机器人,作为字符串。
*``通道``机器人应该连接的通道,作为字符串。

``服务器``机器人应该连接的服务器(默认值:``irc.freenode.net```).
*``用户名`-机器人应该标识的用户名(默认值:``nick`);
*`` realname``机器人应该提供的可读名称(默认值:“toastbot”)。
*``debug`-控制IRC连接是否应转储调试消息(默认值:``false``)。
*``log`u dir`-控制日志应进入的目录(默认值:`$install`directory/logs`)。
*``variants`-用于重写处理bot的方法。应该是字符串(默认值:`[self.nick+':',self.nick+',',self.nick+'-',self.nick+'-']```).




可用的“处理程序”
----

handlers是bot根据传入消息执行操作的方式。它们是挂起bot对象的简单方法。内置列表包括:

*``帮助``提供对我响应的内容的描述。
*``舞蹈``下来吧,别扭。
*``伍迪``网上最好的引语。
*``维基`-在维基百科上搜索主题。
*`` metar `-按站点代码获取noaa metar。
*`` twitter `-在twitter上搜索主题。
*`` fatpita``获取随机的fatpita图像。对于lulz.
*``corgi bomb``-corgi bomb



最基本的方法是添加一个用“toastbot.handler”修饰的新方法。例如,记录用户在频道中说过的话的次数可能如下:



class mybot(toastbot.toastbot):
talkers={}

super(mybot,self)。\uu初始(args,**kwargs)
self.enabled+=[
自我。如何聊天,
]


定义如何聊天(自我,尼克,文本):
“记录用户说话的频率。”
如果self.talkers中有nick:
self.talkers[nick]+=1
否则:
self.talkers[nick]=1


打印self.talkers.items()


bot=mybot(“myircbot”,“35; myircchannel”)
bot.setup()


请注意,此命令根本不需要寻址bot。如果您想要
bot响应的命令,可以编写如下内容:



class stoolpigeon(toastbot.toastbot):
self.enabled_commands+=[
self.stool_鸽子,
]


def stool_鸽子(self,nick,text):
“把说话的人赶走。”
text=self.is_direct_command('stool_鸽子',文本)

如果不是文本:
raise nothandled()


return str(self.talkers)

bot=stoolpigeon('myircbot',''myircchannel')
bot.setup()

检查bot是否直接寻址,然后返回字符串化版本的“talker”统计信息。包含的处理程序演示了
更复杂的行为,例如如何进行网络获取或异步
响应。


self).='twitter']

bot=mybot('myircbot','\myircchannel')
bot.setup()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何根据特定条件替换方括号内的单词   java为什么从数组流式传输时不能将整数映射到字符串?   java如何更改首选项活动主题?   java在JComboBox中显示时区   java我可以通过文档对象将PDF上传到SugarCRM吗?   web服务如何调用。通过NTLM身份验证从java客户端提供基于Net的Web服务   java使用Servlet读取Jar内部的清单文件   java当我们声明变量时,编译器实际上做什么?   寻找印地语背后的java直觉   java如何设置表格布局的样式   java Android在目标类上指定默认值   if语句在这两个java行中jvm是否存在任何差异:   java网格正在脱离屏幕   java将XLSX行转换为字符串并添加到数组   java JSF2 ResourceBundleLoader覆盖?