【问题标题】:Discord.js kick command permissions problemDiscord.js 踢命令权限问题
【发布时间】:2022-01-07 14:58:57
【问题描述】:

所以我问的最后一个问题是,我尝试使用 MrMythical 答案中的示例代码。这次又遇到了一个问题:

if (message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)){
                                   ^
    ReferenceError: Permissions is not defined

代码:

module.exports = new Command({
    name: "kick",
    description: "kick",

    async run(message, args, client) {
    if (message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)) {
        if (message.mentions.members) {
            try {
                message.mentions.kick();
            } catch {
                message.reply("I don't have permission to ban " + message.mentions.members.first());
            }
        } else {
            message.reply("You cannot ban " + message.member.mentions.first());
        }
    }

    }
});

假设我删除了if (message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)),执行命令时返回的消息是I don't have permission to ban <insert_user_id>

我有点卡在这里,如果你能帮助我,非常感谢。

编辑:我忘了导入权限,所以现在只有“没有权限踢”

【问题讨论】:

  • 你可能需要导入Permissions
  • 您的previous question 中已经有一个Permissions 变量。我真的不明白它是如何不再定义的。你是从discord.js 导入的吗?
  • 我完全忘记导入权限,但我仍然无法踢出用户
  • @SakuraKaslana 我刚刚在下面更新了我的答案。

标签: javascript node.js discord.js


【解决方案1】:

您需要从discord.js 导入Permissions。您可以在页面顶部导入它,如下所示:

const { Permissions } = require('discord.js');

另外,message.mentions 返回一个对象,它包括提到的成员、频道和角色。它没有kick() 方法,如果您尝试调用它,它将引发错误。由于您没有在 catch 块中记录错误,因此您将不知道错误是什么;它只会发送回复说“你不能禁止未定义”。

您需要通过检查message.mentions.members 来检查是否有提及的成员。它返回一个集合;您可以使用first() 获取第一个成员。

你可以像这样踢第一个提到的成员:

const { Permissions } = require('discord.js');

module.exports = new Command({
  name: 'kick',
  description: 'kick',
  async run(message, args, client) {
    if (!message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS))
      return message.reply('You have no permission to ban members');

    if (!message.mentions.members)
      return message.reply('You need to mention a member to ban');

    let mentionedMember = message.mentions.members.first();

    try {
      mentionedMember.kick();
    } catch (err) {
      console.log(err);
      message.reply(`Oops, there was an error banning ${mentionedMember}`);
    }
  },
});

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2021-06-01
    • 2021-08-22
    • 2021-11-13
    • 2020-11-18
    • 2020-10-20
    • 2021-08-04
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多