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

53
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes)
Loading...

去年 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:

  1. 在 Telegram 里搜索 @botfather 并和他对话
  2. 对 @botfather 说话,输入 /newbot
  3. 给你的机器人 bot 起个名字
  4. 继续给机器人起用户名,和上面的名字可以相同,但必须以 bot 结尾
  5. 获得机器人 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 群组的绑定。

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

已有 53 条评论, 我要留言

  1. 小傅Fox说道:

    「官方提供」处链接无效。

  2. wsy911说道:

    前面都进行完了,到了最后一步使用时,给bot发指令没反应。。。

  3. 1说道:

    现在没有返利了吧

  4. lamtsui说道:

    配置 EFB这一步,admins填的是token,app_id填的是tgid?
    还有xxx怎么填写?去哪申请?

  5. Matthew说道:

    感觉不懂点编程语言都不好意思折腾了

  6. 一只蚊子说道:

    不错,学习了

  7. cc说道:

    我刚想用docker部署就看到了这个教程。。。差点就造轮子了

  8. yekingyan说道:

    搬瓦工64M的可以装吗?

  9. aliensvx说道:

    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 后面是不是少了空格?

  10. yeyl说道:

    不支持qq,不支持收发邮件,不知道如此折腾,意义何在?

  11. yeyl说道:

    不支持qq?不支持收发邮件?不知道如此折腾,意义何在?

  12. Nani说道:

    link 到群聊里。。

  13. l0o0说道:

    测试了一下,发现还是挺有意思的,不过感觉这么复杂还是微信网页版方便哈

  14. 嘎等说道:

    Traceback (most recent call last):
    File “main.py”, line 1, in
    import config
    ModuleNotFoundError: No module named ‘config’
    按照教程来操作的,包括路径都一样,启动报错

  15. 404notfun说道:

    嫌推送太多,费劲删了好多群聊和公众号之后才发现原来可以设置「mute」的哇… 诶诶…

  16. Etran说道:

    希望能够区分公众号

  17. 空空说道:

    期待用whatsapp接收微信。

  18. zhi说道:

    安装 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)
    安装

  19. jion说道:

    扫码登录,最后一步,/link 联系人,没反应~

  20. ray说道:

    做完, 发 /link 没反应啊, 一定要是 VPS吗? 本地虚拟机不行? 难道它还会自动读取/使用本机的合法域名/IP?

  21. JW说道:

    安装安装 Docker CE,复制粘贴第一行命令就回复 -bash: sudo: command not found是什么问题啊?

    • 青小蛙说道:

      如果是 ubuntu 系统,可以尝试去掉 sudo 运行。如果不是….祝好运

  22. he说道:

    如果用centos系统安装也是如此吗 因为搬瓦工用的bbr,换ub系统就很尴尬了

  23. Amos Lee说道:

    登录成功,发送消息提示:User_is_bot

  24. nlimpid说道:

    有个问题询问下,link 了微信群到 tg group 之后,关掉通知,结果有消息过来还是有应用图标的标记……

  25. 说道:

    和bot聊天微信沒反应,微信收到消息,bot沒反应,不知所以然

  26. Finm说道:

    成功 !小编有空可以再摸个链接qq群的教程吗,貌似要用到酷q(* ̄︶ ̄)

  27. lee说道:

    想问google cloud可以搞这个么???

    • 青小蛙说道:

      可以

      • lee说道:

        谢谢青小蛙回复,我这就照着教程去试试。有空你也可以看看一个叫gcm for mojo的android app,也是不需要通过微信客户端接收消息的。

  28. LEE2说道:

    群晖有docker 能直接在群晖上配置吗?

  29. YongMan说道:

    使用EFB有几个月时间了,说下遇到的问题
    1可能是网络问题,经常会出现超时(应该是bot到微信网页版),EFB有没有超时时间配置?
    2语音不兼容,发送语音到微信端就成了语音文件了

有不同想法?说说看