I've done something like this:
const Embed = new MessageEmbed()
.setDescription('testing shards broadcastEval')
const Buttons = new MessageActionRow()
.addComponents(
new MessageButton()
.setCustomId('buttonid')
.setEmoji('❗')
.setStyle('SECONDARY'),
)
const msg = await bot.shard.broadcastEval(async (c, embed, buttons) => {
const channel = await c.channels.cache.get('id');
if (channel) {
let m = await channel.send({ embeds: [embed.embed[0]], components: embed.buttons })
const collector = m.createMessageComponentCollector({ time: 30000 })
collector.on('collect', async(i) => {
console.log('user interacted')
})
}
}, { context: { embed: [Embed], buttons: [Buttons] } })
But now if i want to send an other embed from the interaction do i really need to define MessageEmbed again ?
const msg = await bot.shard.broadcastEval(async (c, embed, buttons) => {
const { MessageEmbed } = require('discord.js')
const channel = await c.channels.cache.get('id');
if (channel) {
let m = await channel.send({ embeds: [embed.embed[0]], components: embed.buttons })
const collector = m.createMessageComponentCollector({ time: 30000 })
collector.on('collect', async(i) => {
switch(i.id) {
case 'buttonid':
const embed2 = new MessageEmbed()
.setDescription('another embed')
i.reply({ embeds: [embed2] })
break
}
})
}
}, { context: { embed: [Embed], buttons: [Buttons] } })