在 Discord.js v14 中,可以利用 InteractionCollector
和 MenuComponentInteraction
来取得菜单的交互事件信息。下面是一个示例代码,展示如何获取菜单选择的状态:
const { MessageActionRow, MessageSelectMenu, MessageEmbed, InteractionCollector } = require('discord.js');
const selectMenu = new MessageSelectMenu()
.setCustomId('menu')
.setPlaceholder('请选择一个选项')
.addOptions([
{
label: '选项一',
value: 'option1',
description: '这是选项一的描述',
},
{
label: '选项二',
value: 'option2',
description: '这是选项二的描述',
},
{
label: '选项三',
value: 'option3',
description: '这是选项三的描述',
},
]);
const row = new MessageActionRow().addComponents(selectMenu);
const embed = new MessageEmbed()
.setTitle('菜单演示')
.setDescription('请选择一个选项')
.setColor('#2F3136');
const msg = await message.channel.send({ embeds: [embed], components: [row] });
const collector = new InteractionCollector(message.client, {
componentType: 'SELECT_MENU',
time: 10000,
});
collector.on('collect', async (interaction) => {
// 检查是否为目标菜单的交互事件
if (interaction.customId === 'menu') {
// 取得所选选项的值
const selectedValue = interaction.values[0];
// 根据选项值,进行相应操作
switch (selectedValue) {
case 'option1':
// 处理选项一的操作
break;
case 'option2':
// 处理选项二的操作
break;
case 'option3':
// 处理选项三的操作
break;
default:
// 处理未知选项的操作
break;
}
}
// 回复菜单选择的交