gpt4 book ai didi

javascript - 在 discord.js 上有效地统计谁在这里

转载 作者:行者123 更新时间:2023-11-30 20:44:47 24 4
gpt4 key购买 nike

我想为我的 discord 机器人发出一个命令,允许人们在一个时间范围内签到并计算这里的人数,而不管在场人数的上限。目前我有这个:

case "report":

const filter = m => m.content.startsWith('here');

message.channel.sendMessage("Report your accountability!");
message.channel.awaitMessages(filter, {
max: 200,
time: 30000,
errors: ['time']
})
.then(collected => {
message.channel.sendMessage(`Accountability is ${collected.size} of ${message.guild.members.size}, present or accounted for.`);
});
break;
}

我不太确定问题是什么,因为代码到达第一个 sendMessage 并且似乎正在通过我的测试 channel 运行。非常感谢您对概念的任何澄清!

最佳答案

您正在处理的问题是,您希望在时间结束后调用 .then。实际上,达到时间限制被视为“错误”——如 .awaitMessages Example 中所示:

...
// Errors: ['time'] treats ending because of the time limit as an error
channel.awaitMessages(filter, { max: 4, time: 60000, errors: ['time'] })
.then(collected => console.log(collected.size))
.catch(collected => console.log(`After a minute, only ${collected.size} out of 4 voted.`));

因此,为了让您的代码按照您的意愿工作,您只需要在 channel.awaitMessages 调用之后使用 .catch 语句,如下所示:

message.channel.awaitMessages(filter, { 
max: 200,
time: 30000,
errors: ['time']
})
.then(collected => {
message.channel.send(`Accountability is ${collected.size} of ${message.guild.members.size}, present or accounted for.`);
})
// .catch is called on error - time up is considered an error (says so in docs)
.catch(collected => {
message.channel.send(`Accountability is ${collected.size} of ${message.guild.members.size}, present or accounted for.`);
});

注意正如@Splinxyy 在评论中提到的,您应该使用.send 而不是已弃用的.sendMessage 函数。

编辑:在您表达的评论中,您可能只想计算在 channel 中发送'here' 的唯一用户数。这样做的一种方法是将用户 ID 存储在一个数组中,并通过过滤器数组检查用户 ID 是否尚未被计算在内:

let uidHolder = [];
const filter = m => {
let id = m.author.id;
if (uidHolder.includes(id) || !m.content.startsWith('here'))
return false;
else {
uidHolder.push(id);
return true;
}
};

如果您不喜欢这种方法,您应该能够处理从 .then/.catch 返回的 collected 变量>。但是使用 filter 函数可能更容易。

关于javascript - 在 discord.js 上有效地统计谁在这里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48838978/

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