为什么我的交互收集器不收集?(discord.js)



我是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,在这种情况下,这可能不是您想要的。

情况如下:

  1. 点击按钮

  2. 你的eventCreate处理程序触发,检查它是否被点击并启动MessageComponentCollector

  3. MessageComponentCollector等待按钮点击,并且还没有触发,因为一个已经发生了(首先触发interactionCreate处理程序的那个)

  4. 每当你再次点击按钮,收集器触发,但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);
}
});

相关内容

  • 没有找到相关文章

最新更新