如何获取Telegram Desktop中当前已加入的频道列表?(Ubuntu 20.04 Snap版)
获取Telegram已加入频道列表的方案(优先Telegram Desktop)
一、官方API方案:使用TDLib(最可靠便捷)
TDLib是Telegram官方提供的底层库,支持直接调用Telegram API获取账号数据,比Selenium/JS更高效稳定。
步骤:
申请Telegram API凭证
登录Telegram官方开发者平台,使用你的Telegram账号申请API ID和API Hash。安装TDLib及Python绑定(pytdlib)
在Ubuntu 20.04上先安装依赖:sudo apt-get install build-essential libssl-dev zlib1g-dev libsqlite3-dev再安装pytdlib:
pip install pytdlib编写代码获取频道列表
替换示例中的API凭证和手机号后运行:from tdlib import Client client = Client( api_id=123456, # 替换为你的API ID api_hash='your_api_hash_here', phone_number='+8613xxxxxxxxx' ) @client.on_update async def update_handler(update): if update['@type'] == 'updateUser': # 登录成功后获取所有对话 chats = await client.get_chats(offset_order=0, offset_chat_id=0, limit=100) # 过滤出频道类型的对话 channels = [] for chat_id in chats['chat_ids']: chat = await client.get_chat(chat_id) if chat['type']['@type'] == 'chatTypeChannel': channels.append(chat) # 输出频道信息 for channel in channels: print(f"频道名称: {channel['title']}, ID: {channel['id']}") # 获取完成后退出 await client.stop() client.run()运行后输入Telegram发送的验证码,即可得到所有已加入的频道列表。
二、直接读取Telegram Desktop本地数据(无需API)
Snap版Telegram的本地数据目录为:
~/snap/telegram-desktop/common/.local/share/TelegramDesktop/tdata/
操作说明:
- 必须先关闭Telegram Desktop,避免数据库文件被锁定。
- 使用
telegram-database-viewer工具解析数据库,安装及运行命令:
pip install telegram-database-viewer tdviewer ~/snap/telegram-desktop/common/.local/share/TelegramDesktop/tdata/
在工具界面中筛选"Channels"类型,即可导出频道列表。
三、Selenium/浏览器JS方案(备选)
如果上述方案无法使用,可采用此方式:
- 用Selenium打开Telegram网页版,登录后定位左侧频道列表元素,提取名称和标识。
- 或在浏览器控制台执行JS,遍历页面频道节点提取数据。但这种方式受页面结构变化影响大,稳定性较差。
内容的提问来源于stack exchange,提问作者Masked Man
相关产品推荐
相关产品推荐

