You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon开发求助:频道评论回复报MsgIdInvalidError错误

解决Telegram频道帖子评论区回复报错问题

问题原因

你碰到的MsgIdInvalidError是因为频道的评论区实际是绑定的讨论组,而非频道本身,直接用event.chat(频道对象)发送评论会导致消息ID无效。而event.reply会直接在频道内发消息,不符合你的需求且你没有对应权限。

修复方案

方案一:自动关联讨论组消息(推荐)

利用Telethon内置方法直接获取频道帖子对应的讨论组消息,再回复:

@client.on(events.NewMessage(chats=id_tg_chanel))
async def my_event_handler(event):
    if '+' in event.raw_text:
        # 获取频道帖子在讨论组中的对应消息
        discussion_msg = await event.message.get_discussion_message()
        if discussion_msg:
            await discussion_msg.reply("lol")
        
client.run_until_disconnected()

方案二:手动指定讨论组ID

如果方案一无法正常工作,可手动获取讨论组ID后发送:

  1. 先获取频道绑定的讨论组ID:
from telethon.tl.functions.channels import GetFullChannelRequest

async def get_discussion_group(channel_id):
    full_channel = await client(GetFullChannelRequest(channel_id))
    return full_channel.full_chat.id  # 返回讨论组ID

调用该函数传入你的频道ID,得到讨论组ID后存入discussion_group_id变量。

  1. 修改事件处理代码:
@client.on(events.NewMessage(chats=id_tg_chanel))
async def my_event_handler(event):
    if '+' in event.raw_text:
        await client.send_message(
            entity=discussion_group_id,
            message="lol",
            comment_to=event.message.id
        )
        
client.run_until_disconnected()

关键注意事项

  • 不要在事件处理函数内调用client.disconnect(),否则程序处理完第一条消息就会直接退出,无法监听后续帖子。
  • 确保你的账号已加入目标频道的讨论组,且拥有发言权限。

内容的提问来源于stack exchange,提问作者Jay2233

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:45:40