Задать вопрос
sinaee
@sinaee

Как исправить ошибку при проверке наличия роли у юзера?

const ComUserID = interaction.user.id;
let rUser = interaction.guild.members.cache.get(ComUserID);
const userRoles = rUser.roles.cache.filter((roles) => roles.id !== rUser.guild.id).map((role) => role.id)
const HaveOrNotAdmRole = rUser.roles.cache.get('1136984503886303253');
console.log(userRoles)
if (userRoles === '',`${HaveOrNotAdmRole.id}`){    //ошибку выдает здесь


Никак не могу понять, как это пофиксить т.к. только начал изучать discord.js
Если у того кто прописывает команду есть нужная роль, то всё работает как нужно, но если её нет, то бот крашит с ошибкой:
TypeError: Cannot read properties of undefined (reading 'id')
Хотел сделать так, чтобы если прописавший команду юзер имел нужную роль, то команда воспроизводилась, а если юзер не имеет нужную роль, то выдавало бы embed с ошибкой. В итоге застрял на том что есть. Пожалуйста помогите.
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
sinaee
@sinaee Автор вопроса
//const userRoles = rUser.roles.cache.filter((roles) => roles.id !== rUser.guild.id).map((role) => role.id) бесполезная строчка
const HaveOrNotAdmRole = interaction.guild.roles.cache.get('1136984503886303253') // чуть изменена
if (rUser.roles.cache.find(role => role.id == HaveOrNotAdmRole){   }

посидел, подумал, поискал и вот полностью рабочий код. Причем работает имеено так как задумывалось. Если у пользователя есть роль, то комманда работает, если ее нет, то выводит ошибку через отдельный embed
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
if (userRoles === '' && HaveOrNotAdmRole,`${HaveOrNotAdmRole.id}`){ }


В общем то вам написали что у undefined нет свойства id
Ответ написан
Syjalo
@Syjalo
Представьте себе бота
Не следует называть участников как user, а пользователей как member. Это все же разные объекты.

Участника из интеракции можно достать через interaction.member. Для проверки роли можно использовать member.roles.cache.has('id')
В итоге код должен выглядеть так
if (interaction.member.roles.cache.has('1136984503886303253')) {}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы