Telegram接管聊天消息

虽有Web微信的简陋功能,虽有electronic的外观封装,但每次登陆实在太麻烦,以及很多功能被限制,表情无法接收等,被鹅厂放弃的Linux用户对微信的体验大概确实不好。

关于Telegram

关于Telegram(电报),直接引用维基上的介绍:

Telegram是一个跨平台的即时通信软件,它的客户端是自由及开放源代码软件,但是它的服务器是专有软件。用户可以相互交换加密与自毁消息,发送照片、影片等所有类型文件。官方提供手机版(Android、iOS、Windows Phone)、桌面版(Windows、macOS、Linux)和网页版等多种平台客户端;同时官方开放应用程序接口,因此拥有许多第三方的客户端可供选择,其中多款内置中文。

这个是俄国的社交服务VK的创始者杜洛夫兄弟的作品,Telegram Messenger LLP是独立的非营利公司,与VK也没啥关系,所有的宗旨只在于保证聊天和隐私安全。但不接受监管的软件通常过的不是太好,追求绝对的隐私安全,以至于其在各个国家遭受了被封锁的命运。其他国家暂且不论,因为不肯交出密钥,连俄罗斯媒体监管机构都请求法庭再全国范围内封锁该软件。抛开这些原因不谈,就技术方面,其良好的功能体验,开源的客户端以及开放的应用程序接口,已经领先于绝大多数同类APP了。
Tencent基本是属于放弃Linux用户的一类,后来新注册的微信号连网页版都无法使用,虽然嫌弃通常是相互的,但微信之类的产品用的人太多,粘性太大,有时候不得不用其交流,等网页版每次都要扫一下也是麻烦,所以直接使用Telegram的机器人来收发微信消息。

环境安装

聚合社交平台这方面,EFB做的不错,而且也有了现成的Docker镜像(由royx提供),使得环境搭建更为简单。
另外,需要一台能访问外网的主机,主要是能访问TG(Telegram)服务器。
然后安装Docker:

1
curl -sSL https://get.daocloud.io/docker | sh

安装好之后,就可以拉取镜像了:

1
docker pull royx/docker-efb

配置TG Bot

主要方式是通过登陆网页版微信,然后将微信消息通过Bot发送及接受。首先需要配置TG Bot:

  1. 搜索并找到@botfather机器人,然后发送指令:/newbot
  2. 给Bot起个名字。
  3. 给机器人起用户名,以bot结尾
  4. 获取机器人的Token
  5. 设置Bot隐私权限: 默认Bot可能无法接收非/开头的消息,所以需要设置隐私权限。向该机器人发送指令/setprivacy,选择刚刚创建的机器人,点Disable即可。
  6. 允许将Bot添加进群组: 给机器人发送指令/setjoingroups,选择enable。
  7. 允许Bot提供指令列表: 给机器人发送指令/setcommand,输入以下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    help - 显示命令列表.
    link - 将远程会话绑定到 Telegram 群组
    chat - 生成会话头
    recog - 回复语音消息以进行识别
    info - 显示当前 Telegram 聊天的信息.
    unlink_all - 将所有远程会话从 Telegram 群组解绑.
    update_info - 更新群组名称和头像
    extra - 获取更多功能

获取TG ID

搜索另外一个机器人@get_id_bot,点击start即可获得TG ID。

配置EFB

新建一个config.py文件保存机器人信息,输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
master_channel = 'plugins.eh_telegram_master', 'TelegramChannel'
slave_channels = [('plugins.eh_wechat_slave', 'WeChatChannel')]
eh_telegram_master = {
"token": "12345678:QWFPGJLUYarstdheioZXCVBKM",
"admins": [13456782],
"bing_speech_api": ["xxx", "xxx"],
"baidu_speech_api": {
"app_id": 0,
"api_key": "xxx",
"secret_key": "xxx"
}
}

在其中输入之前所获得的token,以及将admin后的内容换成TG ID。其余xxx的内容是语音识别API,想要的可以申请,没有的也无所谓。
然后新建一个tgdata.db文件,为空即可。

启动EFB容器

指定配置文件和数据文件的地址,启动容器:

1
2
3
4
docker run -d --restart=always --name=ehforwarderbot \
-v $(pwd)/config.py:/opt/ehForwarderBot/config.py \
-v $(pwd)/tgdata.db:/opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db \
royx/docker-efb

然后通过docker logs查看容器输出内容,应该可以看到一个二维码,用微信扫一扫即可登录。

机器人使用

登陆成功即可正常使用机器人收发微信消息,默认情况下,所有的微信消息以及公众号消息,全都是通过那个机器人发送的,看起来会比较乱。
如果需要单独跟某个人聊天,一种方法是在你创建的机器人中发送/chat 好友名,然后机器人会给一段消息,回复那个消息就可以将消息发送给指定的联系人。但是略显麻烦,聊天不多的人可以这样。
另一种方法是单读创建一个TG群组,然后将名称命名为你要聊天的好友名,将机器人拉进来。然后向你所创建的机器人发送指令/link 好友名,将与该好友的聊天绑定到你所创建的群组中,即可如微信一般发送以及接收消息,且可以发送TG的自定义贴纸表情。

(后加)接管QQ消息

此外,使用EFB工具也可以托管QQ消息,方法挺多,这里依然采用最简单的容器方法。
和接管微信消息一样,需要创建一个机器人获取Token,也可以就用微信机器人,不过为了方便管理,就直接另外创建一个机器人了。
然后直接使用EFB和酷Q的efb-qq-coolq-docker项目中的配置,仓库在这.
然后修改两个配置文件:

1
2
3
4
5
vim ehforward_config/profiles/default/blueset.telegram/config.yaml
token: "你的机器人token"
admins:
- 你的tgid

1
2
3
4
vim docker-compose.yml
- VNC_PASSWD=你的密码
- COOLQ_ACCOUNT=你的qq账号

执行docker-compose up -d,然后打开ip:9801完成登录操作。
但目前直接登录后,login可以成功,却无法获取到friends,借用blue-bird1的解决方法,修改bot容器中的配置:

1
2
3
docker exec -it efb-qq-coolq-docker_bot_1 /bin/ash
vi /usr/local/lib/python3.6/site-packages/efb_qq_slave/Clients/CoolQ/CoolQ.py

将第329行和第512行的调用赋值改为绝对赋值:

1
res = {"good": True, "online": True}

然后重启容器即可。

1
docker restart efb-qq-coolq-docker_bot_1

此时即可正常收发QQ消息。

分享
匿名评论