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

使用Discord interactions模块做清理命令遇AttributeError问题求助

问题排查与解决方案

错误原因

这个报错的核心是ctx.channel未获取到有效频道对象,返回了MISSING类型,而该类型不存在purge方法。此外代码还有两处不合理的地方:

  • 消息数量参数使用了字符串类型,没必要手动做整数转换
  • 误用了discord.py的purge方法,interactions库对应的批量删除方法是bulk_delete

修正后的代码

# 导入模块
import interactions
import os

# 初始化机器人
slash = interactions.Client(token=token)

# 定义斜线命令
@slash.command(
    name="delete", 
    description="删除指定数量的最新消息",
    options = [
        interactions.Option(
            name="number_of_messages",
            description="要删除的消息数量",
            type=interactions.OptionType.INTEGER,  # 改为整数类型,避免手动转换
            required=True,
        ),
    ],
    fetch_channel=True  # 开启自动获取完整频道对象,避免返回MISSING
)
async def delete(ctx: interactions.CommandContext, number_of_messages: int):
    # 使用interactions库的批量删除方法
    await ctx.channel.bulk_delete(amount=number_of_messages)
    # 发送仅执行者可见的反馈(可选)
    await ctx.send(f"已删除{number_of_messages}条消息", ephemeral=True)

slash.start()

额外注意事项

  • 必须确保机器人拥有管理消息的权限,否则无法执行批量删除操作
  • ephemeral=True会让反馈消息仅命令发起者可见,避免干扰频道正常内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:15:30