我是javascript的初学者,特别是discord.js在浏览了discord.js指南之后,我仍然无法让收集器工作。
client.on('interactionCreate', interaction => {
if (!interaction.isButton()) return;
const filter = i => i.customId === '1' || i.customId === "2";
const collectchannel = interaction.channel;
const collector = collectchannel.createMessageComponentCollector( filter, { time: 10000 });
collector.on('collect', i => {
if (i.customId === '1') {
client.commands.get('help').execute(interaction, 1, Discord);
} else if (i.customId === '2') {
client.commands.get('help').execute(interaction, 2, Discord);
}
});
collector.on('end', collected => {
console.log(`Collected ${collected.size} interactions.`);
});
});
当我按下按钮时,collect函数不做任何事情。我试着放置一个console.log("test")
,但它不开火。然而,collector.on('end', collected => {
实际上是可以燃烧的。这可能是因为我不是一个好的程序员。如果可以,请帮忙!
在interactionCreate
事件的事件处理程序中有一个MessageComponentCollector
,在这种情况下,这可能不是您想要的。
情况如下:
-
点击按钮
-
你的
eventCreate
处理程序触发,检查它是否被点击并启动MessageComponentCollector -
MessageComponentCollector
等待按钮点击,并且还没有触发,因为一个已经发生了(首先触发interactionCreate
处理程序的那个) -
每当你再次点击按钮,收集器触发,但
interactionCreate
处理程序也这样做,你回到#2
,启动另一个收集器
您可能想要的是在没有收集器的情况下处理按钮单击:
client.on('interactionCreate', interaction => {
if (!interaction.isButton()) return;
if (i.customId === '1') {
client.commands.get('help').execute(interaction, 1, Discord);
} else if (i.customId === '2') {
client.commands.get('help').execute(interaction, 2, Discord);
}
});