在同一频道中发生多起打斗时出错

  • 本文关键字:出错 频道 discord.js
  • 更新时间 :
  • 英文 :


我正试图在discord.js v13中制作一个战斗命令所以这个代码是如何工作的每次选择select_menu时,它运行收集器并在"collect"事件上循环,直到其中一个玩家的健康状况为零。如果频道中只有一场战斗在进行,它会很好地工作,但当有人在同一频道中有战斗命令时使用战斗命令时,它会抛出

抛出新的DiscordAPIError(数据、res.status、请求(;^

DiscordAPIError:交互已被确认。

const collector1 = await interaction.channel.createMessageComponentCollector({ filter, componentType: 'SELECT_MENU', time: 600000 })
collector1.on('collect', async i => {
if (//my condition){
//action 
collector1
}
Thank you any help would be appreciated!


需要查看更多的代码(特别是过滤器声明(,但这似乎是问题所在。确保过滤器只查看启动交互的用户:

const filter = (i) => (i.user.id === interaction.user.id);

此外,请确保收集器运行多次(如果您发布整个interactionCreate函数,这将有所帮助

您不需要为整个通道创建集合,这会导致其他消息也检测到这些交互,因此会出现错误。

如果交互返回回复,则需要获取交互的回复:

/*...*/
const reply = await interaction.fetchReply();
const collector1 = await reply.createMessageComponentCollector({ filter, componentType: 'SELECT_MENU', time: 600000 });
/*...*/

如果它返回一条消息,您需要将其保存在一个变量中:

/*...*/
const msg = await interaction.channel.send(...);
msg.createMessageComponentCollector({ filter, componentType: 'SELECT_MENU', time: 600000 })
/*...*/

这可能会帮助你。。。

(很抱歉,如果我的英语不好,我在这条消息的大部分内容中使用了谷歌翻译(

最新更新