• Как выдать роль по кнопке?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    Javascript-разработчик
    вот здесь и отражается главный минус написания ботов не зная даже основ языка..
    client.on("interactionCreate" , async (Integration) =>{
        if(Integration.isButton() && Integration.customId == "1"){
             guildMember.roles.set(['880828678278352937'])
        }
    
        if(Integration.isButton() && Integration.customId == "2"){
            var role = message.guild.roles.cache.find(role => role.id === "880828678278352937");
            user.roles.add(role)
        }
    })

    разбор вашего кода (почему он не рабочий)

    0. вместоIntegrationлучше было бы использовать название interaction, т.к мы всё-таки работаем с взаимодействием, а не с интеграцией.
    это не влияет на работоспособность кода, но, просто как факт.
    0.1. чтобы не проверять в каждом if-блоке, было ли это взаимодействием с кнопкой, можно сделать следующим образом:
    if (Integration.isButton()) {
      // проверки на .customId (можно использовать switch/case, если их много) //
    }
    1. guildMember.roles.set(['880828678278352937'])
    переменная guildMemberне определена, будет ошибка.
    если хотите обратиться к участнику сервера, который нажал на кнопку, тогда нужно использовать Integration.member, и в итоге будет
    Integration.member.roles.set(["880828678278352937"])

    2.
    var role = message.guild.roles.cache.find(role => role.id === "880828678278352937");

    переменная message не определена, тоже будет ошибка.
    в этом случае нужно использовать interaction.guild.roles
    2.1. для поиска роли по ID, лучше используйте .get().
    .find() используйте в случае, если нужно найти роль по её названию или другим параметрам.
    Ответ написан
    1 комментарий