如何用Telegram Bot退出超级群/频道?LeaveChatAsync报错求助
解决TDLib退出超级群/频道时“Chat not found”的问题
核心原因&解决方案
- 必须使用带-100前缀的完整ID:超级群和频道的ID在TDLib中必须以
-100开头(比如-100123456789),不能省略前缀。同时要确保传入的是long类型数值,避免字符串转换时出现格式错误。 - 先验证ID有效性:调用
LeaveChatAsync前,先通过GetChatAsync确认聊天对象存在,排查是否是ID本身错误:Client = new Td.TdClient(); try { // 先验证聊天ID是否有效 var chat = await Client.GetChatAsync(chatid); // 验证通过再执行退出 await Client.LeaveChatAsync(chatid); } catch (TdException ex) { // 捕获异常定位问题:比如ID错误、未加入该群/频道、权限不足 Console.WriteLine($"错误:{ex.Message}"); } - 权限检查:
- 频道创建者无法直接退出,必须先将频道所有权转让给其他成员,才能执行退出操作;
- 超级群主同理,需要先转让群主身份,否则无法退出;
- 普通成员出现该错误,大概率是ID格式错误或账号未加入目标群/频道。
- 版本适配:你使用的TDLib 1.8.12版本较旧,若上述方法无效,可尝试升级到同分支的最新版或更高版本,旧版本可能存在超级群/频道ID处理的兼容性bug。
内容的提问来源于stack exchange,提问作者ar.gorgin
相关产品推荐
相关产品推荐

