本篇教大家如何用Python来实现QQ机器人,如有不足欢迎在评论方指出!
简单介绍
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/c33a65ea72bfef6828adecca5f8a78fc.jpeg)
安装方法
可在 Python个版本下使用,用 pip 安装:
pip install qqbot
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/0c28ce08ec38ce3ebe83a5abf12dd9cd.jpeg)
使用方法
一、启动 QQBot
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/026e6e629ba9e404e905be213d1dc0a1.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/c2bd061855d97584a68e2f9220050b13.jpeg)
二、操作 QQBot
QQBot 启动后,在另一个控制台窗口使用 qq 命令来操作 QQBot ,目前提供以下命令:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/e8c16daa539538e70ec0d10af7fc0352.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/20b3c167d8e5322d6bbdcbcd04df531f.jpeg)
list 命令提供强大的联系人查询功能,例如:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/a95d2d784b874ecc6a4e0dc775fe0cca.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/3c8f5ddcb01a40483bf1d43312b651b7.jpeg)
如:
qq list group 机器人测试
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/a12a3d881dcd4347efbb6f6583281bc5.jpeg)
例如:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/5db046d7fb4580f3b3b63588b16860f8.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/45efd0fe3634a9f26d67cbef0f56e5d6.jpeg)
实现我们自己的 QQ 机器人
要实现咱们自己的QQ 机器人超级简单,我们只要注册一个自己的消息响应函数。代码示范:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/f5203be0dafdb0067ab5891343139a7e.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/e39ce1c34d53c260e16e0e26ac62b617.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/28a8a1f637d8db4eaae9d0374844a4fa.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/72967db69f639a6cc724708db4d3bdaf.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/63b741690d3b6db10ae599b18d39eed2.jpeg)
假如按插件的形式加载 sample.py ,那么这个文件的内容可以简化成:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/5a638b2668d535049a4de67f492b29f9.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/b449b7631ec9d8f245ecc30d44ce0b6d.jpeg)
QQBot 对象的接口
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/0320668fcf3a8b22cecdd707ea02975e.jpeg)
(1) bot.List(tinfo, [cinfo]) --> [contact0, contact1, ..., ]/[]/None
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/b402ab1f31f1b2e424e817b80ea53849.jpeg)
示例:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/5ade2d3b926cdbce1213447c8020c2a3.jpeg)
List 接口的***个参数 tinfo 也可以是一个 ctype 等于 'group'/'discuss' 的 QContact 对象,此时,返回的是该 群/讨论组 的成员列表,如以下第二句和第三句分别返回 群“456班” 的成员列表和该群中名片为 “jack” 的成员列表:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/46c4b6a82939b8eb92103aaab0de70f2.jpeg)
注意第三句不允许是 bot.List(g, card='jack') 的格式。
List 接口的内部执行顺序:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/5c739d0b1bc9fc0d29dd4bcbddc9f960.jpeg)
List 接口返回值的含义:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/dfa094045f948e82808e5802e9355ab1.jpeg)
2、 bot.SendTo(contact, content) --> '向 xx 发消息成功'/'错误:...'
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/dd2748a0bfd20ff5c1244969b3a9f487.jpeg)
(3) bot.GroupXXX(group, membs[, arg]) --> ['成功:...', '成功:...', '错误:...']
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/864c918ececd5f0a031d5ccfdbd223b3.jpeg)
(1) bot.List(tinfo, [cinfo]) --> [contact0, contact1, ..., ]/[]/None
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/eee0fcc36841b5176e8de7067ac9aeb2.jpeg)
示例:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/b77fb1614690e1b2d0cdefea55597a66.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/dfa1c208804cb96c9f059e3cfe95c847.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/a9f3a910b2d2f9efcbe4eee66b6bf7f7.jpeg)
注意上面第三句不允许是 bot.List(g, card='jack') 的格式。
List 接口的内部执行顺序:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/ee925768b7724c910b43ab457fd2e75a.jpeg)
List 接口返回值的含义:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/90d05d0142b4ac5db58ba92528f2f35d.jpeg)
(2) bot.SendTo(contact, content) --> '向 xx 发消息成功'/'错误:...'
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/003b4e5219049f89b3d5ea3ccf2d6c6f.jpeg)
(3) bot.GroupXXX(group, membs[, arg]) --> ['成功:...', '成功:...', '错误:...']
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/afe4eaeb52c5d1cb83e3b5b00b6ccf38.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/51c484ba63381878de9d34fbe4f0217b.jpeg)
注册回调函数、被他人 @ 的通知、定制定时任务
注册回调函数
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/34fc38a5bab1e361e0ef87133bd7345f.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/4b97222c964cc0f7b0f983ecbc1df75e.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/916e06b4ff0a8693fe341fc164931565.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/d36c033f2644e67e0292d46d217e9c8d.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/0ba985736a974179e2138e0905cf37c2.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/e25f13f7e80ce63056e7e0c072cf5ba8.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/cf8315fd32039552ce3c93b9fe6946d7.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/0b91b413af98d7ce7766a2c980e462b1.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/7bf77fb80a9a903904286b305e840949.jpeg)
定制定时任务
从 2.1.13 起, qqbot 中提供一个功能强大的函数装饰器 -- QQBotSched 来定制定时任务,示例代码:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/a5ebc003bf3551608378584e5ac013df.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/cb59216b3d8a3b282147537ebdf111dd.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/df54bfd1967092d6a67f7599a64ebfce.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/b3b3f5310acdd073c90286785dfd7e70.jpeg)
二维码管理器、QQBot 配置及命令行参数
二维码的显示模式
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/971475fbcfa14e7098cf1cc813f3ebb1.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/bd3c909ac35b2de99bcef066057ee6d0.jpeg)
配置文件的使用方法
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/24685d0249df74edf59b896feef5f141.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/887c5b8563404821f398f807c6b8e85f.jpeg)
邮箱模式的配置( mailAccount 和 mailAuthCode )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/eda1a26410a3e4da65e36f9d3ea5d078.jpeg)
服务器模式的配置( httpServerIP 和 httpServerPort )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/adcad6668bde7f05d390b3492d4fc454.jpeg)
自动登录的 QQ 号码( qq )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/7a21d6cca929cfbf9032a35d8b02e408.jpeg)
掉线后自动重启( restartOnOffline )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/62134c70eaa44bf61c61339ff4676b62.jpeg)
联系人列表更新的间歇时间( fetchInterval )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/941b7a201afd0c56d94764975596d32e.jpeg)
联系人列表获取完成后再启动( startAfterFetch )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/913b842295775d2fc57526fe7cdecc58.jpeg)
QQBot-term 服务器端口号( termServerPort )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/412c0223082e95f6ecb5bef23e38af88.jpeg)
如:
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/841c8ddbd93289415ff13f417a793d63.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/123b97aa11236347de1a78e920133071.jpeg)
文本模式显示二维码(cmdQrcode)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/ad83bf91b0653e6aafe75702e222832d.jpeg)
调试模式( debug )
若 debug 项设置为 True ,则运行过程中会打印调试信息。
需要被监视的联系人列表( monitorTables )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/b28a97b63f535149403f33eed83f5e8d.jpeg)
插件的配置( pluginPath 和 plugins )
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/d578781372e6ec05305cb563fa883d94.jpeg)
命令行参数及配置的优先级
![基于Python来开发一个QQ机器人,原来这么简单!](https://s1.51cto.com/oss/201806/08/bce37150c1963818fa94a31930bd2e0f.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/2d868c2952d20aeaa4fe36ee807b1695.jpeg)
其中:根配置 是固定的,用户无法修改; 默认配置 和 用户配置 可由用户在 v2.1.conf 文件中进行修改;***,还可以在 命令行参数 中输入配置。
smartqq 协议支持及限制
![基于Python来开发一个QQ机器人,原来这么简单!](https://s5.51cto.com/oss/201806/08/426122fbe10f72fe85a6adb358093aca.jpeg)
![基于Python来开发一个QQ机器人,原来这么简单!](https://s2.51cto.com/oss/201806/08/8e232a813f52d98d7b8873f0dbfe28c6.jpeg)
因 smartqq 协议的限制,以下问题无解决办法
![基于Python来开发一个QQ机器人,原来这么简单!](https://s3.51cto.com/oss/201806/08/d4fb7ad29f9cc12c2cbbacc921fd8cd4.jpeg)
参考资料
![基于Python来开发一个QQ机器人,原来这么简单!](https://s4.51cto.com/oss/201806/08/2f0cb596455b5a206321e7ca7f8ef58a.jpeg)