Нет такого понятия как button.guild.. Эта тема относится к интеракциям interaction.guild
Тут вообще интересно сделан код, непонятным образом.
Что находиться в button?
Если ты используешь билдер, то лучше забыть вовсе про эту идею и использовать только библиотеку "discord.js"
Просто сделай так как я.
const { MessageButton, MessageActionRow, MessageEmbed, Collector } = require('discord.js')
var button = new MessageButton({customId: 'addRole', label: '<название кнопки>', style: '<стиль кнопки>'})
interaction.followUp({embeds: [embed], components: [new MessageActionRow({components: [button]})]})
const msg = await interaction.fetchReply() // если это слэш-команда.
const collector = msg.createMessageComponentCollector()
collector.on('collect', async i => {
if(i.customId === 'addRole') {
if(i.member.roles.cache.has('id')) {
const removerole = new MessageEmbed()
.setColor('#2f3136')
.setTitle(`${client.emotes.success} Вы отозвали роль "Подписка на патчи"`)
.setFooter(`${i.member.user.tag}`, i.member.user.displayAvatarURL({ dynamic: true }))
}
i.member.roles.remove('id')
return i.reply({embeds: [removerole], ephemeral: true})
} else {
const giverole = new MessageEmbed()
.setColor('#2f3136')
.setTitle(`${client.emotes.success} Вам выдана роль "Подписка на патчи"`)
.setFooter(`${i.member.user.tag}`, i.member.user.displayAvatarURL({ dynamic: true }))
i.member.roles.add('id')
return i.reply({embeds: [giverole], ephemeral: true})
}
})