查询 电报 Telegram 账号已加群组频道 方便新号加入

前言

有群友说, 开了新的电报 Telegram 账号后, 不知道怎么把老号的群加回来

https://t.me/duangvpsfs/3769416

思路

先问问GPT 有没有可能性
telegram bot 或 telethon 可以 查询 某个 telegram 账号已加入的 group 和 channel 吗?
结论是 telethon 可以, 而且给出了一些代码
from telethon import TelegramClient

client = TelegramClient('session_name', api_id, api_hash)

async def get_my_dialogs():
    await client.start()
    
    # 获取所有对话(包括群组、频道、私聊)
    async for dialog in client.iter_dialogs():
        if dialog.is_group:
            print(f"群组: {dialog.name}")
        elif dialog.is_channel:
            print(f"频道: {dialog.name}")

with client:
    client.loop.run_until_complete(get_my_dialogs())
我自己有一定的编程能力, 当然我能看出来, 这样的代码只输出了群组和频道的名称. 更准确地应该还要输出群组和频道的 username
但, 假设我就是一个不会编程的小白, 那么我会先试试这个代码是什么效果.

调试

找了个VPS (用你自己的电脑也是可以的, 只要安装 python 并且解决翻墙的问题)
把代码保存为 .py 文件上传 比如, 文件名 tg-get-group-channel.py
然后在VPS上运行一下, 有报错
把报错复制粘贴给GPT, 回复是
要安装 telethon 模块
要申请 api
要修改代码
from telethon import TelegramClient

# 填入你从 my.telegram.org 获取的信息
api_id = 12345  # 你的 api_id
api_hash = 'your_api_hash_here'  # 你的 api_hash

client = TelegramClient('session_name', api_id, api_hash)

async def get_my_dialogs():
    await client.start()
    
    async for dialog in client.iter_dialogs():
        if dialog.is_group:
            print(f"群组: {dialog.name}")
        elif dialog.is_channel:
            print(f"频道: {dialog.name}")

with client:
    client.loop.run_until_complete(get_my_dialogs())
安装 telethon 时报错
我按照提示先装 python3-pip 就行了, 就可以安装 telethon 了
有新的报错
这里因为我们只是实验性的运行一下, 所以直接加上 --break-system-packages 参数安装.
pip install telethon --break-system-packages
接下来去申请API 
* 申请API对访问IP有一定的要求 你有机率成功或失败 此处略

把 api_id 和 api_hash 放到代码里, 再运行一次代码
跑起来了.
需要输入 电话号码, 输入 telegram 验证码, 输入 密码(如果你设置了的话)
结果是这样的

这样只有群组和频道的名称而不是 username 
所以向GPT提需求
输出 的结果 是这样的
群组: test公开群
频道: 翻墙新手求助现场
群组: Joey Huang Blog
群组: ja-netfilter
群组: 折腾啥
群组: Trojan-Go使用与反馈

我需要增加输出 群组和频道的 username
结果更新代码
from telethon import TelegramClient

api_id = 12345
api_hash = 'your_api_hash_here'

client = TelegramClient('session_name', api_id, api_hash)

async def get_my_dialogs():
    await client.start()
    
    async for dialog in client.iter_dialogs():
        entity = dialog.entity
        username = f"@{entity.username}" if getattr(entity, 'username', None) else "私有"
        
        type_name = "群组" if dialog.is_group else "频道" if dialog.is_channel else "其他"
        
        if dialog.is_group or dialog.is_channel:
            print(f"{type_name}: {dialog.name} | {username}")

with client:
    client.loop.run_until_complete(get_my_dialogs())
运行结果 

行了.

已经是可用的状态了. 
如果觉得从终端界面复制文字还嫌麻烦的话, 再让GPT 加个功能输出到文件.

========
Github

========

后记

本次(2026-1-24) 使用的GPT是

Claude 有分享整个对话过程的功能
https://claude.ai/share/5ab8d166-974f-44bc-af97-3d21be266fc8

评论

The Hot3 in Last 7 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

极简一键脚本 搭Xray梯子 VLESS + Reality + xTLS 偷 x25519 证书