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

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

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

    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. 参考链接

    45 条回复    2023-12-15 11:34:43 +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  
       363 天前
    @EXerllon 昨天又被封了一次,暂时不打算用了。现在是警告式封号,多封几次可能就永封了。
    465456
        33
    465456  
       331 天前
    谢了,已食用,禁止了微信,马上多了 2G 可运行内存
    zhishixiang
        34
    zhishixiang  
       282 天前
    用了一段时间,目前非常稳定,只封了一次,没有 3a 大作续航好了不少
    ltkun
        35
    ltkun  
       270 天前
    感谢!用了几天很舒服!暂时没有被封
    ltkun
        36
    ltkun  
       265 天前 via Android
    今天下午突然不能用了 登录可以用 tg 发消息但是不能收微信的消息
    ltkun
        37
    ltkun  
       265 天前 via Android
    前面恢复了 不知道为啥中断 扫码登录了好几次
    mianlaodie
        38
    mianlaodie  
       245 天前
    被封号是因为长期登录网页本在海外还是其他什么原因哇
    猜想假如在家里的 nas 上运行,然后路由器开规则爬墙,会不会就会好很多,这样甚至从 ip 上来看,app 端的微信和网页端的还是同一局域网
    ltkun
        39
    ltkun  
       239 天前 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  
       239 天前
    @ltkun 我的挂在家里的 还正常,甚至挂了两个微信上去
    ltkun
        41
    ltkun  
       237 天前 via Android
    现在就是通过电报可以收消息 但是发不行 退出再登录也是一样
    ltkun
        42
    ltkun  
       237 天前 via Android
    @mianlaodie 换了个小号一切正常 看来大号被风控了
    lev1s
        43
    lev1s  
       223 天前
    wechat 账号没法登陆 uos 的 web ,得用微信
    ltkun
        44
    ltkun  
       223 天前 via Android
    也不是风控 应该是网页版微信每天有个发送接收到最大值 超过了就限制了 已经遇到两次了 换小号一切正常
    joynaruto
        45
    joynaruto  
       105 天前
    使用下来体验非常棒,感谢作者!
    使用下来有两个问题:
    1 、每次重启 docker 服务,都会重复同步最近 1 天左右的消息,没法取消
    2 、没法同步联系人头像
    -------------------------------------------
    其他无敌!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5453 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:40 · PVG 15:40 · LAX 00:40 · JFK 03:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.