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

Discord.js的!clear清理命令如何正确获取用户输入参数

Discord机器人批量清理功能问题修复方案

错误原因

  • 你代码中调用的${message.mentions.users.first()}是用来读取消息里第一个被@的用户对象,你输入的!clear 5命令没有@任何用户,自然返回undefined
  • 你需要的清理条数已经作为第一个参数存在args数组里,直接读取args[0]就能拿到用户输入的数字

修正后代码

async execute(message, args){
        if(message.member.permissions.has("MANAGE_MESSAGES")){
            if(!args[0]) return message.channel.send('Bruh enter a amount of messages to clear');
            if(isNaN(args[0])) return message.channel.send('Bruh enter a **number**');
            if(args[0] > 100) return message.channel.send('bruh you cant clear more than 100 messages');
            if(args[0] < 1) return message.channel.send('bruh you have to delete atleast one message or imma go sleep');

            const messages = await message.channel.messages.fetch({limit: args[0]});
            await message.channel.bulkDelete(messages);
            const notifyMsg = await message.channel.send(`all ${args[0]} messages have been cleared bruh!`);
            setTimeout(() => notifyMsg.delete(), 10000);
        }
         else {
             message.channel.send('bruh you dont have required permissions to use this command!')
         }
    }

额外优化说明

  • 把原来嵌套的then回调改成了await写法,逻辑更清晰,也避免了异步操作顺序出错的问题
  • bulkDelete本身是异步方法,加上await可以保证消息全部删除完成后再发送清理成功的通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:06:05