gpt4 book ai didi

javascript - 如何正确实现包含awaitMessages 的循环?

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:55 25 4
gpt4 key购买 nike

所以基本上我正在为我的不和谐机器人创建一个快速设置命令。这个想法是,它会引导他们完成一系列提示,使他们能够选择他们想要拥有使用哪些命令的权限的 Angular 色。问题是,如果(出于某种原因,这没有多大意义,因为他们提到了 Angular 色,但在涉及错误时不遗余力)他们选择了一个不存在的 Angular 色,这允许他们在命令的“阶段”重新启动。我认为要做到这一点,我需要一个循环,因为理想情况下,如果他们一直选择的 Angular 色不存在,它允许他们无限重试。

我尝试过一堆不同的 for/while 循环和 while 循环,但都失败了,但它们都耗尽了内存,我相信这表明它不断生成新的 awaitMessages 实例。

这是我目前可以使用的代码(没有“捕获”错误)

message.channel.send('Choose your moderator role.').then(async (modQ) => {
message.channel.awaitMessages(filter, {maxMatches: 1, time: 60000, errors: ['time']}).then(async (modC) => {
await modQ.delete()
await modC.first().delete()
let Found = modC.first().mentions.roles.first()
if (Found) {
let chosen = String(modC.first().mentions.roles.first().id)
setArgs(chosen, 'generalRoles', 'generalRole_id')
} else {
message.channel.send('No')
}
})
})

我知道提示和消息每次都会花费一段时间,在这段时间内循环可能会运行数百万次,但老实说我不知道​​如何在每个“阶段”实现无限重试。

我希望每次发送“选择您的主持人 Angular 色”消息,并在选择 Angular 色(成功或不成功)后将其删除,如果 Angular 色有效,则将其转到 if (Found) 部分,如果 Angular 色无效,则返回并重试。

最佳答案

所以我通过一些工作解决了这个问题,而且似乎其他人也有这个问题,我不会删除,而是回答。

所以这是我正在运行的代码:

message.channel.send(mod).then(async (modQ) => {
message.channel.awaitMessages(filter, {maxMatches: 1, time: 60000, errors: ['time']}).then(async (modC) => {
await modQ.delete()
await modC.first().delete()
let Found = modC.first().mentions.roles.first()
let found = false;
if (Found) {
found = true;
let chosen = String(modC.first().mentions.roles.first().id)
setArgs(chosen, 'generalRoles', 'generalRole_id')
console.log('worked1')
} else {
while (found === false) {
await message.channel.send('Hey').then(async (modQ) => {
await message.channel.awaitMessages(filter, {maxMatches: 1, time: 60000, errors: ['time']}).then(async (modC) => {
await modQ.delete()
await modC.first().delete()
let Found = modC.first().mentions.roles.first()
if (Found) {
let chosen = String(modC.first().mentions.roles.first().id)
setArgs(chosen, 'generalRoles', 'generalRole_id')
console.log('worked2')
found = true
}
})
})
}
}
if (found === true) {
message.channel.send('We here now.')
}
})
})

希望这可以帮助别人!

关于javascript - 如何正确实现包含awaitMessages 的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55840937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com