基于Python来开发一个QQ机器人,原来这么简单!
source link: http://developer.51cto.com/art/201806/575795.htm?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本篇教大家如何用Python来实现QQ机器人,如有不足欢迎在评论方指出!
简单介绍
安装方法
可在 Python个版本下使用,用 pip 安装:
pip install qqbot
使用方法
一、启动 QQBot
二、操作 QQBot
QQBot 启动后,在另一个控制台窗口使用 qq 命令来操作 QQBot ,目前提供以下命令:
list 命令提供强大的联系人查询功能,例如:
如:
qq list group 机器人测试
例如:
实现我们自己的 QQ 机器人
要实现咱们自己的QQ 机器人超级简单,我们只要注册一个自己的消息响应函数。代码示范:
假如按插件的形式加载 sample.py ,那么这个文件的内容可以简化成:
QQBot 对象的接口
(1) bot.List(tinfo, [cinfo]) --> [contact0, contact1, ..., ]/[]/None
示例:
List 接口的第一个参数 tinfo 也可以是一个 ctype 等于 'group'/'discuss' 的 QContact 对象,此时,返回的是该 群/讨论组 的成员列表,如以下第二句和第三句分别返回 群“456班” 的成员列表和该群中名片为 “jack” 的成员列表:
注意第三句不允许是 bot.List(g, card='jack') 的格式。
List 接口的内部执行顺序:
List 接口返回值的含义:
2、 bot.SendTo(contact, content) --> '向 xx 发消息成功'/'错误:...'
(3) bot.GroupXXX(group, membs[, arg]) --> ['成功:...', '成功:...', '错误:...']
(1) bot.List(tinfo, [cinfo]) --> [contact0, contact1, ..., ]/[]/None
示例:
注意上面第三句不允许是 bot.List(g, card='jack') 的格式。
List 接口的内部执行顺序:
List 接口返回值的含义:
(2) bot.SendTo(contact, content) --> '向 xx 发消息成功'/'错误:...'
(3) bot.GroupXXX(group, membs[, arg]) --> ['成功:...', '成功:...', '错误:...']
注册回调函数、被他人 @ 的通知、定制定时任务
注册回调函数
定制定时任务
从 2.1.13 起, qqbot 中提供一个功能强大的函数装饰器 -- QQBotSched 来定制定时任务,示例代码:
二维码管理器、QQBot 配置及命令行参数
二维码的显示模式
配置文件的使用方法
邮箱模式的配置( mailAccount 和 mailAuthCode )
服务器模式的配置( httpServerIP 和 httpServerPort )
自动登录的 QQ 号码( qq )
掉线后自动重启( restartOnOffline )
联系人列表更新的间歇时间( fetchInterval )
联系人列表获取完成后再启动( startAfterFetch )
QQBot-term 服务器端口号( termServerPort )
如:
文本模式显示二维码(cmdQrcode)
调试模式( debug )
若 debug 项设置为 True ,则运行过程中会打印调试信息。
需要被监视的联系人列表( monitorTables )
插件的配置( pluginPath 和 plugins )
命令行参数及配置的优先级
其中:根配置 是固定的,用户无法修改; 默认配置 和 用户配置 可由用户在 v2.1.conf 文件中进行修改;最后,还可以在 命令行参数 中输入配置。
smartqq 协议支持及限制
因 smartqq 协议的限制,以下问题无解决办法
参考资料
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK