【问题标题】:How do I track the number of reactions on a message?如何跟踪消息的反应次数?
【发布时间】:2019-12-11 22:43:06
【问题描述】:

所以我想实现报告和禁止系统,我决定使用嵌入消息并添加反应。版主可以同意也可以不同意。例如,一旦 10 位版主同意投诉,则此消息中提到的用户应被禁止或踢出。

我曾想过使用client.on('messageReactionAdd', (messageReaction, user) => {}),但它只检查缓存 消息。然后我找到了关于反应的 discordjs.guide,他们展示了如何使用client.on('raw', (event) => {}),但它很久以前就被放弃了,我什至没有发现任何关于这个官方 Discord.js 文档的提及。消息有.awaitReactions(filter, [options]),但我必须以某种方式标记投票消息,然后以某种超级复杂的client 方法搜索它们。

这是我所拥有的:

const service = client.channels.get('id');
    let user = msg.mentions.users.first();
    if (!user) {
        msg.reply('Couldn\'t find the user!')
        return 1;
    }
    args.shift();
    let reason = args.join(' ').trim();
    if (!reason) {
        msg.reply('No reason to create a complaint!')
        return 1;
    }
    msg.channel.send(`I've created and sent a user complaint about ${user.tag}!)`)
        .catch((e) => console.log(e));
    msg.delete();
    const emb = new Discord.RichEmbed()
        .setTitle('User complaint')
        .addField('Who?', `**User: ${user.tag}**`)
        .addField('Reason?', `**Reson: ${reason}**`)
        .setColor('#ff7b00')
        .setFooter('Please take action');
    service.send(emb)
        .then(async msg => {
            await msg.react('✅')
            msg.react('❌')
        })
        .catch(e => {
            console.error()
            msg.reply('Couldn\'t send a user complaint!');
            return 1;
        })

有可能吗?我之前解释过我之前的计划,但是有没有更简单的方法?

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    1.数据库

    您应该使用message.awaitReactions();client.on('messageReactionAdd', ...); 并在机器人ready 事件中获取消息。

    这是一个非常简单的过程。您需要一个数据库来存储消息 ID、频道 ID,当然还有服务器 ID。之后,在您的就绪事件中创建一个小算法来遍历从数据库收集的所有消息,并在它们上使用message.awaitReactions();client.on('messageReactionAdd', ...);

    如果您决定使用数据库方法,我建议使用message.awaitReactions();

    2。全局数组(不推荐)

    如果您有一个非常简单的机器人并且无法使用数据库,那么我建议您使用一个全局数组来存储所有消息 ID,并将其用于 client.on('messageReactionAdd', ...); 事件。

    您必须检查消息数组中的 ID 是否与事件中收集的消息 ID 匹配,然后采取相应措施。

    此方法适用于较小的机器人,但如果您有更大的多服务器机器人,那么我强烈建议使用数据库版本,因为此版本在机器人重新启动后将无法工作。

    【讨论】:

    • 我喜欢数据库。谢谢你的回答!
    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多