coolq-telegram-bot icon indicating copy to clipboard operation
coolq-telegram-bot copied to clipboard

QQ和Telegram的消息互转机器人

[DEPRECATED] 这个仓库将不再维护,请移步jqqqqqqqqqq/coolq-telegram-bot

coolq-telegram-bot

QQ和Telegram的消息互转机器人

QQ部分基于酷Q Socket API,Telegram部分基于Telepot

源码基于yukixz/qqbot.py

功能和特性

  • 支持QQ群和Telegram群的文字消息互转
  • QQ群的图片可以转发Telegram群,Telegram群的图片将会以链接的形式转发到QQ群
  • Telegram群的Sticker会转换成对应的emoji转发给QQ群,QQ群的常用QQ表情会以emoji的形式转发到Telegram群
  • 支持开启Telegram群的Sticker导出模式,开启该模式后,在QQ可以通过链接保存Sticker。
  • QQ群可以通过指令向Telegram群发送Sticker

环境的搭建

Wine 酷Q

Wine 酷Q的安装可以参照【简单教程】在 DigitalOcean 的 Ubuntu Server 下运行 酷Q Air

用Docker理论上也是可以的,可以参考coolq/wine-coolq,需要把酷Q Socket API用到的11235端口设置为外部可访问。

安装完之后,进入远程桌面,启动酷Q,输入QQ号和密码进行登录。Wine 酷Q不是特别稳定。如果在此过程中崩溃,请重新打开直至登陆成功。

安装酷Q Socket API

  1. 酷Q Socket API的发布页下载org.dazzyd.cqsocketapi.cpk文件
  2. 将org.dazzyd.cqsocketapi.cpk文件放置到coolq/app下
  3. 修改coolq/conf/CQP.cfg文件,在[App]项目中加入一行:org.dazzyd.cqsocketapi.status=1
  4. 通过RDP的方式进入远程桌面,重启酷Q。在酷Q的插件管理界面中可以看到Socket API已启用。

开启图片静态资源访问

由于酷Q Air不支持往QQ群发送图片,所以Telegram群的图片将会以链接的形式发送到QQ群。此时需要将图片提供给外部访问。这里以nginx为例。

Ubuntu下安装nginx只需要用apt-get

sudo apt-get install nginx

修改nginx/conf/nginx.conf文件,以下配置即是将/home/coolq/coolq/data/image的内容映射到了www.example.com:8080/image

server {
    listen       8080;
    server_name  www.example.com;

    location /image/ {
        root /home/coolq/coolq/data;
    }
}

安装必须的python3包

pip3 install urllib3 telepot pillow APScheduler requests requests-oauthlib

参数和配置

bot_constant.py

提示:请在bot使用之前,将bot_constant-sample.py重命名为bot_constant.py

tg_token:Telegram机器人的token

qq_bot_id:QQ机器人的QQ号

forward_ids:一个list,可以定义多个转发关系,list中的每一个tuple(QQ群的群号, Telegram群的群ID)都代表一个转发关系。仅支持QQ群和Telegram群一一对应的关系。

server_pic_url:图片访问的url前缀。

special_sticker_list.py

special_sticker_list:定义了指令和Telegram Sticker ID的对应。

在QQ群里输入!指令,即在Telegram群里发送一个对应的Sticker。

qq_emoji_list.py

qq_emoji_list:定义了QQ表情ID和emoji的对应。

这个列表实现了QQ表情和emoji的对应,可以根据需要进行修改。

namelist.json

提示:请在bot使用之前,将namelist-sample.json重命名为namelist.json

定义了QQ号和群昵称的对应。

由于Socket API无法获取成员列表,现阶段采用手动对应的形式。如果列表中没有定义某个QQ号对应的昵称,转发到Telegram群的消息发送者只能显示QQ号。

Bot的运行

保证酷Q已启动并登录,在bot_constant.py内填好了必需的参数,sample文件已经改名,使用python3 mybot.py命令即可启动。

Sticker导出模式

开启:在QQ群或Telegram群中发送 [sticker link on]

关闭:在QQ群或Telegram群中发送 [sticker link off]

开启后,Sticker转发到QQ群的时候,会显示图片链接。

开车模式

开启:在QQ群或Telegram群中发送 [drive mode on]

关闭:在QQ群或Telegram群中发送 [drive mode off]

开启后,Telegram消息不会转发到QQ群内,QQ消息依然能转发到Telegram群组里。