簡體   English   中英

選擇菜單狀態 Discord.js v14

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM