如何使用Pyrogram库通过channel_id获取频道名称?
问题分析与修正方案
你的代码存在几个关键问题,导致无法正常运行:
get_chat是异步方法,必须用await关键字调用get_chat返回的是Chat对象,title是对象的属性,不是方法,不能加括号调用- 代码缩进错误:获取频道名称的代码没有放在
my_handler函数的缩进块内 - 若无需监听消息触发,可直接将获取频道名称的逻辑放在客户端启动后的异步上下文里
修正后的代码(直接获取频道名称)
from pyrogram import Client import config app = Client( "asyncBot", api_id=config.api_id, api_hash=config.api_hash ) async def get_channel_name(): # 异步调用get_chat,传入channel_id chat = await app.get_chat(config.CHANNEL_ID) # 直接访问Chat对象的title属性 print(f"频道名称:{chat.title}") # 客户端启动后执行获取逻辑 app.run(get_channel_name())
修正后的代码(在消息处理器中获取)
如果需要在收到消息时获取频道名称,修正缩进和异步调用:
from pyrogram import Client, types import config app = Client( "asyncBot", api_id=config.api_id, api_hash=config.api_hash ) @app.on_message() async def my_handler(client: Client, message: types.Message): # 异步调用get_chat chat = await client.get_chat(config.CHANNEL_ID) print(f"频道名称:{chat.title}") app.run()
关键知识点
- Pyrogram的大部分IO操作都是异步的,必须用
await调用异步方法 get_chat(chat_id)返回types.Chat对象,包含频道/聊天的所有信息,title是其中的字符串属性- 客户端的
run()方法可以直接传入异步函数,或通过with app:上下文管理异步操作
内容的提问来源于stack exchange,提问作者trendbusser
相关产品推荐
相关产品推荐

