1/6/19: 废弃,WebQQ 协议 1/1/19 被腾讯下线,建议采用酷 Q 等的作为后端。
Linux下不管是Wine、Crossover还是虚拟机跑QQ都太麻烦了,因此写了个东西把TG和QQ连接到了一起。于是可以在TG上愉快的聊QQ了。
为QQBot写了一个插件(不妨叫做「QQBOT_PLUGIN」),为Telegram写了一个Bot(不妨叫做「TGBOT」),通过(现阶段)Unix Socket通信,基本工作原理就是
QQBot <--> QQBOT_PLUGIN <--(Unix Socket)--> TGBOT <--> Telegram
这样子进行通信。把QQ消息转发到TG,把发送给TGBOT的消息转发到QQ。
不同于关联QQ-TG群组的组件,此BOT为个人独享,直接作为TG和QQ的中间层,把一个BOT当作QQ信息的终端,以此来接受和发送信息。
-
不用忍受wine系列qq的高cpu占用,不用忍受开虚拟机的费电。所有的东西都整合在TG里面,方便又开心。
-
不怕别人召回了??
-
TG可以和系统内置的Notification结合,实时提示新的信息,以及内容。
-
由于WebQQ本身协议的问题,因此只能接受发送文字信息(考虑到大部分时间图片,表情包都是卖萌的。。也就无所谓了,不过以后可以考虑利用酷Q实现)
-
对QQBot的源代码理解不是很深入,因此目前是通过插件的形式导入进去,以后希望能把QQBot的代码内置到本项目里面,就不用分别启动了。
-
掉线重连机制目前还没有实现
-
QQ消息全部整合到BOT中,容易看走眼??(有几万个群的dalao估计会被刷爆的)
-
目前没有过滤自己发送的信息,因为weibqq存在发送失败的可能性,因此读取自己的信息并显示出来有利于判断消息是否成功发送。
-
环境:python3
-
QQBot:QQBot: A conversation robot base on Tencent's SmartQQ
-
python-telegram-bot:We have made you a wrapper you can't refuse https://python-telegram-bot.org
配置文件,可以建立config_user.py 修改相应的配置
作为QQBOT的Plugin载入,同时确保qq.py可以import到config.py
建议把qq.py config.py config_user.py 直接ln -s 「软链接」到~/.qqbot-tmp/plugins目录下
telegram bot,直接
python3 tg.py
就可以启动
通过/start开启和机器人的聊天(为了刷新username和chat_id)
基本发送消息命令
/msg group|buddy|discuss username|qq message
对于包含 space 的群名,使用下划线「_」代表空格
因为每次打/msg balabala 实在是太麻烦了,于是利用TG的reply功能,可以快速回复消息
具体做法:
-
右键含有「name: type」的这种消息,选择reply
-
直接输入要回复的信息,之后TGBOT会自动提取出要回复联系人的类型和名字,直接回复。
INFO: 这个功能目前是用 os.system 实现的,有注入的危险 另外需要在 config_user.py 里面添加相应的配置 QQBOT_USER_CONFIG_NAME 设置
启动 qqbot 的命令
/qqbot start|stop|restart
配合自动发送二维码功能,以后就能超方便的重启 qqbot or 获取新的 qqbot 二维码了(因为栗子懒得登录服务器重启了。。)
INFO: /start 命令会自动执行 /qqbot start
-
将QQBot换成酷Q?
-
QQBOT_PLUGIN 与 TelegramBot 通讯支持跨服务器(以后就VPS上24h不停的跑TGBOT,QQBOT看情况按需在本地或VPS上开启
-
/focus 系列命令
将与BOT的直接聊天转化为对focus状态的联系人的聊天。
-
更多的兼容层,实现与IRC等的兼容
-
/block 系列命令,记录屏蔽群消息清单
-
/history 系列命令, 记录历史消息并显示
-
pandolia/qqbot -- 逆向smartqq协议真不是人干的事儿,感谢作者的轮子
-
python-telegram-bot/python-telegram-bot -- 如果用raw http请求写tg bot,我大概会死吧。