V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
simonle
V2EX  ›  分享发现

Telegram 收发微信消息 [2023 最新版]

  •  
  •   simonle · 2023-01-12 15:25:33 +08:00 · 11000 次点击
    这是一个创建于 674 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Telegram 收发微信消息 - Docker compose 一键部署 [ 2023 最新版]

    github 地址: https://github.com/zhangyile/telegram-wechat.git

    efb 项目的原理是这样的:
    Telegram bot > EFB > 微信网页版 > 微信

    使用 itchat-uos 替换了 itchat

    0. 环境依赖

    • 一个正常使用的 Telegram 账号
    • 一个正常使用的微信号 (微信号需实名并绑有银行卡,否则无法登录 UOS 网页版微信)
    • docker / docker compose (本文以 docker compose 为例,怎么安装,自己网上找教程)
    • 一台 Linux 服务器 (需与 api.telegram.org 能通信)

    1. Telegram 上创建机器人并获取 Token 和 ID

    原文: https://specialhua.top/20190618/cid=4.html

    1.1 获取 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 - 获取更多功能
    

    1.2 获取 Telegram 账户 ID

    再和另外一个机器人 @get_id_bot 对话(也是搜索得到这个机器人),点击 start 即可获得你的 Telegram ID ,一串数字( Chat ID )。

    至此,Telegram 的配置完成,我们得到两个重要的数字:token 、Telegram ID (待会要用)

    2. 部署服务

    # 拉取仓库代码
    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
    
    

    3. 开始使用

    原文: https://specialhua.top/20190618/cid=4.html

    首先在 Telegram 中创建一个新的群组,比如 哈哈哈呵呵呵 这个名字,然后将你的机器人邀请进来(此处,手机端的 Telegram 无法直接拉机器人进来,你需要随便拉一个真人,再拉机器人进来,再把那个人踢出去;电脑端则可以在创建群组的时候直接拉机器人进来)

    回到你的机器人对话中,如果你要将一个叫“哈哈哈呵呵呵”的微信好友单独作为 TG 中的聊天对话框,你就输入 /link 哈哈哈(不必输全名,机器人会检索含有此关键字的所有好友,然后选择 link ,选择你刚刚创建的 哈哈哈呵呵呵 这个群组,成功后,以后这个叫哈哈哈呵呵呵 的好友发来的信息不会在机器人那显示了,而是在这个群组)

    我把常聊的几个人单独建了 TG 群,使消息分流,其余不常用的,使用机器人窗口接收,公众号及群消息也单独建群。

    4. 我都做了什么改动?

    4.1 修改了 eh_wechat_slave.py 文件

    因为 itchat-uos 源码里移除了 itchat 的 new_instance 方法。此处改为使用 itchat-uos 的 load_sync_itchat 方法。

    ......
     125         #self.itchat = itchat.new_instance()
     126         self.itchat = itchat.load_sync_itchat()
     ......
    

    4.2 基础镜像安装了 ffmpeg-linux64-v3.3.1

    因为 royx/docker-efb 镜像里没有 ffmpeg ,每次启动,都要去下载。

    5. 参考链接

    46 条回复    2024-04-23 17:47:36 +08:00
    dolorain
        1
    dolorain  
       2023-01-12 15:41:32 +08:00
    思考了许久,只想到一个折腾它的理由,linux 上没微信客户端。
    Soutxx
        2
    Soutxx  
       2023-01-12 15:44:00 +08:00
    @dolorain #1 一语惊醒梦中人 /dog
    blufaux
        3
    blufaux  
       2023-01-12 15:46:38 +08:00
    @dolorain 哈哈
    simonle
        4
    simonle  
    OP
       2023-01-12 15:52:46 +08:00
    @dolorain 哈哈,人间清醒,我本意是想抛弃手机登录微信。折腾完了,发现还是要手机登录微信才能用。实用性并不高,留给有需的人吧。
    lengyuqu
        5
    lengyuqu  
       2023-01-12 16:24:27 +08:00
    梯子都挂了,还差挂一个微信后台? web 微信都用了,还在乎是 linux 还是 windows ?而且能访问 tg 的服务器都是海外服务器,这样做得不偿失,没准搞的微信封号
    channg
        6
    channg  
       2023-01-13 09:56:01 +08:00
    买一个 ipad 协议或者手机协议啊,可以抛弃手机登录的,一个月百十来块就行了
    f5c4ebc2
        7
    f5c4ebc2  
       2023-01-13 10:04:48 +08:00
    目前使用了四个多月,我觉得这种方法的实用性在于:

    1. 可以关掉手机微信后台
    2. 可以卸载电脑端微信
    3. 可以配置同时转发 QQ 消息,从而可以卸载手机 /电脑端 QQ (个人有一些必须在 QQ 上收发的消息)
    4. 许多账号已经不能登录微信网页版,但微信的 UOS 网页版不受此限制。这个方法本质上是和 UOS 网页版 API 通信
    5. Telegram Bot API 可以通过 Cloudflare 反代从而在国内访问
    6. 我用现有的海外服务器挂到现在还没有出现封号或风控的情况,相关交流群内也没有发现这类情况
    7. 可以实现一些微信没有的 feature ,比如定时发送、或是把几个群的消息合并到一个群里静音等等
    f5c4ebc2
        8
    f5c4ebc2  
       2023-01-13 10:06:36 +08:00
    而缺点主要在于不能卸载手机微信,因为诸如视频通话等特殊消息只能收到文字提示。但对于一个平时轻度使用微信、但又被微信捆绑的用户来说,绝大部分时间里都不用打开微信了。
    hoky
        9
    hoky  
       2023-01-13 10:23:34 +08:00 via iPhone
    @f5c4ebc2 这个现在有没有封号危险?
    f5c4ebc2
        10
    f5c4ebc2  
       2023-01-13 10:36:42 +08:00
    @hoky #9 我不能保证没有,只能说我自己用海外服务器挂了四个月没出现这种情况
    littlewing
        11
    littlewing  
       2023-01-13 10:52:46 +08:00
    怕被封号
    hoky
        12
    hoky  
       2023-01-13 10:59:20 +08:00
    日志显示有一个错误。

    telegram-wechat-telegram-wechat-1 | Traceback (most recent call last):
    telegram-wechat-telegram-wechat-1 | File "/usr/lib/python3.6/site-packages/peewee.py", line 2516, in connect
    telegram-wechat-telegram-wechat-1 | self._state.set_connection(self._connect())
    telegram-wechat-telegram-wechat-1 | File "/usr/lib/python3.6/site-packages/peewee.py", line 2782, in _connect
    telegram-wechat-telegram-wechat-1 | **self.connect_params)
    telegram-wechat-telegram-wechat-1 | sqlite3.OperationalError: unable to open database file
    simonle
        13
    simonle  
    OP
       2023-01-13 12:00:53 +08:00
    @hoky 在拉下来的代码目录下 执行一下 `touch tgdata.db` 创建一下这个空文件就好了。
    simonle
        14
    simonle  
    OP
       2023-01-13 12:15:19 +08:00
    @f5c4ebc2 我琢磨了一下,使用安卓模拟器来登录手机微信,这样就可以不用手机登录微信了,mac 上使用 android studio 已经走通流程了,但是现在在 Centos 服务器上面安装的 android studio 还有点问题,使用不起来。
    hoky
        15
    hoky  
       2023-01-13 12:27:55 +08:00
    @simonle 还是这个错误。
    Docker 的映射是这样的。
    /root/telegram-wechat/tgdata.db /opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db
    hoky
        16
    hoky  
       2023-01-13 12:51:12 +08:00
    Docker 删了重新来一遍,可以了。谢谢。
    aQuQ
        17
    aQuQ  
       2023-01-14 12:20:46 +08:00
    lz 有没有考虑把 qq 也集成进来,先把 tx 二件套干掉
    simonle
        18
    simonle  
    OP
       2023-01-15 15:39:01 +08:00
    @aQuQ 可以用这个 https://github.com/xzsk2/TG-EFB-QQ-Docker ,再部署一个 qq 的就好了,简单粗暴,集成进来的话,不知道可不可行,有现成的了,就没有折腾的必要。
    imldy
        19
    imldy  
       2023-01-18 02:42:18 +08:00
    已用,测试起来速度不错
    imldy
        20
    imldy  
       2023-01-18 18:49:50 +08:00
    update_info 没反应,已提 issue https://github.com/zhangyile/telegram-wechat/issues/2
    Jusekenny
        21
    Jusekenny  
       2023-02-10 11:49:28 +08:00
    已经在用了,还不错,感谢 OP 。现在 qq 和微信都可以通过 tg 转发了,虽然微信暂时还不能卸载,但是 qq 的 APP 已经彻底不用了。
    miaomiaomaomao
        22
    miaomiaomaomao  
       2023-02-12 23:19:34 +08:00
    @Jusekenny 老哥,问下用 tg 转发 qq 消息怎么做?
    EXerllon
        23
    EXerllon  
       2023-02-13 17:03:22 +08:00
    用了一天,被封号了.....
    LeeP3
        24
    LeeP3  
       2023-02-17 18:09:15 +08:00
    效果蛮好的
    LeeP3
        25
    LeeP3  
       2023-02-17 19:22:57 +08:00
    @LeeP3 被警告了。。。服了
    babaev
        26
    babaev  
       2023-02-19 20:55:20 +08:00
    @EXerllon 不是吧,一天就被封号了
    babaev
        27
    babaev  
       2023-02-19 20:55:42 +08:00
    @EXerllon 不是吧,一天就被封号了
    @LeeP3 那看来还有风险
    zhishixiang
        28
    zhishixiang  
       2023-03-02 14:52:25 +08:00 via Android
    正打算自己用可爱猫写一个,看来已经有了,白嫖了( bu
    wwxwlw
        29
    wwxwlw  
       2023-03-05 10:30:10 +08:00
    感谢 OP 的教程, 有个问题就是 /update_info 命令不管用
    aQuQ
        30
    aQuQ  
       2023-03-11 16:05:44 +08:00
    使用了三个月,wx 号被封了一次,解封后继续上(感觉有点作死,哈哈)

    不过 wx 确实是一个很封闭的平台,最好还是采用 win 端+dll 注入的方式,这种被封的概率很低,目前也有轮子可用。
    EXerllon
        31
    EXerllon  
       2023-03-16 09:56:30 +08:00 via Android
    @aQuQ 现在还在用吗,有没有再次被封,个人挺需要这个项目的
    aQuQ
        32
    aQuQ  
       2023-04-01 15:39:52 +08:00
    @EXerllon 昨天又被封了一次,暂时不打算用了。现在是警告式封号,多封几次可能就永封了。
    465456
        33
    465456  
       2023-05-03 10:28:46 +08:00
    谢了,已食用,禁止了微信,马上多了 2G 可运行内存
    zhishixiang
        34
    zhishixiang  
       2023-06-21 13:33:09 +08:00
    用了一段时间,目前非常稳定,只封了一次,没有 3a 大作续航好了不少
    ltkun
        35
    ltkun  
       2023-07-03 14:23:01 +08:00
    感谢!用了几天很舒服!暂时没有被封
    ltkun
        36
    ltkun  
       2023-07-07 21:47:09 +08:00 via Android
    今天下午突然不能用了 登录可以用 tg 发消息但是不能收微信的消息
    ltkun
        37
    ltkun  
       2023-07-07 22:04:16 +08:00 via Android
    前面恢复了 不知道为啥中断 扫码登录了好几次
    mianlaodie
        38
    mianlaodie  
       2023-07-27 18:15:39 +08:00
    被封号是因为长期登录网页本在海外还是其他什么原因哇
    猜想假如在家里的 nas 上运行,然后路由器开规则爬墙,会不会就会好很多,这样甚至从 ip 上来看,app 端的微信和网页端的还是同一局域网
    ltkun
        39
    ltkun  
       2023-08-03 07:41:01 +08:00 via Android
    @mianlaodie 木有封号 不过昨晚开始不正常 重新登录可以 但是也收不到信息 日志显示错误就没有然后了
    Slave channel WeChat Slave (eh_wechat_slave) initialized. telegram-wechat_1 | 02-08-2023:23:31:56,950 CRITICAL [main.py:87] telegram-wechat_1 | Initializing master ('plugins.eh_telegram_master', 'TelegramChannel')...
    telegram-wechat_1 | 02-08-2023:23:32:00,484 CRITICAL [main.py:90]
    telegram-wechat_1 | Master channel Telegram Master (eh_telegram_master) initialized.
    telegram-wechat_1 | 02-08-2023:23:32:00,484 CRITICAL [main.py:92]
    telegram-wechat_1 | All channels initialized.
    mianlaodie
        40
    mianlaodie  
       2023-08-03 10:06:15 +08:00
    @ltkun 我的挂在家里的 还正常,甚至挂了两个微信上去
    ltkun
        41
    ltkun  
       2023-08-05 07:08:45 +08:00 via Android
    现在就是通过电报可以收消息 但是发不行 退出再登录也是一样
    ltkun
        42
    ltkun  
       2023-08-05 09:26:45 +08:00 via Android
    @mianlaodie 换了个小号一切正常 看来大号被风控了
    lev1s
        43
    lev1s  
       2023-08-18 19:26:24 +08:00
    wechat 账号没法登陆 uos 的 web ,得用微信
    ltkun
        44
    ltkun  
       2023-08-18 21:17:00 +08:00 via Android
    也不是风控 应该是网页版微信每天有个发送接收到最大值 超过了就限制了 已经遇到两次了 换小号一切正常
    joynaruto
        45
    joynaruto  
       337 天前
    使用下来体验非常棒,感谢作者!
    使用下来有两个问题:
    1 、每次重启 docker 服务,都会重复同步最近 1 天左右的消息,没法取消
    2 、没法同步联系人头像
    -------------------------------------------
    其他无敌!
    joynaruto
        46
    joynaruto  
       206 天前
    想问下 没名字的群聊怎么办
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:37 · PVG 16:37 · LAX 00:37 · JFK 03:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.