qq聊天机器人收藏本站找回密码开启辅助访问OTP 登录 注册 找回密码
安基网
请输入搜索内容
搜索
首页资讯软件IT技术公开课人才投稿
冰盾DDoS防火墙
冰盾DDoS防火墙
专业防护DDoS和CC攻击15年,网站和游戏服务器的保护神
点击了解详情
安基网›首页›资讯›科技眼› 查看内容
QQ聊天机器人
2017-2-6 10:55| 投稿: lofor
免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!
摘要: 初识PyQQbotQQBot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的简单 QQ 机器人,可运行在 Linux 和 Windows 平台下,所有代码均集成在一个 文件中,代码量仅 400 多行(不包括注释)。程序采用单线程的方式运 ...
初识PyQQbot
QQBot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的简单 QQ 机器人,可运行在 Linux 和 Windows 平台下,所有代码均集成在一个 [qqbot.py][code] 文件中,代码量仅 400 多行(不包括注释)。程序采用单线程的方式运行,且尽可能的减少了网络和登录错误(特别是所谓的 103 error )发生的概率。
PyQQbot的github项目地址为:https://github.com/pandolia/qqbot/
PyQQbot可以实现的功能:
1. 监控、收集QQ信息
2. 自动信息推送
3. 聊天机器人
4. 通过QQ远程控制电脑、智能家电
应用PyQQbot
1.安装
在 Python 2.7 下使用,用 pip 安装,安装命令:
$ pip install qqbot
验证是否安装成功,打开命令行输入qqbot -h
2.启动QQbot
在命令行输入: qqbot 。启动过程中会自动弹出二维码图片,需要用手机 QQ 客户端扫码并授权登录。
启动成功后,会将本次登录信息保存到本地文件中,下次启动时,可以输入:
qqbot -q qq号码
先尝试从本地文件中恢复登录信息(不需要手动扫码),只有恢复不成功或登录信息已过期时才会需要手动扫码登录。一般来说,保存的登录信息将在 2 ~ 3 天之后过期。
3.操作QQBot
找到.qqbot-tmp下的v2.0.conf文件,修改这个配置文件。
配置用户信息,如此我们可以使用命令:qqbot -u somebody,他直接调用的就是用户somebody的配置。如此,可以实现自动登录。
大家可以自己增加自己的用户配置信息
QQBot 启动后,会自动弹出一个控制台窗口( qterm 客户端)用来输入操作 QQBot 的命令,目前提供以下命令:
1) 帮助
help
2) 列出所有 好友/群/讨论组
list buddy|group|discuss
3) 向 好友/群/讨论组 发送消息
send buddy|group|discuss x|uin=x|qq=x|name=x|nick=x|mark=x message
4) 获取 好友/群/讨论组 的信息
get buddy|group|discuss x|uin=x|qq=x|name=x|nick=x|mark=x
5) 获取 群/讨论组 的成员
member group|discuss x|uin=x|qq=x|name=x|mark=x
6) 停止 QQBot
stop
7) 退出QQbot shell
quit
在 send/get/member 命令中,第三个参数可以是 好友/群/讨论组 的 名称/昵称/备注名/qq/uin 。
注意:如果系统中没有图形界面,则不会自动弹出控制台窗口,需要手动在另外的控制台中输入 “qterm [port]” 命令来打开 qterm 客户端。
QQBot 启动后,用另外一个 QQ 向本 QQ 发送 “qqbot --version” ,则 QQBot 会自动回复: “QQBot-v2.x.x” 。(注:2.0.3之前的版本中,通过 QQ 消息发送以上 6 个命令也可以操作 QQBot , 2.0.4 版之后,为安全起见,去掉此功能,只保留一个 “qqbot --version” 的命令用来远程测试 QQBot 是否正常运行)。
私人订制QQ机器人
实现自己的 QQ 机器人非常简单,只需要生成一个 QQBot 对象并为其注册一个消息响应函数。
以上代码运行后,用另外一个 QQ 向本 QQ 发送消息 “-hello”,则会自动回复 “你好,我是 QQ 机器人”,发送消息 “-stop” 则会关闭 QQ 机器人,发送信息”你好”,也会回复“你好,我是QQ机器人”。
QQBot 对象收到一条 QQ 消息时,会新建一个 QQMessage 对象,之后将这个 QQMessage 对象以及自身传递给消息响应函数。
消息响应函数中的第一个参数为传递来的 QQBot 对象,也就是 myqqbot ,第二个参数是传递来的 QQMessage 对象,该对象主要有以下四个属性:
l message.contact : QContact对象,消息发送者
l message.memberUin : str 对象,消息发送成员的 uin,仅在该消息为 群/讨论组 消息时有效
l message.memberName : str 对象,消息发送成员的昵称,仅在该消息为 群/讨论组 消息时有效
l message.content : str 对象,消息内容
QQMessage 对象还提供一个 Reply 接口,可以给消息发送者回复消息,如:
message.Reply('你好,我是QQ机器人') # 相当于 bot.SendTo(message.contact, '你好,我是QQ机器人')
message.contact 是一个 QContact 对象,该对象有以下属性:
l contact.ctype : str 对象,联系人类型,可以为 'buddy', 'group', 'discuss' ,代表 好友/群/讨论组
l contact.uin : str 对象,联系人的 uin ,底层发消息要使用本数值,每次登录本数值可能会改变
l contact.qq : str 对象,联系人的 qq
l contact.name : str 对象,联系人的名称
l contact.nick : str 对象,好友的昵称
l contact.mark : str 对象,好友或群的备注名
l contact.members : dict 对象,群或讨论组的成员字典
还提供一个 GetMemberName 接口,可以通过成员的 uin 查询成员的网名:
contact.GetMemberName(memberUin) --> memberName, str object
QQbot对象的接口
QQBot 对象调用其 Login 方法登录成功后,提供 List/Get/SendTo/Send/On 五个接口,一般来说,只需要调用这五个接口就可以了,不必关心 QQBot 的内部细节。
(1) bot.List(ctype) --> [contact0, contact1, ..., ]
对应上面的 list 命令,示例:
>>> bot.List('buddy')
>>> bot.List('group')
>>> bot.List('discuss')
...
返回一个联系人对象(QContact对象)列表。
(2) bot.Get(ctype, *args, **kwargs) --> [contact0, contact1, ..., ]
对应上面的 get 命令,示例:
>>> bot.Get('buddy', 'jack')
>>> bot.Get('group', '1234556')
>>> bot.Get('buddy', 'qq=1235778')
>>> bot.Get('buddy', uin='1234768')
>>> bot.Get('discuss', name='disc-name')
>>> bot.Get('buddy', mark='jack')
第二个参数可以为联系人的 名称/昵称/备注名/qq/uin ,注意,这里返回的是一个 QContact 对象的列表,而不是返回一个 QContact 对象。
(3) bot.SendTo(contact, content) --> '向 xx 发消息成功'
向联系人发送消息。第一个参数为 QContact 对象,一般通过 Get 接口得到,第二个参数为消息内容。
(4) bot.Send(ctype, *args, **kwargs) --> ['向 xx 发消息成功', '向 xx 发消息成功...', ..., ]
对应上面的 send 命令,示例:
>>> bot.Send('buddy', 'jack', 'hello')
>>> bot.Send('group', '1234556', 'hello')
>>> bot.Send('buddy', 'qq=1235778', 'hello')
>>> bot.Send('buddy', uin='1234768', content='hello')
>>> bot.Send('discuss', name='disc-name', content='hello')
Send 接口的第一、二个参数和 Get 接口的一样,第三个参数为消息内容。上面的第一条语句相当于:
result = []
for contact in bot.Get('buddy', 'jack'):
result.append(bot.SendTo(contact, 'hello'))
return result
(5) bot.On(mtype, callback) --> callback
注册消息响应函数。第一个参数 mtype 为需要响应的消息的类型,一般来说,只需要响应 QQ 消息和 qterm 客户端消息, mtype 分别为 'qqmessage' 和 'termmessage' 。第二个参数 callback 为消息响应函数。
当 QQBot 收到这两种消息时,会新建一个 QQMessage 对象或 TermMessage 对象,连同 QQBot 对象本身一起传递给 callback 。这两种消息对象都有 content 属性和 Reply 接口,content 代表消息内容, Reply 接口可以向消息的发送者回复消息,对于 TermMessage 对象,消息发送者就是 qterm 客户端,注意,对于所有 TermMessage ,都必须调用一次 Reply ,否则 qterm 客户端会一直等待此回复消息。
Tag标签:
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!
免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!
1
鲜花
握手
雷人
路过
鸡蛋
刚表态过的朋友 (1 人)
鲜花
匿名
收藏邀请
下一篇:成本14,000元 如何自己动手搭建深度学习服务器?
相关阅读
• 三星电子第四季度净利27亿美元 同比下滑39%• 充电30分钟电量80%?详解高通快速充电3.0技术• 智能家居是未来的必然趋势• 海尔Coton:可以放在口袋里的最小洗衣机• 小米米家众筹新品曝光:夜间炫彩无比• 带尾巴蟑螂机器人:能轻松翻转 适应各种恶劣环境• 看见(不发光)黑洞的四种方法• 太平洋上连WIFI:中国成功发射高通量卫星,凸显通信战略水平• 收购 Supercell 之后,腾讯的游戏版图已经无处不在了• SurfacePhone.com域名已被微软收购• Opera 43推出 大幅提升网页加载速度• 「镁客早报」摩拜又推出了新款自行车;苹果这次是铁了心要自己造车• 最新网红计算机语言Python• 最大恒星与最重恒星,前者能装后者15万个,后者比前者重十倍• 这就是传说中“永远撞不到”的两轮车,被苹果和谷歌同时看上了 |潮科技• 联想痛失个人电脑一哥宝座 碗里的饭也端不牢了?• 这个品牌想革新香水销售的模式,能成功吗?• 全国首款警察机器人亮相郑州高铁站• 无线网络不稳定的原因是什么?• 《速8》无人汽车“洪流”激情背后的安全“黑”幕• 跨境电商24小时之跨境电商日本代购如惊弓之鸟• AGM X3极客版开启预售:无信号也能通话 14999元• 小牛电动车新版发布 价格真信仰!• 民营药房状告食药监,打的却是扳倒阿里健康的算盘?
最新评论
评论
IT业界
数码港
互联网
安全报
币链圈
科技眼
职场族
创业邦
E生活
警示窗
最新
能够删除杀毒软件的新型Linux挖矿木马来袭
FIT 2019不见不散!大会详细议程公布
用户设备易被黑的十大机场
数字货币价格普遍回暖 比特币重返4200美元
红魔MARS游戏手机发布 液冷+风冷+炫彩灯+边
00后没见过 这些老产品依旧堪称神器
因MacBook和iMac屏幕进灰事件 苹果遭遇集体
美司法部指控两名伊朗黑客勒索攻击 造成300
网络黑灰产已近千亿 个人信息泄露是源头
真相令人崩溃 你在网上设的密码大多数形同
00后“白帽黑客”7天挖11企业漏洞!今年17
高达800万次下载量的npm包被黑客篡改代码,
黑客“自学成才”进行DDOS攻击,杭州一集团
工信部:监测处置网络安全威胁约3397万个
最近,互联网一个47年的协议就要停止支持了
5毛1GB太便宜!固态价格持续下降可以入手了
“多才多艺”的安卓木马Rotexy已在3个月里
专家发现一个Spotify的网络钓鱼活动
Uber被曝270万用户信息被黑客盗取 遭监管机
移动支付排名:微信第一、支付宝第二、Appl
专为AR/VR场景打造 高通正在开发全新SoC
苹果macOS曝三个零日漏洞,可导致Mac电脑被
越南黑客组织“海莲花”被指针对东南亚发起
13款恶意安卓APP被曝光,总下载量超过56万
攻击者可通过侧通道攻击暴露Facebook、XBox
聊一款专为图形工作者准备的笔记本电脑
恐怖!一天之内比特币跌破3500美元,官媒发
共享充电宝退潮后:那些海量旧电芯去了哪里
人工智能如何与现代黑客和网络犯罪作斗争
非常琐碎的Spotify钓鱼活动被专家发现
Web应用服务器性能压力测试
任天堂Switch 6.2系统被破解 黑客将于本周
虚拟机加密:超融合世界的加密策略
python编程实现局域网arp抓取室友网上浏览
9款电脑黑科技小软,开启你成就网络管理员
斯诺登:比特币终将消失 加密货币则会永生
警惕eval()的安全漏洞
自学Python入行数据挖掘,听听数据挖掘美女
马斯克考虑移居火星 建立基地不返回地球
新型 Linux 病毒,脚本超 1000 行,功能复
渗透测试——黑客如何通过QQ号获取到你的手
黑客怎么利用手机进行网络渗透测试!
黑客入侵电脑常用的5种手段,如果你电脑里
黑客的“攻”与“受”之防火墙
安卓已过时?华为、荣耀参与测试全新操作系
亏损超1亿!比特币价格大跌,两万多部矿机
乳胶枕被检出含致癌物,还是花6800买的!乳
英语不好?那你就试试TensorFlow官方中文版
Hadoop学习-块、网络拓扑、副本策略、机架
超详细的Linux时间同步配置方法
比特币跌破3500美元至2017年9月以来的最低
北京一培训公司员工为赚提成收集千万个人信
腾讯QQ发布公告:因安全功能升级 不再提供
苹果macOS曝三个零日漏洞,可导致Mac电脑被
Facebook提高发现账户劫持漏洞的赏金金额
Linux内核发现两个尚未修复的DoS漏洞
淘宝双12大促玩法曝光:必须设店铺红包
PS4出现一位黑客 把不尊重他的玩家永久断开
你的ofo押金退了吗?
2019互联网校招薪酬曝光 看你能拿到多少钱
感恩节黑客也搞起了黑五大促 但甩卖的是你
网上谍影:境外间谍情报机关通过互联网窃取
亚马逊用户电子邮箱地址在黑色星期五前夕外
vivo NEX2首次曝光:极致双面屏+22.5W超级
百度网盘六周年庆活动上线:新用户1元买一
国产手机逆势崛起 苹果三星被挤压
QQ v9.0.8.24194 体验版发布
小米蓝牙耳机Air现身FCC:10小时续航
比特币再次暴跌 感恩节当周市值损失四分之
iOS登录,退出流程整理
© 2003-2018 安基网(SAFEBASE.CN) 京公网安备11010802027589号 京ICP备10030376号-6 【手机版】Powered by Discuz 存档 联系信箱: 0daybank
文章评论