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

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

  •  
  •   simonle · 78 天前 · 3045 次点击
    这是一个创建于 78 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    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
       77 天前
    @hoky 在拉下来的代码目录下 执行一下 `touch tgdata.db` 创建一下这个空文件就好了。
    simonle
        14
    simonle  
    OP
       77 天前
    @f5c4ebc2 我琢磨了一下,使用安卓模拟器来登录手机微信,这样就可以不用手机登录微信了,mac 上使用 android studio 已经走通流程了,但是现在在 Centos 服务器上面安装的 android studio 还有点问题,使用不起来。
    hoky
        15
    hoky  
       77 天前
    @simonle 还是这个错误。
    Docker 的映射是这样的。
    /root/telegram-wechat/tgdata.db /opt/ehForwarderBot/plugins/eh_telegram_master/tgdata.db
    hoky
        16
    hoky  
       77 天前
    Docker 删了重新来一遍,可以了。谢谢。
    aQuQ
        17
    aQuQ  
       76 天前
    lz 有没有考虑把 qq 也集成进来,先把 tx 二件套干掉
    simonle
        18
    simonle  
    OP
       74 天前
    @aQuQ 可以用这个 https://github.com/xzsk2/TG-EFB-QQ-Docker ,再部署一个 qq 的就好了,简单粗暴,集成进来的话,不知道可不可行,有现成的了,就没有折腾的必要。
    imldy
        19
    imldy  
       72 天前
    已用,测试起来速度不错
    imldy
        20
    imldy  
       71 天前
    update_info 没反应,已提 issue https://github.com/zhangyile/telegram-wechat/issues/2
    Jusekenny
        21
    Jusekenny  
       49 天前
    已经在用了,还不错,感谢 OP 。现在 qq 和微信都可以通过 tg 转发了,虽然微信暂时还不能卸载,但是 qq 的 APP 已经彻底不用了。
    miaomiaomaomao
        22
    miaomiaomaomao  
       46 天前
    @Jusekenny 老哥,问下用 tg 转发 qq 消息怎么做?
    EXerllon
        23
    EXerllon  
       45 天前
    用了一天,被封号了.....
    LeeP3
        24
    LeeP3  
       41 天前
    效果蛮好的
    LeeP3
        25
    LeeP3  
       41 天前
    @LeeP3 被警告了。。。服了
    babaev
        26
    babaev  
       39 天前
    @EXerllon 不是吧,一天就被封号了
    babaev
        27
    babaev  
       39 天前
    @EXerllon 不是吧,一天就被封号了
    @LeeP3 那看来还有风险
    zhishixiang
        28
    zhishixiang  
       29 天前 via Android
    正打算自己用可爱猫写一个,看来已经有了,白嫖了( bu
    wwxwlw
        29
    wwxwlw  
       26 天前
    感谢 OP 的教程, 有个问题就是 /update_info 命令不管用
    aQuQ
        30
    aQuQ  
       19 天前
    使用了三个月,wx 号被封了一次,解封后继续上(感觉有点作死,哈哈)

    不过 wx 确实是一个很封闭的平台,最好还是采用 win 端+dll 注入的方式,这种被封的概率很低,目前也有轮子可用。
    EXerllon
        31
    EXerllon  
       15 天前 via Android
    @aQuQ 现在还在用吗,有没有再次被封,个人挺需要这个项目的
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   4286 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 07:37 · PVG 15:37 · LAX 00:37 · JFK 03:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.