twfb / Q-TG

QQ 与 Telegram 群相互转发的 bot

Home Page:https://t.me/Q2TGbot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Q2TG

QQ 群与 Telegram 群相互转发的 bot discord GitHub package.json dependency version (prod)

安装方法

  1. 首先将用于机器人的账号在 oicq 框架上登录一次,通过设备验证

  2. config.example.yaml 复制一份为 config.yaml ,并填入相关设置项 d 需要 MongoDB 数据库来存储消息 ID 之间的对应关系

    (不要忘记 YAML 冒号后的空格((

    以及 QQ 和 TG 的群号都不需要加引号

  3. 安装必要的依赖项 yarn install,以及 FFmpegtgs-to-gif(需要安装到 PATH 中)

  4. 在能同时连接 QQ 和 Telegram 的服务器上启动服务 yarn start

通过 Docker 部署(推荐)

首先需要安装有 dockerdocker-compose,并且能同时连接 QQ 和 TG 的机器

  1. 下载 docker-compose.yaml,填写相关参数。数据库部分无需改动

  2. 运行 docker-compose up -d

支持的消息类型

  • 文字(双向)

  • 图片(双向)

    • GIF

    • 闪照

      (目前会转换为普通图片)

  • 图文混排消息(双向)

  • 大表情(双向)

  • 视频(双向)

  • 语音(双向)

  • 小表情

    (可显示为文字)

  • 链接(双向)

  • JSON/XML 卡片

    (包括部分转化为小程序的链接)

  • 群公告

  • 回复(双平台原生回复)

  • 文件(单向 QQ -> TG,按需获取下载地址)

  • 转发多条消息记录

    (依赖 chatrecord-viewer 服务)

  • TG 编辑消息(撤回再重发)

  • 双向撤回消息

如何撤回消息

在 QQ 中,直接撤回相应的消息,撤回操作会同步到 TG

在 TG 中,由于机器人无法接收到撤回指令,可以选择以下操作之一:

  • 将消息内容编辑为 /rm
  • 回复要撤回的消息,内容为 /rm。如果操作者在 TG 群组中没有「删除消息」权限,则只能撤回自己的消息

为了使撤回功能正常工作,TG 机器人需要具有「删除消息」权限,QQ 机器人需要为管理员或群主

即使 QQ 机器人为管理员,也无法撤回其他管理员在 QQ 中发送的消息

搭建 UserBot 实现监听原生撤回事件

搭配 KunoiSayami/delete-message-notifier,可以将 Telegram 中原生的撤回事件发送给 Q2TG

  1. 更改配置文件 config.yaml

    api:
        enabled: true
        port: 8080
        deleteNotifier: /deleteMessages
  2. 启动 delete-message-notifier,将上游地址设置为 http://localhost:8080/deleteMessages

使用腾讯云 COS 存储头像数据

以前 TG 消息发送者头像会预载到 QQ 消息图片存储中,将 MD5 附在消息里传递给 QQ 群,但是不知道什么原因时间长了会下载不了(显示为灰色,即使重新上传)。所以现在将头像存储在腾讯云 COS 中。

修改配置文件:

cos:
  enabled: true
  secretId: # 建议使用子账户
  secretKey: # 需要 QcloudCOSDataWriteOnly 权限
  bucket: xxxxxx-1234567890 # 用于存放头像的存储桶
  region: ap-xxxxxx # 地域,比如 ap-shanghai
  url: https://xxxxxx-1234567890.cos.ap-xxxxxx.myqcloud.com # 不要带末尾的 /

额外功能

  • 在 TG 中可以使用 /forwardon/forwardoff 命令控制 TG 到 QQ 的单向开关
  • 使用 Icalingua 时可以无缝显示 TG 中的头像和名称

运行演示

gif

About

QQ 与 Telegram 群相互转发的 bot

https://t.me/Q2TGbot

License:GNU Affero General Public License v3.0


Languages

Language:TypeScript 98.8%Language:Dockerfile 1.2%