【问题标题】:Coding a discord bot- The clear/purge command suddenly won't work编写一个不和谐的机器人——清除/清除命令突然不起作用
【发布时间】:2019-10-11 05:27:18
【问题描述】:

我在编写我的机器人时稍作休息,我一直在尝试添加模块来制作经济型的东西。我遇到了一些问题,所以我去检查“清除”命令是否仍然有效。我最初编写的代码没有异步函数,但现在我正在使用它,我认为这可能导致了问题? 想知道是否有人知道如何修复它,感谢您查看此问题。

ban/kick 命令也根本不起作用,所以如果有人可以看看那些?

对于代码,我使用了互联网上的一些教程和指南,我认为其中一些可能干扰了已经编写的内容。

if (command === 'clear') {

    const deleteCount = parseInt(args[0], 10);

    if(!deleteCount || deleteCount < 2 || deleteCount > 300)
        return message.reply('Please provide a number between 2 and 300 for the number of messages to delete.')

        const fetched = await message.channel.fetchMessages({deleteCount});
        message.channel.bulkDelete(fetched)
            .catch(error => message.reply(`I couldn't delete the messages because of: ${error}`));
    }

//kick command

if (command === 'kick') {

    const user = message.mentions.users.first();

    if (!message.guild.me.hasPermission(`KICK`)) return message.reply('You have insufficient permissions.')

    if(!member.kickable) return message.reply('I cannot kick this user!');

    if(user){
        const member = message.guild.member(user);

        if(member){
            member.kick('You have been kicked.').then(() =>{
                message.reply(`Successfully kicked ${user.tag}.`);
            }).catch(err =>{
                message.reply('I was unable to kick the specified member.');
                console.log(err);
            });
        } else {
            message.reply("That user is not in this server.")
        }
    } else {
        message.reply('You need to specify a user!')
    }

}

运行命令时,比如~clear 3,经常会说:

“我无法删除邮件,因为:DiscordAPIError:您只能批量删除 14 天以下的邮件。”即使之前的消息只有几分钟/几秒。

其他时候使用~clear 3(通常是在上述消息发送后几分钟),它会删除不止三个。

当使用~kick时,它根本不会响应。

【问题讨论】:

  • 你试过message.channel.fetchMessages({limit: deleteCount}); 吗?

标签: javascript discord.js


【解决方案1】:

这也发生在我身上,机器人试图删除频道中的所有消息(可能是由于 discord.js 更新)。但是,有一个解决方法:

exports.run = (client, message, args) => {
     if (!message.member.roles.find("name", "Staff"))
        return;
  const amount = args[0]
if (!amount) return message.reply('Must specify an amount to delete!');
message.channel.fetchMessages({
 limit: amount,
}).then((messages) => {
 message.channel.bulkDelete(messages).catch(error => console.log(error.stack));
});
message.delete().catch(O_o => { });
}```

You may also want to downgrade your discord.js version.

【讨论】:

  • 非常感谢!很抱歉回复晚了,但这有助于吨。
  • 到目前为止,降级不再是一种选择。由于 Discord 的 API 更改,您会遇到限制和奇怪的问题。
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 2021-10-05
  • 2020-06-26
  • 2017-03-10
  • 2018-11-10
  • 2021-02-25
  • 2023-03-20
  • 2021-04-06
相关资源
最近更新 更多