discord .js(v13) -删除不和谐按钮的频道



所以我做了一个不和选择菜单票,当我选择那个类别时,它会创建一个频道并发送一个带有按钮的消息。按下按钮时应该删除频道,但它似乎不起作用。我想我已经找到了错误,但我不知道如何修复它。这可能很容易修复,但我卡住了。

代码:(我认为错误位于结束)

} else if (Discord.MessageButton.customId === 'del') {
const channel = message.guild.channel
channel.delete();

const Discord = require("discord.js");
const { MessageSelectMenu, MessageActionRow } = require("discord.js");
module.exports = {
name: "ticket",
author: "Falcone",
run: async(client, message, args) => {
if (!message.member.permissions.has("ADMINISTRATOR")) return message.reply('You Dont Have the `ADMINISTRATOR` permision');
message.delete();
let embed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setDescription(`Test`)
.setThumbnail(message.guild.iconURL({ dynamic: true }))
.setAuthor(message.guild.name, message.guild.iconURL({ dynamic: true }));

let painel = new MessageActionRow().addComponents( new MessageSelectMenu()
.setCustomId('menu')
.setPlaceholder('Test') // Mensagem estampada
.addOptions([
{
label: 'Support',
description: '',
emoji: '🙋‍♂️',
value: '1',
},
{
label: 'Test',
description: '',
emoji: '⛔',
value: '2',
},
{
label: 'Test',
description: '',
emoji: '🤖',
value: '3',
}
])
);

message.channel.send({ embeds: [embed], components: [painel] }).then(msg => {

const filtro = (interaction) => 
interaction.isSelectMenu()

const coletor = msg.createMessageComponentCollector({
filtro
});

coletor.on('collect', async (collected) => {
let ticket = collected.values[0]
collected.deferUpdate()



if (ticket === "1") {
const embed = new Discord.MessageEmbed()
.setTitle('Ticket')
.setDescription('Hello there, n The staff will be here as soon as possible mean while tell us about your issue!nThank You!')
.setColor('GREEN')
.setTimestamp()
const del = new MessageActionRow()
.addComponents(
new Discord.MessageButton()
.setCustomId('del')
.setLabel('🗑️ Delete Ticket!')
.setStyle('DANGER'),
);
message.guild.channels.create(`${collected.user.id}`, {
type : 'GUILD_TEXT',
permissionOverwrites : [
{
id : message.guild.id,
deny : ['VIEW_CHANNEL']
},
{
id : collected.user.id,
allow : ['VIEW_CHANNEL', 'SEND_MESSAGES', 'ATTACH_FILES']
}
]
}).then(async (msg) => {

msg.send({ embeds: [embed], components: [del] }).then(msg => msg.pin() );

})
} else if (Discord.MessageButton.customId === 'del') {
const channel = message.guild.channel
channel.delete();

}

})

});

}
}

MessageButton.customId不是一个静态属性。这意味着它必须在实例上完成,而不是在类上。你可以这样做:

const msg = await message.channel.send({
content: "Which one?",
components: [
new Discord.MessageActionRow().addComponents([
new Discord.MessageButton().setLabel("Delete").setStyle("DANGER").setCustomId("DEL"), //delete button
new Discord.MessageButton().setLabel("Cancel").setStyle("DANGER").setCustomId("CAN") //cancel button
])
]
})
//Create button collector
const collector = msg.createMessageComponentCollector({
componentType: "BUTTON",
filter: (c) => c.member.id === msg.member.id,
max: 1
})

//Handle button click
collector.on("collect", i => {
if(i.customId === "CAN") return i.reply("Cancelled")
if(i.customId === "DEL") i.channel.delete() //or whatever channel you want to delete
})

警告:我没有测试此代码。你可以告诉我你有什么问题,我会试着修改这个

最新更新