使用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为什么这个代码段不会产生结果?   在OSGi下使用SnakeYaml的java?   java可扩展列表视图能否移动自定义图标(指示器)?   java如何将文件从html保存为pdf   java如何将字符串转换为长字符串   java使用来自无限输入的原始数据并在设备上播放   通过spring数据使用复合PK集合的java查询(Hibernate JPA)   使用Sax解析器通过按钮单击java解析数据所有按钮返回相同的数据,而不是独占数据   JavaSWT:将shell切换到全屏模式   如果IsRechable抛出Java中的IOException,那么应该采取什么适当的操作?为什么?   java重定向到另一个带有@RequestBody的页面   密码学可以组织起来。弹跳船舱。openssl。PEMReader阅读java。安全私钥?   java MYSQL列中的空值要求为通配符   文件io如何将res文件夹链接到java项目