You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何通过Bot导出Telegram账号中聊天对象的Handle

实现方案建议

一、Python + Telethon(推荐方案)

这个方案直接调用Telegram官方API,稳定性高、处理效率快,全程自己掌控账号权限,完全适配你的基础开发能力。

操作步骤:

  1. 获取Telegram API凭证
    登录my.telegram.org,创建一个个人应用,获取对应的api_id和api_hash,这是调用API的核心凭证。

  2. 安装依赖库
    打开终端/命令提示符,执行安装命令:

    pip install telethon
    
  3. 核心代码示例
    以下代码会遍历所有对话,筛选并提取私人聊天、私密群组的对象handle:

    from telethon import TelegramClient
    from telethon.tl.types import PeerUser, PeerChat, PeerChannel
    
    # 替换为你的API信息
    api_id = 你的api_id数字
    api_hash = '你的api_hash字符串'
    session_file = 'my_telegram_session'  # 登录会话文件,自动生成
    
    async def export_handles():
        client = TelegramClient(session_file, api_id, api_hash)
        await client.start()
    
        # 用集合存储handle,自动去重
        collected_handles = set()
    
        # 遍历所有对话
        async for dialog in client.iter_dialogs():
            peer = dialog.peer
            # 处理私人聊天对象
            if isinstance(peer, PeerUser):
                user = await client.get_entity(peer)
                if user.username:
                    collected_handles.add(f'@{user.username}')
            # 处理私密群组(排除公开频道、超级群组)
            elif isinstance(peer, (PeerChat, PeerChannel)):
                chat = await client.get_entity(peer)
                if not chat.broadcast and not chat.megagroup and chat.username:
                    collected_handles.add(f'@{chat.username}')
    
        # 导出到本地文件
        with open('telegram_handles.txt', 'w', encoding='utf-8') as f:
            f.write('\n'.join(collected_handles))
        print(f"共导出{len(collected_handles)}个handle,已保存到telegram_handles.txt")
    
    if __name__ == '__main__':
        import asyncio
        asyncio.run(export_handles())
    

    代码说明:

    • 首次运行会要求输入手机号和验证码,登录后生成会话文件,后续无需重复验证
    • 自动过滤无handle的对象,并用集合去重
    • 仅提取私人聊天和普通私密群组,排除公开频道、超级群组等非目标对象

二、鼠标键盘自动化方案(备选)

如果不想接触API,可以用桌面自动化工具模拟人工操作,缺点是依赖Telegram桌面端的界面布局,稳定性差、效率低,适合临时少量处理。

操作步骤:

  1. 安装依赖库

    pip install pyautogui
    
  2. 核心代码框架

    import pyautogui
    import time
    
    # 提前手动打开Telegram桌面端,确保聊天列表处于可视状态
    time.sleep(3)
    
    collected_handles = set()
    # 初始聊天位置坐标(需自行用pyautogui.displayMousePosition()获取)
    chat_x, chat_y = 200, 300
    # 每次滚动的垂直距离
    scroll_step = 50
    
    # 根据聊天数量调整循环次数
    for _ in range(100):
        # 点击当前聊天项
        pyautogui.click(chat_x, chat_y)
        time.sleep(1)
        # 获取handle所在位置坐标(自行获取)
        handle_x, handle_y = 500, 100
        # 选中并复制handle
        pyautogui.doubleClick(handle_x, handle_y)
        pyautogui.hotkey('ctrl', 'c')
        handle_content = pyautogui.paste()
        if handle_content.startswith('@'):
            collected_handles.add(handle_content)
        # 滚动到下一个聊天
        pyautogui.scroll(-scroll_step)
        chat_y += scroll_step
        time.sleep(0.5)
    
    # 保存结果
    with open('auto_handles.txt', 'w', encoding='utf-8') as f:
        f.write('\n'.join(collected_handles))
    

    注意事项:

    • 需用pyautogui.displayMousePosition()工具获取准确的界面坐标
    • 不同系统、Telegram版本的界面布局不同,需自行调整坐标和操作逻辑
    • 运行期间不要移动鼠标或切换窗口,否则会导致操作错位

通用注意事项

  • API凭证需妥善保管,不要泄露给第三方
  • 使用Telethon方案时,避免短时间内频繁调用API,防止触发Telegram的频率限制
  • 两种方案都建议先小范围测试,确认逻辑无误后再批量处理

内容的提问来源于stack exchange,提问作者Omer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:32:51