关于我
~一个热爱火影的业余小提琴玩家~
Joynaruto

使用telegram转发微信和QQ

前言

众所周知微信QQ早已在不知不觉间进入了我们的生活,成了我们每个人在工作学习中必须安装的应用。然而其二者对系统的优化之拉跨,耗电之严重,设计之落后却是没有任何的改变,这也是为什么国外的中低阶机也能顺顺畅畅,而国内的安卓却在永无止尽的堆料,但即便如此的堆料也依然无法满足这两款“3A大作”的胃口 :(

有了微信和QQ,卡顿耗电值得拥有

两者的区别

相较这两款3A大作,Telegram可谓是真正的聊天应用王者,来盘盘他们之间的区别吧:

首先是聊天记录与存储空间方面:

相较于动辄吃掉手机几十上百G空间的微信QQ并还依然弹出“您的图片/视频已过期”这种XX行径,Telegram的聊天记录都永久免费存于云端,任何设备都能多端同步,再也不会出现“已过期”这种XX提示。

其次是推送与耗电卡顿方面:

对于大部分机子,微信QQ这两位如果后台杀了那消息推送也就没了。QQ尚且接入了某些推送机制,而咱毒瘤老大哥微信愣是一个不接入,想要保持消息推送就得给后台。大部分厂商的做法是通过锁住微信QQ的后台来保持正常的消息推送,然而基于这二者的离谱优化,这样的做法其实就是通过牺牲电量与流畅度来换取消息推送,这是何等荒唐。相较走fcm消息推送通道的Telegram,即使没有后台依然不影响消息的推送,我觉得这才是即时通讯软件最基础的点。

再一点就是登陆设备的限制:

微信QQ对设备限制非常严重,仅限一台手机一台平板同时登陆,而且聊天记录还不能完全同步;Telegram则是不限设备登陆,任何一台手机一台平板都能无缝流转聊天,聊天记录由于之前说的都是存于云端所以各设备间切换自由,没有任何限制。

最后就是一些其他功能性的提升:

Telegram能实现一些高级功能例如通知栏回复,桌面气泡回复,定时发送消息,大量免费高质量的贴纸表情等等,而这些功能在微信QQ上是不可能实现的。

开始搭建

微信

克隆下这个仓库到本地

Telegram 上创建机器人并获取 Token 和 ID

获取 Bot Token

1、在 Telegram里, 对@botfather说话:/newbot
2、按照要求给Bot取名
3、获取Bot Token安全原因:Token必须保密(这串token要记好,待会要用)
4、允许 Bot读取非指令信息,对@botfather说话:/setprivacy, 选择disable
5、允许将 Bot 添加进群组,对 @botfather说话:/setjoingroups, 选择enable
6、允许 Bot 提供指令列表,对 @botfather 说话:/setcommands, 输入以下内容 (复制以下内容一次性发给botfather

help - 显示命令列表.
link - 将远程会话绑定到 Telegram 群组
chat - 生成会话头
recog - 回复语音消息以进行识别
info - 显示当前 Telegram 聊天的信息.
unlink_all - 将所有远程会话从 Telegram 群组解绑.
update_info - 更新群组名称和头像
extra - 获取更多功能

获取 Telegram 账户 ID

1、再和另外一个机器人@get_id_bot对话(也是搜索得到这个机器人),点击 start 即可获得你的 Telegram ID,一串数字(Chat ID)

至此,Telegram的配置完成,我们得到两个重要的数字:token、Telegram ID(待会要用)

部署服务

# 拉取仓库代码
git clone https://github.com/zhangyile/telegram-wechat.git

# 修改 config.py 文件,填入 Token 和 ID
cd telegram-wechat && vi config.py

# 启动服务
docker compose up -d 

# 查看日志中的微信二维码,扫码登录
docker compose logs -f

开始使用

首先在 Telegram中创建一个新的群组,比如 哈哈哈呵呵呵 这个名字,然后将你的机器人邀请进来(此处,手机端的 Telegram无法直接拉机器人进来,你需要随便拉一个真人,再拉机器人进来,再把那个人踢出去;电脑端则可以在创建群组的时候直接拉机器人进来)

回到你的机器人对话中,如果你要将一个叫“哈哈哈呵呵呵”的微信好友单独作为TG中的聊天对话框,你就输入/link哈哈哈(不必输全名,机器人会检索含有此关键字的所有好友,然后选择link,选择你刚刚创建的 哈哈哈呵呵呵 这个群组,成功后,以后这个叫哈哈哈呵呵呵 的好友发来的信息不会在机器人那显示了,而是在这个群组)

我把常聊的几个人单独建了TG群,使消息分流,其余不常用的,使用机器人窗口接收,公众号及群消息也单独建群。

QQ

部署 Chat-Record-Viewer

Q2TG 会使用这个 Chat-Record-Viewer 实例来保存和展示转发的多条消息记录

1、登录Cloudflare并创建一个 KV 命名空间
2、Fork或者在自己账号下导入 Chatrecord-viewer 仓库。如果用 导入的话,可以设置成私有
3、创建一个新的Cloudflare Pages,选择刚刚 Fork的仓库
4、设置构建命令为yarn build,构建输出目录为dist
5、在环境变量中设置一个名称为API_KEY的变量,值可以随机生成一串密钥,待会儿将作为API Key
6、部署完成后,进入「设置」「函数」,将变量名称DATA_STORE绑定到前面创建的 KV 命名空间

获取 Telegram API ID

1、打开My Telegram Core并登录
2、设置你应用的信息
3、提交后,可以获取api_idapi_hash  //此步骤可能会失败多次,请更换节点并持续尝试直至成功

创建 Telegram 机器人

如果你已经有了Telegram Bot Token并且已经确保关闭Group Privacy,可以跳过此步骤

1、在 Telegram中找到BotFather
2、输入/newbot命令,根据提示创建一个新的机器人账号
3、输入/setprivacy命令,关闭你刚才创建的机器人账号的Group Privacy

编译QQ签名服务器-24年09更新

1、下载新版的新版服务器固件包后解压

2、ssh进入该目录后执行docker build -t qsign .

3、看到success表示编译成功

部署 Q2TG v4(v3亲测失败

需要准备一台安装了Dockerdocker-compose,能同时连接 QQTelegram服务器,并能保持开启的机器
Q2TG v2需要PostgreSQL,如果没有的话,会在docker-compose时创建一个。请确保服务器资源充足

  • 在服务器上,创建一个文件夹用来保Q2TG的数据
mkdir q2tg 
cd q2tg
version: "3.8"
services:
  # 如果有现成的 Postgresql 实例,可以删除这一小节
  postgres:
    image: postgres:14-alpine
    container_name: postgresql_q2tg
    restart: unless-stopped
    environment:
      POSTGRES_DB: db_name
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - ./postgresql:/var/lib/postgresql/data
  sign:
    image: qsign:latest
    #image: xzhouqd/qsign:core-1.1.9    #注释旧版本
    restart: unless-stopped
    environment:
      # 需要与下方的 SIGN_VER 同步
      # 配置请参考 https://hub.docker.com/r/xzhouqd/qsign
      #- BASE_PATH=/srv/qsign/qsign/txlib/8.9.71    #注释旧版本
      - BASE_PATH=/srv/qsign/qsign/txlib/9.0.56     #新版本号
  q2tg:
    #image: ghcr.io/clansty/q2tg:raincandy    #注释旧版本
    image: ghcr.io/clansty/q2tg:sleepyfox    #最新版v4
    container_name: main_q2tg
    restart: unless-stopped
    depends_on:
      - postgres
      - sign   #依赖签名服务器
    ports:
      # 如果要使用 RICH_HEADER 需要将端口发布到公网
      - 8080:8080
    volumes:
      - ./data:/app/data
    environment:
      - TG_API_ID=刚才获取的 api_id
      - TG_API_HASH=刚才获取的 api_hash
      - TG_BOT_TOKEN=刚才创建的 Bot Token
      - TG_INITIAL_DCID=5
      - TG_INITIAL_SERVER=91.108.56.174
      - DATABASE_URL=postgres://user:password@postgres/db_name
      - CRV_API=第一步部署 Char-Record-Viewer 的地址加上 /api,比如说 https://example.pages.dev/api
      - CRV_KEY=第一步设置的 API Key
      - SIGN_API=http://sign:4848/sign?key=114514   #签名服务器原为8080,若签名服务器异常可改为4848
      #- SIGN_VER=8.9.71 # 与上方 sign 容器的配置同步    #注释旧版本
      - SIGN_VER=9.0.56 # 与上方 sign 容器的配置同步     #上面编译的版本
      - TG_CONNECTION=tcp # 连接 Telegram 的方式,也可以改成 websocket    #连不上换协议
      # 如果你需要使用 /flags set RICH_HEADER 来显示头像,或者正确显示合并转发的消息记录,则需将 q2tg 8080 端口发布到公网,可以使用 cloudflare tunnel
      # 请尽量配置这个服务
      - WEB_ENDPOINT= https://公开的域名
      - CRV_VIEWER_APP=https://t.me/tg机器人名字/viewer     #此处没空格!
      # DEPRECATED: 请使用 WEB_ENDPOINT
      #- CRV_API=
      #- CRV_KEY=
      # 要关闭文件上传提示,请取消注释以下变量 https://github.com/clansty/Q2TG/issues/153
      - DISABLE_FILE_UPLOAD_TIP=1
      # 要支持转发时自动识别语音,请设置以下参数
      - BAIDU_APP_ID=
      - BAIDU_API_KEY=
      - BAIDU_SECRET_KEY=
      # 如果需要通过代理联网,那么设置下面两个变量
      #- PROXY_IP=
      #- PROXY_PORT=
  • docker compose up -d

设置 Q2TG v2

查看日志,出现以下输出就打开刚才创建的telegram bot输入/setup

 [DEBUG] Instance - 0 - 正在登录 TG Bot
 [INFO] - [Running gramJS version 2.9.4]
 [DEBUG] TelegramSession - bot:0 - Session 不存在,创建
 [INFO] Instance - 0 - TG Bot 登录完成
 [INFO] Instance - 0 - 当前服务器未配置,请向 Bot 发送 /setup 来设置

关于模式

群组模式

群组模式就是 1.x 版本唯一的模式,是给群主使用的。如果群组想要使自己的 QQ群和 Telegram群联通起来,就使用这个模式。群组模式只可以给群聊配置转发,并且转发消息时会带上用户在当前平台的发送者名称。

个人模式(一般为此模式

个人模式适合 QQ轻度使用者,TG重度使用者。可以把 QQ的好友和群聊搬到 Telegram中。个人模式一定要登录机器人主人自己的 Telegram账号作为 UserBot。可以自动为 QQ中的好友和群组创建对应的 Telegram 群组,并同步头像简介等信息。当有没有创建关联的好友发起私聊的时候会自动创建 Telegram中的对应群组。个人模式在初始化的时候会自动在 Telegram个人账号中创建一个文件夹来存储所有来自 QQ的对应群组。消息在从 TG 转发到 QQ时不会带上发送者昵称,因为默认发送者只有一个人。

最后

从搭建至今一共使用了十几天,期间微信QQ掉线各两次。微信通过关闭容器再重启就好了,QQ通过这个软件重新获取ticket也正常运行了。没了两大毒瘤的6 Pro电量也够用了,内存占用也小了,如获新生。备用机4 XL也能充分利用起来,进一步去中心化,任何设备终端都能完成同样的任务。稳定推送,无缝流转,丝滑界面,省电流畅,这难道不是一个即时通讯软件最为基础的必备条件嘛?

特别感谢tg群中的各位大佬给予小弟的帮助,v4之后可以收到合并转发的消息以及头像的显示,太酷啦 ;-)

 

发表回复

textsms
account_circle
email

Joynaruto

使用telegram转发微信和QQ
前言 众所周知微信和QQ早已在不知不觉间进入了我们的生活,成了我们每个人在工作学习中必须安装的应用。然而其二者对系统的优化之拉跨,耗电之严重,设计之落后却是没有任何的改变,这也…
扫描二维码继续阅读
2023-12-26