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

Discord机器人clear命令发送清空确认及自动删除消息实现问题

Discord.py 清空消息命令修复方案

现有代码存在的问题

  • 缩进语法错误:await ctx.channel.purge 后续代码缩进层级不匹配,运行会直接抛出语法异常
  • 异步休眠调用错误:asyncio.sleep(15) 是协程对象,不加await不会执行休眠逻辑,会导致确认消息直接被删除
  • 导入语句不规范:import asyncio 写在函数内部,每次调用命令都会重复执行导入操作,建议移到代码文件顶部
  • 文本拼写错误:权限提示语中 Your don't have 为拼写错误,正确写法为 You don't have

修复后完整代码

# 导入统一放在文件顶部
import asyncio
import discord
from discord.ext import commands

# 此处为你的bot初始化代码,示例如下,请根据你的实际配置修改
# intents = discord.Intents.default()
# intents.message_content = True
# client = commands.Bot(command_prefix="你设置的指令前缀", intents=intents)

@client.command(aliases=["del","delete","cl","clearmessages","deletemessages","deletemessage","clearmessage","cm"])
async def clear(ctx, amount=5):
    if ctx.message.author.guild_permissions.manage_messages:
        # 多删除1条是为了清除用户发送的指令消息本身,逻辑无需修改
        await ctx.channel.purge(limit=amount + 1)
        msg = await ctx.send(f"已成功清除 {amount} 条消息!")
        # 异步休眠15秒,不会阻塞机器人其他功能运行
        await asyncio.sleep(15)
        await msg.delete()
    else:
        await ctx.send("你没有管理消息的权限,无法使用该指令!")

注意事项

  • 请确认机器人已经被授予对应频道的「管理消息」权限,否则无法执行消息删除操作
  • 如果你使用的是discord.py 2.0及以上版本,需要确保已经开启消息内容意图(Intents.message_content),否则指令无法被机器人识别触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:05