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

使用Telethon删除他人创建的公开频道评论失败求助

Telegram频道评论删除失败问题解决

问题回顾

使用Telethon删除公开Telegram频道的帖子评论时,代码在自有频道正常工作,但在他人创建的公开频道中无效。机器人已被授予删除消息的管理员权限,执行代码无报错,但评论未被删除。尝试过调整chat_id格式、传入频道实体、使用DeleteMessagesRequest等方法,均未解决。

排查与解决方法

1. 确认管理员权限细节

Telegram频道的删除权限有细分,必须确保机器人被授予删除其他用户消息的权限,而非仅删除自身发送的消息。请频道所有者检查管理员设置:

  • 进入频道管理页 → 找到机器人账号 → 确认勾选「删除消息」权限,且该权限无额外限制

2. 验证目标评论的ID正确性

确保传入的message_ids是评论本身的ID,而非原帖子的ID。可以通过以下代码获取帖子下的所有评论,核对目标ID:

# 获取原帖子下的所有评论
comments = await client.get_messages(entity, reply_to=原帖子message_id)
for comment in comments:
    print(f"评论ID: {comment.id}, 内容: {comment.text}")

3. 正确获取频道实体

避免ID格式混淆,直接通过频道用户名获取实体:

# 替换为目标频道的用户名(带@前缀)
entity = await client.get_entity('@target_public_channel')
await client.delete_messages(entity, message_ids=[目标评论ID])

使用用户名获取实体可规避正负号、ID类型(普通频道/超级频道)的格式问题。

4. 确保异步逻辑正确执行

如果使用异步模式,必须正确使用await关键字并启动事件循环:

import asyncio
from telethon import TelegramClient

async def delete_target_comment():
    client = TelegramClient('session_name', API_ID, API_HASH)
    await client.start(bot_token='YOUR_BOT_TOKEN')
    
    entity = await client.get_entity('@target_public_channel')
    await client.delete_messages(entity, message_ids=[123456789])  # 替换为实际评论ID
    
    await client.disconnect()

asyncio.run(delete_target_comment())

同步模式下需确保client.start()已完成初始化。

5. 手动验证机器人权限

用机器人账号登录Telegram客户端,手动尝试删除目标评论。如果手动也无法删除,说明权限配置存在问题,需频道所有者重新授予权限。

6. 更新Telethon到最新版本

旧版本可能存在API兼容性问题,执行升级:

pip install --upgrade telethon

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:37:44