[英]Select Menu Status Discord.js v14
不改變機器人的狀態,有人會幫助你解決問題可能是什么? 變量“statuses”的值是狀態,但它不會改變狀態。 如果我寫 client.user.setStatus('dnd'); 你可以工作,但在這種情況下它沒有多大意義
狀態.js
const { SlashCommandBuilder, ActionRowBuilder, SelectMenuBuilder } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('status') .setDescription('Set status'), async execute(interaction, client) { const actionRow = new ActionRowBuilder() .addComponents( new SelectMenuBuilder() .setCustomId('set-status') .setPlaceholder('Nothing is selected.') .setMinValues(1) .setMaxValues(1) .addOptions([ { label: `online`, description: `Online status.`, value: `online` }, { label: `idle`, description: `Idle status.`, value: `idle` }, { label: `dnd`, description: `Do Not Disturb status.`, value: `dnd` }, { label: `invisible`, description: `Invisible status.`, value: `invisible` }, ]) ); await interaction.reply({ content: `Status? `, components: [actionRow] }); }, };
交互創建.js
} else if (interaction.isSelectMenu()) { if (interaction.customId == "set-status") { let statuses = ""; await interaction.values.forEach(async value => { statuses += `${value} ` }); client.user.setStatus(statuses); const message = await interaction.deferReply({ fetchReply: true }); const newMessage = `Status: ${statuses}` await interaction.editReply({ content: newMessage }); } } }, };
謝謝!
我不確定你想用這個interaction.values.forEach
循環做什么,但你不需要那個。 此外,當您使用數組 items statuses += `${value} `
創建一個新數組時,您會在狀態名稱中添加一個額外的空格,因此它們會變成類似"dnd "
或"idle "
的東西。
interaction.values
返回一個具有單個值的數組,即所選菜單項的值。 您可以在setStatus()
中使用interaction.values[0]
。
我剛剛檢查過,以下工作按預期工作:
if (interaction.isSelectMenu()) {
if (interaction.customId == 'set-status') {
let status = interaction.values[0];
client.user.setStatus(status);
await interaction.editReply({
content: `Status updated to _"${status}"_`,
components: [],
});
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.