EFB 简明安装教程:用 Telegram 收发微信 [基于 Docker]

去年 12 月底,青小蛙介绍了可扩展的聊天平台,隧道机器人框架 EH Forwarder Bot,实现了通过 Telegram Bot(机器人)收发微信功能,无论文字、语音、图片还是视频、表情,都可以互通。几个月用下来,真有点离不开了。

EFB 简明安装教程:用 Telegram 收发微信 [基于 Docker] 1

而 EFB 的搭建有一些门槛(官方教程),主要的问题是 Python 3 的配置问题,青小蛙也碰了不少坑。鉴于最近在折腾 Docker,索性把青小蛙是如何安装 EFB 的过程总结出来,方便大家。

背景

首先你要有使用 Telegram 的习惯,不然这一切没得玩 😭 。其次,要有一点 Linux 基础,需要一台 VPS,青小蛙这里以 Vultr(👈 此链接有返利) 2.5刀最低款套餐为例,系统为 Ubuntu 16.04 x64,CPU 1 核,内存 512M。之所以没有使用 Vultr 提供的 Docker 镜像在于那是台 CentOS,好久没用过了…

更新系统

由于新机器,SSH 登录后,照惯例先更新:

EFB 简明安装教程:用 Telegram 收发微信 [基于 Docker] 2
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:

  1. 在 Telegram 里搜索 @botfather 并和他对话
  2. 对 @botfather 说话,输入 /newbot
  3. 给你的机器人 bot 起个名字
  4. 继续给机器人起用户名,和上面的名字可以相同,但必须以 bot 结尾
  5. 获得机器人 Token,下图红色部分,一会要用到
EFB 简明安装教程:用 Telegram 收发微信 [基于 Docker] 3

注意以上机器人信息不要泄漏给别人,上面这个测试机器人青小蛙删掉了。

设置 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 会自动帮你搜索微信联系人,并显示搜索结果,点击你需要的联系人名:

EFB 简明安装教程:用 Telegram 收发微信 [基于 Docker] 4

再点击 Link,此时 Telegram 会弹出联系人选单,选择刚刚创建的群组,即完成了微信联系人与 Telegram 群组的绑定。

EFB 简明安装教程:用 Telegram 收发微信 [基于 Docker] 5

现在已经可以愉快的和机器人聊天啦,你还可以把群组的头像改成微信联系人的头像,感觉…就跟微信换了一个客户端一样 😊

62 条留言

  1. 小傅Fox 2017/03/19 回复
  2. wsy911 2017/03/19 回复
  3. 1 2017/03/19 回复
  4. lamtsui 2017/03/19 回复
    • 青小蛙 2017/03/19 回复
      • aliensvx 2017/03/20 回复
      • Serrian 2017/03/20 回复
  5. Matthew 2017/03/19 回复
  6. 一只蚊子 2017/03/19 回复
  7. cc 2017/03/19 回复
  8. yekingyan 2017/03/20 回复
  9. aliensvx 2017/03/20 回复
  10. yeyl 2017/03/20 回复
  11. yeyl 2017/03/20 回复
  12. Nani 2017/03/21 回复
  13. l0o0 2017/03/21 回复
  14. 嘎等 2017/03/22 回复
  15. 404notfun 2017/03/24 回复
    • jay 2017/10/21 回复
  16. Etran 2017/03/27 回复
  17. 空空 2017/03/29 回复
  18. zhi 2017/04/07 回复
  19. jion 2017/04/11 回复
  20. ray 2017/04/11 回复
  21. JW 2017/04/18 回复
    • 青小蛙 2017/04/18 回复
  22. he 2017/07/08 回复
  23. Amos Lee 2017/08/07 回复
  24. nlimpid 2017/08/21 回复
  25. 2017/09/22 回复
  26. Finm 2018/01/07 回复
  27. lee 2018/01/16 回复
    • 青小蛙 2018/01/16 回复
      • lee 2018/01/16 回复
  28. LEE2 2018/01/18 回复
  29. YongMan 2018/01/23 回复
  30. LXFY 2018/05/27 回复
  31. jasonbourne 2019/04/09 回复
  32. RekiDunois 2019/12/13 回复
  33. x 2021/04/20 回复
  34. www 2022/04/19 回复

写留言