Discord.js команды бана / кик доступны всем пользователям.Как я могу это исправить? - PullRequest
0 голосов
/ 26 февраля 2019

Я создаю приватный API Discord, потому что я не доверяю более крупным (Dyno, Hime, NosoBot и т. Д.), И мой бот в значительной степени готов.Единственная проблема заключается в том, что мой код позволяет всем членам использовать эти команды.Я хочу, чтобы у всех был доступ к каждой команде, кроме этих двух.Код работает, но как я могу сделать так, чтобы только люди с разрешением пнуть / запретить?

    if (message.content.startsWith("$kick")) {
        // Easy way to get member object though mentions.
        var member= message.mentions.members.first();
        // Kick
        member.kick().then((member) => {
            // Successmessage
            message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
        }).catch(() => {
             // Failmessage
            message.channel.send("Access Denied");
        });
    }
});
 client.on("message", (message) => {
    if (message.content.startsWith("$ban")) {
        // Easy way to get member object though mentions.
        var member= message.mentions.members.first();
        // ban
        member.ban().then((member) => {
            // Successmessage
            message.channel.send(":wave: " + member.displayName + " has been successfully banned https://gfycat.com/playfulfittingcaribou :point_right: ");
        }).catch(() => {
             // Failmessage
            message.channel.send("Access Denied");
        });
    }
});

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

До:

if (message.member.hasPermission("ADMINISTRATOR") {
  // Your code that kicks/bans.
  // All members with the role that has administrator 
  // permission will be able to kick/ban 
}
0 голосов
/ 26 февраля 2019

Создайте роль на сервере и проверьте роль в вашем коде

Например

if(!message.member.roles.find("name", "Admin"))
   return;

Завершит метод, если у пользователя нет роли

Таким образом, код будет выглядеть примерно так:

 if (message.content.startsWith("$kick")) {

    if (!message.member.roles.find("name", "Admin"))
        return;
    // Easy way to get member object though mentions.
    var member = message.mentions.members.first();
    // Kick
    member.kick().then((member) => {
        // Successmessage
        message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
    }).catch(() => {
        // Failmessage
        message.channel.send("Access Denied");
    });
}
});
client.on("message", (message) => {
    if (message.content.startsWith("$ban")) {

        if (!message.member.roles.find("name", "Admin"))
            return;

        // Easy way to get member object though mentions.
        var member = message.mentions.members.first();
        // ban
        member.ban().then((member) => {
            // Successmessage
            message.channel.send(":wave: " + member.displayName + " has been successfully banned https://gfycat.com/playfulfittingcaribou :point_right: ");
        }).catch(() => {
            // Failmessage
            message.channel.send("Access Denied");
        });
    }
});

Более приятный подход - создание функции, которая возвращает, имеет ли пользователь разрешение, или нет, и использование ее в вашем коде

...