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

如何检测特定用户发送的消息并删除?discord.py代码错误排查

问题排查与修复方案

现有代码的错误点

  • 缩进错误:Python 语法强制要求缩进,on_message 异步函数下的逻辑代码没有正确缩进,会直接触发语法错误无法运行
  • delete() 方法传参错误:discord.Message 对象的 delete() 方法不需要传入 message 本身作为参数,多余参数会触发参数不匹配报错
  • 缺少重发消息的核心逻辑:现有代码只实现了删除目标用户消息的逻辑,没有实现重新发送相同内容的逻辑
  • process_commands 位置错误:当前仅当消息发送者是目标用户时才会执行命令处理,会导致其他用户发送的命令完全无法被响应,应该放到判断逻辑之外

修复后的可运行代码

@client.event
async def on_message(message):
    # 检测目标用户发送的消息
    if message.author.id == 881583268569436200:
        # 先获取消息内容,避免删除后无法读取
        msg_content = message.content
        await message.delete()
        # 在当前频道重新发送相同内容
        await message.channel.send(msg_content)
    # 所有消息都要执行命令处理,避免命令失效
    await client.process_commands(message)

额外注意事项

  • 你需要确保机器人拥有当前频道的删除消息和发送消息权限,否则会触发权限类报错
  • 如果需要同时转发消息中的附件、embed等内容,需要额外读取message.attachments、message.embeds等属性在发送时传入
  • 注意不要让重发的消息触发on_message的二次检测,此处你填写的是个人用户ID,和机器人ID不一致不会出现循环触发问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:09:03