如何用Python获取Telegram频道(非群组)的新消息?
如何用Python监听Telegram频道新消息
一、Telethon 可行监听代码示例
你之前的代码是拉取历史消息,并非实时监听新消息,同时可能存在参数类型错误、未完成登录流程等问题。下面是监听公开频道新消息的最简可用代码:
from telethon import TelegramClient, events import asyncio # 替换为你自己的api_id和api_hash api_id = 123456 # 注意这里是整数类型,不要用字符串 api_hash = "你的api_hash字符串" client = TelegramClient('channel_listener', api_id, api_hash) # 监听目标频道的新消息 @client.on(events.NewMessage(chats='DEXTNewPairsPolygon')) async def on_new_message(event): sender = await event.get_sender() print(f"发送者用户名: {sender.username if sender else '未知'}") print(f"消息内容: {event.message.text}") print('----------------------------------------') async def main(): await client.start() # 首次运行会提示输入手机号和验证码完成登录 await client.run_until_disconnected() if __name__ == '__main__': asyncio.run(main())
关键注意事项
api_id必须是整数,你之前的代码写成字符串可能引发错误- 首次运行会触发登录流程,完成后生成
channel_listener.session文件,后续运行无需重复验证 - 只要目标频道是公开可访问的,无需管理员权限即可监听新消息
二、有没有比Telethon更合适的库?
Python生态中适合该需求的主流库有两个:
- Pyrogram:和Telethon功能对等,API设计更简洁直观,同样支持无需管理员权限监听公开频道,适合偏好简洁语法的场景
- python-telegram-bot:主打Telegram机器人开发,需要将机器人加入目标频道才能监听,如果你不是频道管理员,大概率无法添加机器人,因此不适合你的需求
综上,Telethon或Pyrogram都是合适的选择,二者都能满足你的核心需求,具体可根据个人API风格偏好选择。
内容的提问来源于stack exchange,提问作者Ievgen
相关产品推荐
相关产品推荐

