Я пытаюсь создать команду set role и команду set channel. Я пытался это сделать, но это не работает

#javascript #node.js #discord #discord.js #bots

Вопрос:

Итак, происходит то, что я пытаюсь создать команду set role/set channel для журналов и роль отключения звука, чтобы отключать людей, и мне интересно, как это сделать. Я просмотрел документы и другие потоки stackoverflow, и это все еще не работает.

                 if(!args[1]) return message.channel.send('Please specify a arg')
                let roleName = args.slice(2).join(" ");
                var role = message.guild.roles.cache.find(role => role.name === roleName)
                if(!role){
                    message.channel.send("Thats not a role!")
                }
                if(role){
                await GuildConfigSchema.update({ Guild: message.guild.id }, { MuteRole: role })
                message.channel.send(`The mute role is now ${role}`)
}
 

Комментарии:

1. Что в этом не работает? Есть ли ошибка, выполняется ли она только частично или вообще ничего из этого и т. Д.

2. Он не выдает ошибку, он отправляет сообщение о том, что это не роль, когда я пингую его и делаю это нормально, и по какой-то причине добавляет роль в базу данных.

3. Попробуйте консоль. ведение roleName журнала, чтобы убедиться, что это то, чего вы ожидаете, так как вы не показали, как вы определили args в коде, который вы дали.

4. Если вы упоминаете об этом, то не будет ли это <@amp;ROLEID>? Вы сделали это так, что вам, похоже, придется вводить имя роли вручную

5. Что я могу с этим поделать?

Ответ №1:

Во-первых, вы можете использовать if(role){ } else { } что-то подобное, а во-вторых, в комментариях, которые вы сказали, когда я пропингую его для вашего кода, пинг не будет работать, потому что вы используете role.name , если хотите поймать роль с помощью пинга, то используйте let role = message.mentions.roles.first();