Итак, в основном происходит то, что этот код выполняется при выполнении команды.Если строка пользователя (UserID) вписывается в массив, он отвечает как true и устанавливает уровень доступа равным 6. Если это false, он проверяет наличие ролей и устанавливает уровень доступа, если у них есть определенные роли по именам ролей.Однако часть имен ролей не работает.Например, пользователь с ролью модератора (обычно уровень доступа 3 / perms.three) отображается как уровень доступа 0, и я не могу понять, почему.
Способ, которым это должно работать, состоит в том, что онпроверяет идентификатор пользователя.Если этот идентификатор находится в предопределенном массиве, расположенном в файле .json, он переопределяет все другие уровни доступа, предоставляя уровень доступа 6. Если массив не существует, он перемещается к функции ролей и ищет, чтобы увидеть,Роль существует в списке лиц.
Это то, что я использую для проверки ролей / ИД пользователя.
if (command.accessLevel > perms.getAccess(message.member.roles) || command.accessLevel > perms.getAccess(message.member.id)){
return message.channel.send("``Error: Access Denied.``");
}
Это файл permissions.js:
const bot = require('./bot').skynet;
const config = require('./config.json');
const perms = require('./permissions.json').access;
function arrayHas(arr, val){
var result = false;
for (var item in arr){
if (arr[item] == val){
result = true;
break;
}
}
return result;
}
function getAccess(user){
var access = 0;
if (typeof(user) == 'string'){
if (arrayHas(perms.six, user)){
return 6;
}
}
var roles = user;
roles.forEach(function(role){
if (arrayHas(perms.five, role.name)){
access = 5;
return;
}
else if (arrayHas(perms.four, role.name)){
access = 4;
return;
}
else if (arrayHas(perms.three, role.name)){
access = 3;
return;
}
else if (arrayHas(perms.two, role.name)){
access = 2;
return;
}
else if (arrayHas(perms.one, role.name)){
access = 1;
return;
}
});
return access;
}
bot.on('message', message => {
console.log(getAccess(message.member.id));
console.log(getAccess(message.member.roles));
})
module.exports = {
arrayHas: arrayHas,
getAccess: getAccess,
};