去年 12 月底,青小蛙介绍了可扩展的聊天平台,隧道机器人框架 EH Forwarder Bot,实现了通过 Telegram Bot(机器人)收发微信功能,无论文字、语音、图片还是视频、表情,都可以互通。几个月用下来,真有点离不开了。
而 EFB 的搭建有一些门槛(官方教程),主要的问题是 Python 3 的配置问题,青小蛙也碰了不少坑。鉴于最近在折腾 Docker,索性把青小蛙是如何安装 EFB 的过程总结出来,方便大家。
▍背景
首先你要有使用 Telegram 的习惯,不然这一切没得玩 😭 。其次,要有一点 Linux 基础,需要一台 VPS,青小蛙这里以 Vultr(👈 此链接有返利) 2.5刀最低款套餐为例,系统为 Ubuntu 16.04 x64,CPU 1 核,内存 512M。之所以没有使用 Vultr 提供的 Docker 镜像在于那是台 CentOS,好久没用过了…
▍更新系统
由于新机器,SSH 登录后,照惯例先更新:
apt-get update
apt-get upgrade
▍安装 Docker CE
这里有详细的安装过程,非常容易,照着一行一行敲命令即可:
sudo apt-get -y install apt-transport-https ca-certificates curl
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get -y install docker-ce
▍通过 Docker 安装 EFB
我们使用 @royx 提供的 EFB 镜像来安装,也非常容易:
docker pull royx/docker-efb
至此,其实服务器端的配置已经完成了,基于 Docker 的安装就是这么简单 😂
下面来配置一下 Telegram,让可爱的小机器人来愉快的工作。
▍配置 Telegram Bot 机器人
EFB 目前实现的 Telegram 与 微信 互通的原理是这样的:
Telegram bot > EFB > 微信网页版 > 微信
所以我们先来配置 Telegram bot:
- 在 Telegram 里搜索 @botfather 并和他对话
- 对 @botfather 说话,输入 /newbot
- 给你的机器人 bot 起个名字
- 继续给机器人起用户名,和上面的名字可以相同,但必须以 bot 结尾
- 获得机器人 Token,下图红色部分,一会要用到
注意以上机器人信息不要泄漏给别人,上面这个测试机器人青小蛙删掉了。
设置 bot 隐私权限
bot 可能会接收不了非 “/” 开头的消息,所以需要设置一下,让 bot 接收全部内容:
继续与 @botfather 对话,输入 /setprivacy,选择刚刚创建的机器人,点击 Disable
▍获得 Telegram ID
再和另外一个机器人 @get_id_bot 对话,点击 start 即可获得你的 Telegram ID,一串数字(Chat ID)。
至此,Telegram 的配置完成,我们得到两个重要的数字:token、Telegram ID
▍配置 EFB
这里是最简单的一份配置文件,你可以从这里获得 官方提供的配置文件:
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"
}
}
将以上内容保存为 config.py 文件,注意把上面 token以及 admins 冒号后面的部分替换成刚刚获得的 token 和 Chat ID。
即:下面的红色部分:
“token”: “12345678:QWFPGJLUYarstdheioZXCVBKM”,
“admins”: [13456782],
注意 xxx 部分可以自己申请,也可以参考官方提供的内容。
再新建一个 tgdata.db 文件:
touch tgdata.db
至此,EFB 的配置完成,我们得到两个文件: config.py、tgdata.db,在这里我们举例将这两个文件保存在 /root/efb/config.py 和 /root/efb/tgdata.db 这两个位置。
▍通过 Docker 运行 EFB
只需要一句:
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
又要注意了,这里面需要把 $(pwd) 改成刚刚创建的两个文件路径,随便你保存在哪里,上面的例子就是 /root/efb/,所以完整的一个例子:
docker run -d --restart=always --name=ehforwarderbot -v /root/efb/config.py:/opt/ehForwarderBot/config.py -v /root/efb/tgdata.db:/opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db royx/docker-efb
所有安装、配置、运行已完成。
▍登录微信
docker logs ehforwarderbot
在屏幕上,你会看到一个二维码,用微信扫描,登录,大功告成。
▍简单的使用 EFB
你可以完全通过机器人与微信互通,但对于联系人较多的微信用户来说意义不大,所以,我们将微信联系人绑定到一一对应的 Telegram 群组中,就完美解决了一对一聊天的问题。
首先在 Telegram 中创建一个新的群组,比如 青小蛙.WeChat 这个名字,然后将你的机器人邀请进来(此处,手机端的 Telegram 无法直接拉机器人进来,你需要随便拉一个真人,再拉机器人进来,再把那个人踢出去;电脑端则可以在创建群组的时候直接拉机器人进来)
继续和你的机器人聊天,对他说:
/link 青小蛙
EFB 会自动帮你搜索微信联系人,并显示搜索结果,点击你需要的联系人名:
再点击 Link,此时 Telegram 会弹出联系人选单,选择刚刚创建的群组,即完成了微信联系人与 Telegram 群组的绑定。
现在已经可以愉快的和机器人聊天啦,你还可以把群组的头像改成微信联系人的头像,感觉…就跟微信换了一个客户端一样 😊
「官方提供」处链接无效。
好了。
官方提供 依然无效
再用力刷新一下
试了好几遍都不行
前面都进行完了,到了最后一步使用时,给bot发指令没反应。。。
重新做一遍
做了几遍仍然不行,难道是端口未开?
现在没有返利了吧
配置 EFB这一步,admins填的是token,app_id填的是tgid?
还有xxx怎么填写?去哪申请?
阅读两个 注意
并没有粗体
注意把上面粗体部分替换成刚刚获得的 token 和 Chat ID
并没有看到哪里有粗体部分啊……
如果能注释一下每个字段是啥意思最好了……
感觉不懂点编程语言都不好意思折腾了
不错,学习了
我刚想用docker部署就看到了这个教程。。。差点就造轮子了
搬瓦工64M的可以装吗?
应该是不行
docker run -d –restart=always –name=ehforwarderbot -v/root/efb/config.py:/opt/ehForwarderBot/config.py -v /root/efb/tgdata.db:/opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db royx/docker-efb
这里 -v 后面是不是少了空格?
是的修复了
不支持qq,不支持收发邮件,不知道如此折腾,意义何在?
不支持qq?不支持收发邮件?不知道如此折腾,意义何在?
link 到群聊里。。
测试了一下,发现还是挺有意思的,不过感觉这么复杂还是微信网页版方便哈
Traceback (most recent call last):
File “main.py”, line 1, in
import config
ModuleNotFoundError: No module named ‘config’
按照教程来操作的,包括路径都一样,启动报错
配置文件有误,仔细检查
尝试了很多次。
Traceback (most recent call last):
File “main.py”, line 1, in
import config
ModuleNotFoundError: No module named ‘config’
一直都是显示这个。
在这里 https://meta.appinn.com/t/docker-telegram-ehforwarderbot/3288 回复或者新开一个帖子,把你的问题、配置文件贴出来看一卡
这是config.example.py文件没改名成config.py吧
嫌推送太多,费劲删了好多群聊和公众号之后才发现原来可以设置「mute」的哇… 诶诶…
请问如何设置mute……
希望能够区分公众号
期待用whatsapp接收微信。
安装 Docker CE最后一步报错,请问是什么原因?
Reading state information… Done
docker-ce is already the newest version (17.03.1~ce-0~ubuntu-xenial).
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up docker-ce (17.03.1~ce-0~ubuntu-xenial) …
Job for docker.service failed because the control process exited with error code . See “systemctl status docker.service” and “journalctl -xe” for details.
invoke-rc.d: initscript docker, action “start” failed.
● docker.service – Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: e nabled)
Active: failed (Result: exit-code) since Thu 2017-04-06 14:51:33 EDT; 23ms ag o
Docs: https://docs.docker.com
Process: 17749 ExecStart=/usr/bin/dockerd -H fd:// (code=exited, status=1/FAIL URE)
Main PID: 17749 (code=exited, status=1/FAILURE)
Apr 06 14:51:32 localhost systemd[1]: Starting Docker Application Container…..
Apr 06 14:51:32 localhost dockerd[17749]: time=”2017-04-06T14:51:32.43493611…”
Apr 06 14:51:33 localhost dockerd[17749]: time=”2017-04-06T14:51:33.43946956…”
Apr 06 14:51:33 localhost systemd[1]: docker.service: Main process exited, …RE
Apr 06 14:51:33 localhost systemd[1]: Failed to start Docker Application Co…e.
Apr 06 14:51:33 localhost systemd[1]: docker.service: Unit entered failed state.
Apr 06 14:51:33 localhost systemd[1]: docker.service: Failed with result ‘e…’.
Hint: Some lines were ellipsized, use -l to show in full.
dpkg: error processing package docker-ce (–configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
docker-ce
E: Sub-process /usr/bin/dpkg returned an error code (1)
安装
https://ubuntuforums.org/showthread.php?t=1642173
扫码登录,最后一步,/link 联系人,没反应~
同样的问题
做完, 发 /link 没反应啊, 一定要是 VPS吗? 本地虚拟机不行? 难道它还会自动读取/使用本机的合法域名/IP?
本地可能连不通 telegram…
安装安装 Docker CE,复制粘贴第一行命令就回复 -bash: sudo: command not found是什么问题啊?
如果是 ubuntu 系统,可以尝试去掉 sudo 运行。如果不是….祝好运
如果用centos系统安装也是如此吗 因为搬瓦工用的bbr,换ub系统就很尴尬了
登录成功,发送消息提示:User_is_bot
正常使用,感谢!
有个问题询问下,link 了微信群到 tg group 之后,关掉通知,结果有消息过来还是有应用图标的标记……
和bot聊天微信沒反应,微信收到消息,bot沒反应,不知所以然
成功 !小编有空可以再摸个链接qq群的教程吗,貌似要用到酷q(* ̄︶ ̄)
哈哈,可以试试
想问google cloud可以搞这个么???
可以
谢谢青小蛙回复,我这就照着教程去试试。有空你也可以看看一个叫gcm for mojo的android app,也是不需要通过微信客户端接收消息的。
群晖有docker 能直接在群晖上配置吗?
可以
使用EFB有几个月时间了,说下遇到的问题
1可能是网络问题,经常会出现超时(应该是bot到微信网页版),EFB有没有超时时间配置?
2语音不兼容,发送语音到微信端就成了语音文件了
试用了一下,除了会推送公众号消息显得太吵之外,还是很好用的,telegram的贴纸也可以显示。
https://github.com/blueset/ehForwarderBot/blob/master/config.sample.py
这个链接无效啊,应该是开发者给删了,所以那两个xxx请博主给个建议吧
另外我还不会在vps里上传文件。。。我用的centos,但是好像没法进入 /root/efb/ 这个目录
https://github.com/blueset/ehForwarderBot/blob/v1/config.sample.py
请问登录了之后 bot 一直提示 💬💻 EWS User Auth:
WeChat server has logged you out. Please log in again when you are ready. 然后重新登录之后还是出现这个问题,重启docker实例也没用,有办法解决一下嘛
微信让你登出了。
用了这个可以和电脑客户端(比如win,mac)同时使用吗?
使用这个的前提是不是微信网页版可以正常登录? 我的不能登网页版, 可以用吗?
不能。