【问题标题】:Discord.JS - Message reaction CPS testDiscord.JS - 消息反应 CPS 测试
【发布时间】:2021-05-13 14:58:11
【问题描述】:

我有一个完全荒谬的问题,这可能是不可能的,但是 discord.js 机器人是否有可能发送消息,对其作出反应,然后检测你可以多快点击反应在一定数量的时间?然后它可以发送“你的 cps 是 10”之类的东西?

如果这是可能的,我不知道从哪里开始,我只是觉得这会很酷。请告诉我!

【问题讨论】:

  • 是的,可以使用反应收集器
  • 一个人怎么能做到这一点?
  • 有可能,但不准确。
  • 哈哈,很好,如果我有代码,我可能会修改它:>
  • 即使修改后也会漂亮不准确。添加和删​​除反应时存在显着的 Discord 端延迟,并且该延迟通常是不可预测的和可变的(有时会出现故障)。另外,您必须考虑添加和删除反应,因为两者都是点击,并且都有上述延迟。这是一个非常酷的想法,但我很确定它不会那么好用。至于怎么做,看reaction collectors on the docs

标签: javascript node.js discord discord.js


【解决方案1】:

通过反应在 Discord 中创建 CPS 测试是相当不准确的。添加和删​​除反应时存在显着的 Discord 端延迟,并且该延迟通常是不可预测的和可变的(并且有时会出现故障)。另外,您必须考虑添加和删除反应,因为两者都是点击,并且都有上述延迟。这是一个非常酷的想法,但我很确定它不会那么好用。至于怎么做,看我评论里提到的reaction collectors on the docs

请注意,我很确定,反应收集器只处理添加反应。由于用户还必须单击以删除反应,因此您基本上必须将您收到的点击量乘以 2 来解释那些已删除的反应。因此,一旦您将在某个时间跨度(例如 30 秒)内收到的所有点击加起来,并将点击总数乘以 2,您现在必须将该总数除以时间跨度。因此,如果您执行 30 秒,则除以 30。然后你有大约每秒的点击次数,虽然不是很准确。

这是一个非常简单(未经测试)的小例子:

message.react('?');

// Create a reaction collector
const filter = (reaction, user) => reaction.emoji.name === '?' && user.id === message.author.id;

var clicks = 0; // (total clicks)
var timespan = 10; // (time in seconds to run the CPS test)

const collector = message.createReactionCollector(filter, { time: timespan * 1000 });

collector.on('collect', r => {
    console.log(`Collected a click on ${r.emoji.name}`);
    clicks++;
});

collector.on('end', collected => {
    console.log(`Collected ${clicks} raw clicks (adding reactions only)`);
    clicks *= 2;
    console.log(`Collected ${clicks} total approximate clicks.`);

    var cps = Math.round(clicks / timespan);
    console.log(`Your CPS averaged ~${cps} clicks per second over ${timespan} seconds.`);
});

我很快就写了这篇文章,没有进行测试,让你知道你需要做什么,它可能无法正常工作,或者我可能遗漏了一些东西。如果是这种情况,请通过 cmets 告诉我,我会修复答案。

【讨论】:

  • 这似乎运作良好,基于先前的缺点。生病尝试一些搞乱它,看看我是否能找到更准确的解决方案,非常感谢!
猜你喜欢
  • 2021-03-31
  • 2020-06-25
  • 2021-01-03
  • 2021-03-23
  • 2021-05-26
  • 2021-06-09
  • 2021-06-21
  • 2020-11-30
  • 2021-04-15
相关资源
最近更新 更多