Pyrogram调用新私密频道提示Peer_ID无效问题求助
修复Pyrogram对接新私密频道的"invalid peer id"问题
核心原因
新创建的私密频道在Telegram网页版K版URL中显示的是简化后的ID(无-100前缀),但Pyrogram要求使用标准的私密频道ID格式(-100开头),直接使用网页版提取的ID会触发格式错误。
解决方案
1. 主动获取正确的频道ID(推荐)
不要手动从网页版提取ID,通过Pyrogram API直接获取频道对象的合法ID,彻底避免格式问题:
from pyrogram import Client # 替换为你的API信息和目标频道名称 API_ID = 你的API_ID API_HASH = "你的API_HASH" TARGET_CHANNEL = "目标私密频道名称" app = Client("my_user_bot", api_id=API_ID, api_hash=API_HASH) async def get_valid_channel_id(): async with app: # 遍历对话匹配目标频道 async for dialog in app.get_dialogs(): if dialog.chat and dialog.chat.title == TARGET_CHANNEL: valid_id = dialog.chat.id print(f"合法频道ID: {valid_id}") # 测试交互 await app.send_message(valid_id, "测试消息") return app.run(get_valid_channel_id())
2. 手动转换网页版ID格式
如果一定要使用网页版URL中的ID(例如-2200488212),按以下规则转换为标准格式:
- 取网页版ID的绝对值:
2200488212 - 前缀添加
-100,得到合法ID:-1002200488212
直接使用转换后的ID即可正常交互。
3. 排查会话与权限问题
- 删除旧的Pyrogram会话文件(如
my_user_bot.session),重新登录,避免旧会话缓存的无效数据干扰。 - 确认你的账号是目标私密频道的成员,且具备读取/发送消息的权限,权限不足也可能触发
invalid peer id错误。
内容的提问来源于stack exchange,提问作者notajoke
相关产品推荐
相关产品推荐

