如何用Python3及pyTelegramBotAPI获取Telegram超级群组全部话题
使用pyTelegramBotAPI获取Telegram群组所有话题的方法
pyTelegramBotAPI的高层方法里没有直接封装“获取所有话题列表”的功能,但可以通过调用Telegram官方Bot API的getForumTopics接口来实现——因为pyTelegramBotAPI本质是对官方API的封装,我们可以用其底层的API请求能力来调用这个接口。
操作步骤
确认Bot权限
你的Bot必须是目标群组的管理员,且拥有manage_topics(管理话题)权限,否则无法调用该接口。编写代码调用接口
以下是完整示例代码:import telebot # 替换成你的Bot Token BOT_TOKEN = "你的BotToken" # 替换成目标群组的ID(注意要带-前缀,比如-123456789) GROUP_ID = -123456789 bot = telebot.TeleBot(BOT_TOKEN) def get_all_forum_topics(chat_id): # 调用Telegram官方API的getForumTopics接口 response = bot.get_api().request( "getForumTopics", {"chat_id": chat_id} ) # 返回所有话题列表 return response.get("topics", []) # 执行并打印结果 topics = get_all_forum_topics(GROUP_ID) for topic in topics: print(f"话题ID: {topic['message_thread_id']}, 话题名称: {topic['name']}, 创建时间: {topic['date']}")解析返回结果
调用getForumTopics返回的topics数组中,每个元素对应一个话题,包含以下关键字段(对应pyTelegramBotAPI的ForumTopic类型):message_thread_id: 话题ID(即你创建话题时拿到的ID)name: 话题名称date: 话题创建的Unix时间戳icon_color: 话题图标的颜色代码icon_custom_emoji_id: 自定义话题图标的emoji ID(如果设置了的话)
ForumTopic类型说明(翻译自官方文档)
telebot.types.ForumTopic
该类型代表论坛中的一个话题。
属性:
message_thread_id: int - 话题的唯一标识符name: str - 话题名称icon_color: int - 话题图标的颜色,可选值为:0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2icon_custom_emoji_id: str - 自定义话题图标的唯一emoji标识符(可选)
内容的提问来源于stack exchange,提问作者ars_best
相关产品推荐
相关产品推荐

