前言
众所周知微信
和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
群,使消息分流,其余不常用的,使用机器人窗口接收,公众号及群消息也单独建群。
部署 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_id
和api_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亲测失败
需要准备一台安装了Docker
和 docker-compose
,能同时连接 QQ
和 Telegram
服务器,并能保持开启的机器
Q2TG v2
需要PostgreSQL
,如果没有的话,会在docker-compose
时创建一个。请确保服务器资源充足
- 在服务器上,创建一个文件夹用来保
Q2TG
的数据
mkdir q2tg
cd q2tg
- 下载
docker-compose.yaml
,或者直接编辑—24年09月更新 - WebAPP的申请教程移步作者贴
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之后可以收到合并转发的消息以及头像的显示,太酷啦
发表回复