一个帮助 QQ 与 Telegram 互联的小程序(Mirai 版本)
程序主体使用PHP
编写, 依赖于拓展swoole
, 配合 Mirai-console 的 cqhttp-mirai 插件使用
目前还不是十分完善, 可能存在各种奇怪的问题, 还请各位 dalao 指点一二
- 使用 Swoole 的异步 HTTP Client 请求 Telegram Bot API 服务器
- 将QQ图片缓存为 Telegram File ID , 提高效率
- 拓展性较高, 可轻松支持一个新的 CQ 码或 Telegram 消息格式
- 支持双向发起私聊消息
- 支持 QQ 自带的 Emoji
- 支持 Telegram 端撤回 QQ 消息
- 支持私聊 QQ 黑名单
- 支持 Sticker 无损转发 (可以当 Sticker 转移机器人啦233
- 附带 Web 端消息查看
- 支持位置信息发送与接收
- 机器人在线时手机电脑可同时在线
- 采用世界上最好的语言编写 ((日常拉仇恨
实在编不出来了... /滑稽
- 适用于 PHP 7.2(感谢 @ojhdt 帮助测试)
- 需要 MySQL 数据库
- 需要 HTTPS 支持
关于该项目更为详细的使用说明,可以参考 https://blog.ojhdt.com/20200829/qq2tg/
- 将代码拖到本地:
git clone https://github.com/hans362/QQ2TG.git
- 根据提示及示例填写完整
config\.env
,不要改动config\.env.example
- 安装 Mirai-console 以及 cqhttp-mirai 插件,并对插件添加配置以下参数:
# Debug日志输出选项
debug: false
# 要进行配置的QQ号 (Mirai支持多帐号登录, 故需要对每个帐号进行单独设置)
'1234567890':
# HTTP 相关配置
http:
enable: true
# 可选,HTTP API服务器监听地址, 默认为0.0.0.0
host: 0.0.0.0
# 可选,HTTP API服务器监听端口, 5700
port: 5700
accessToken: ""
postUrl: ""
postMessageFormat: string
secret: ""
ws_reverse:
- enable: true
postMessageFormat: string
# 反向Websocket主机
reverseHost: 127.0.0.1
# 反向Websocket端口
reversePort: 9501
accessToken: ""
reversePath: /
useUniversal: true
reconnectInterval: 3000
- 确保您本地可访问 Telegram Bot API 服务器或在
config\.env
中填写好了proxy -> host/port
(若不需要请留空) - 确保您的PHP已安装了
swoole
扩展 - 进入目录, 输入
composer update
- 在网站环境中设置
public/
为运行目录并确保其中的images
目录可写 - 访问
https://api.telegram.org/bot<bot_token>/setWebHook?url=https://<Your_URL>/webhook.php
设置WebHook, 若认为不安全, 可自行改变文件名(注意:Telegram WebHook 需要 HTTPS 协议,请解析好域名并部署好证书) - 配置进程守护程序:
# /usr/lib/systemd/system/QQ2TG.service
[Unit]
Description=QQ2TG
Documentation=https://github.com/XiaoLin0815/QQ2TG
After=network.target
[Service]
ExecStart=/path/to/your/php /path/to/QQ2TG/run.php
Restart=always
[Install]
WantedBy=multi-user.target
- 终端输入
service QQ2TG start
- enjoy it
-
TG端发送消息:
- 私聊机器人并发送
/new_chat
- 选择要私聊的用户
- 回复机器人发出的消息开始私聊
- 私聊机器人并发送
-
Web 消息查看:
- 在
config\.env
中设置好program -> password
权限密钥 - 打开
http(s)://<Your URL>/admin/message.html
并将权限密钥填写完整 - enjoy it
- 在
-
Nginx:
location ~ (^\.|/\.) { return 403; }
-
Apache:
RewriteEngine On RewriteRule (^\.|/\.) - [F]
-
IIS:
<configuration> <system.webServer> <rewrite> <rules> <rule name="Block access to dotfiles"> <match url="(^\.|/\.)" ignoreCase="false" /> <action type="CustomResponse" statusCode="403" statusReason="Forbidden" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
日志等级建议调至 2 或以上,否则可能会造成严重的消息延误
由于 Telegram 的特殊性,所有由 QQ 转发至 Telegram 的 GIF 图像都会以链接的方式发送,至于客户端能不能自动解析显示就要看运气了 /滑稽
异步消息发送图片信息缓存用户群名片缓存支持私聊消息支持消息撤回- 更新时自动更新配置
解决文档中提到的问题从 Telegram 端发起私聊
更多CQ码兼容
dalao 们如果有任何问题或者建议请在issue中提出或直接提交PR,感谢万分
2021/06/13 修复多行文本无法正常转发的问题(感谢 @coderykw 指出并帮助测试)
2020/08/13 完成对 Mirai 的兼容 By Hans362
2018/08/11 完全重构配置调用方式
2018/08/10 支持位置信息发送与接收
2018/08/09 新增 Web 端消息查看
2018/08/08 新增 rich/sign CQ 码兼容
2018/07/27 新增日志记录
2018/07/26 支持 Sticker 本地处理转发
2018/07/22 支持 Telegram 端先发起私聊
2018/07/20 支持消息撤回
2018/07/18 回复消息提醒对方
2018/07/12 支持双向私聊消息
2018/07/11 更新名片获取机制, 添加伪消息回复支持
2018/07/05 添加图片信息缓存、消息异步发送、群名片缓存, 支持保存消息
2018/07/02 第一版,支持 QQ 与 Telegram 消息双向互通,支持图片、sticker 发送