繁体   English   中英

Discord bot删除命令

[英]Discord bot delete command

我的主要目标是让具有消息管理权限的人键入删除消息的命令,但能够指定要删除的消息数。

我曾尝试弄乱变量,但对变量却知之甚少,通常会出现一些错误。 我尝试用成功的变量替换已删除的消息的值(第2个),但是在用消息更改变量时我一无所知。

 if(message.member.hasPermission('MANAGE_MESSAGES')) {
                        if(message.content.startsWith(`${prefix}delete`)) {
                        message.channel.bulkDelete(2)
                        }
                    }

我想您在消息事件中拥有它。

这是您可以使用的许多方法之一:

if(message.content.startsWith(`${prefix}delete`)) {
      const user = message.mentions.users.first();
      // Parse Amount
      const amount = !!parseInt(message.content.split(' ')[1]) ? parseInt(message.content.split(' ')[1]) : parseInt(message.content.split(' ')[2])
      //Check if it the amount for message to delete where declared
      if (!amount) return message.reply('Must specify an amount to delete!').then(msg => msg.delete(15000));
      // Fetch 100 messages (will be filtered and lowered up to max amount requested)
      message.channel.fetchMessages({
        limit: 100,
      }).then((messages) => {
          //I declare the messages like that with amount + 1 to delete the command itself
          messages = messages.array().slice(0, amount + 1);
          //And finally buldDelete deletes the desired amount
          message.channel.bulkDelete(messages).then(messages => console.log(`Bulk deleted ${args[0]} messages`))
            .catch(console.error);


      });

您将需要分割message.content,这将返回一个在本示例中将其命名为args的数组。 然后, args [1]应该是您要查找的数字。

const prefix = '@' 
const args = message.content.split(' ')

    if(message.member.hasPermission('MANAGE_MESSAGES')) {
                            if(message.content.startsWith(`${prefix}delete`)) {
                            message.channel.bulkDelete(args[1])
                            }
                        }

等等! 您只需要确保args [1]现在是一个数字即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM