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

如何在Discord.py中实现发送命令后自动删除该命令消息?

解决Discord.py自动删除指定命令消息的问题

没问题,这事儿其实挺简单的——你只需要在deletethis的判断分支里调用message.delete()异步方法就行!不过得注意几个细节,不然可能踩坑:

  • 机器人权限:确保你的机器人在服务器里有「管理消息」的权限,不然执行删除操作时会抛出权限不足的错误。
  • 异步调用:Discord.py的大部分API方法都是异步的,所以必须给delete()加上await前缀,不然代码会报错。
  • 新版本Intent要求:如果用的是Discord.py v2.x及以上版本,必须开启「消息内容意图」(Message Content Intent),不然机器人接收不到消息内容,自然也触发不了命令。

修改后的完整代码示例

import discord

# 初始化Intents,启用消息内容权限(针对v2.x版本)
intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print("I’m Now Online")

@client.event
async def on_message(message):
    # 忽略机器人自己发的消息
    if message.author == client.user:
        return
    
    # 检测到"deletethis"命令时删除消息
    if message.content.startswith("deletethis"):
        await message.delete()

额外优化提示

如果你想给用户一个友好反馈(比如告诉用户消息已删除),可以先发送一条回复再删除原消息,比如:

if message.content.startswith("deletethis"):
    # 发送3秒后自动消失的反馈消息
    await message.channel.send("已删除你的命令消息!", delete_after=3)
    # 删除原命令消息
    await message.delete()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:44:22