嗨,所以基本上我正在提出建議命令。用戶運行命令后,它將使用“跳轉到建議” url 按鈕回復“已提交建議”,但該按鈕出現錯誤。這是我的代碼
const { MessageActionRow, MessageButton, MessageEmbed, MessageSelectMenu } = require("discord.js");
const db = require("quick.db")
module.exports = {
name: "suggestion",
description: "Create or reply to a suggestion",
userPermissions: "",
options: [{
name: "create",
type: 1,
description: "Create a suggestion",
options: [{
name: "suggestion",
type: 3,
required: true,
description: "The suggesiton you want to give"
}],
}, {
name: 'set-channel',
type: 1,
description: "Select the suggestion channel",
options: [{
name: "channel",
type: 7,
required: true,
description: "The channel where I should send the suggestions"
}]
}],
/**
*
* @param {Client} client
* @param {CommandInteraction} interaction
* @param {String[]} args
*/
run: async (client, interaction, args) => {
await interaction.deferReply();
const option = interaction.options.getSubcommand()
const suggestion = interaction.options.getString("suggestion")
const channel = interaction.options.getChannel("channel")
const id = interaction.options.getString("id")
const status = interaction.options.getString("status")
const response = interaction.options.getString("response")
const guildId = interaction.guild.id
let c = await db.fetch(`suggestion_${guildId}`);
if (option === "create") {
if (!c) { return interaction.editReply("<:pollno:979743680124555286> No suggestion channel were found!")
} else {
const suggestembed = new MessageEmbed()
.setTitle("New Suggestion!")
.setColor("2F3136")
.setDescription(suggestion)
.setFooter(interaction.user.username)
const url = suggestembed.url
const row = new MessageActionRow()
.addComponents(
new MessageButton() .setLabel('Jump to Message')
.setStyle('LINK')
.setURL(url)
)
const doneembed = new MessageEmbed()
.setTitle("Suggestion Submitted!")
.setDescription("Your Suggestion was submitted")
.setColor("2F3136")
interaction.editReply({ embeds: [doneembed], components: [row] })
c.send({ embeds: [suggestembed] })
}
} else if (option === "set-channel") {
if (!interaction.member.permissions.has("MANAGE_GUILD")) return interaction.editReply({ content: "<:pollno:979743680124555286> You don't have enough power to execute this command", ephemeral: true })
if (channel.type !== "GUILD_TEXT") return interaction.editReply({ content: "<:pollno:979743680124555286> Invalid Channel Type!", ephemeral: true })
await db.set(`suggestion_${guildId}`, channel.id);
const last = new MessageEmbed()
.setTitle("Suggestion Setup!")
.setDescription("Suggestion channel have been setup")
.setColor("2F3136")
interaction.editReply({ embeds: [last] })
}
}
}
錯誤
Error: MessageButton must be a String
希望能得到一些幫助,因為這對我來說已經成為讓我的發展停止的問題!謝謝
uj5u.com熱心網友回復:
您當前正在MessageEmbed().url用作訊息 url 的變數,但它回傳未定義。
您必須在獲取他的 URL 之前發布訊息。這是一個例子:
const suggestembed = new MessageEmbed()
.setTitle("New Suggestion!")
.setColor("2F3136")
.setDescription(suggestion)
.setFooter(interaction.user.username)
const msg = await interaction.channel.send({embeds:[suggestembed]})
const url = msg.url
const row = new MessageActionRow()
.addComponents(
new MessageButton()
.setLabel('Jump to Message')
.setStyle('LINK')
.setURL(url)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487477.html
標籤:javascript 按钮 不和谐 不和谐.js
上一篇:Kotlin按鈕監聽器
