messageReactionAdd事件在没有解释的情况下不再说话

时间:2020-08-27 22:40:35

标签: javascript node.js debugging discord discord.js

我正在开发一个不和谐的机器人,当用户对由该机器人创建的嵌入消息做出反应时,该机器人将添加角色“ Voteur”。 直到今天,它的运行情况仍然不错,但我不知道为什么现在不再发声了。

机器人会创建嵌入消息并添加响应,但是当用户做出响应时,什么也不会发生!

discord.js v12 API是否有我不知道的更改?

这是我的代码(这是触发嵌入消息的!vote命令的文件):

const Discord = require('../node_modules/discord.js');
const bot = new Discord.Client();
const rappelVote = require('./rappelVote');
const { roleVoteur, image, thumbnail  } = require('..//config.js');

module.exports = function embedVote (channel) {         //Affichage pour les votes
    const voteEmbed = new Discord.MessageEmbed()    //Construction du Embed
        .setColor("13ff00")
        .setTitle("Votez pour Fever sur TopServeur !")
        .setURL("https://top-serveurs.net/gta/feverrp")
        .setDescription("Pour recevoir des rappels de vote et soutenir le serveur, réagissez avec ?")
        .setImage(image)
        .setThumbnail(thumbnail)
        .setFooter("Pour ne plus recevoir les rappels : ?")
     channel.send("@everyone")
     channel.send(voteEmbed)
     
    .then(message => { // envoi une réaction grâce a la promise
        message.react('?')
        message.react('?')

        bot.on('messageReactionAdd', (reaction, user) => { // on vérifie que ce soit bien la bonne réaction et on ne compte pas celui du bot
            const member = message.guild.members.cache.get(user.id);
            const voteur = message.guild.roles.cache.get(roleVoteur);
            if (reaction.emoji.name === '?' && user.id !== bot.user.id) {  
                member.roles.add(voteur);
            }
            if (reaction.emoji.name === '?' && user.id !== bot.user.id) {  
                member.roles.remove(voteur);
            }
        });
    });
    channel.send("<@&" + roleVoteur + ">");
    channel.send(rappelVote());
}

如何重新进行这项工作?

1 个答案:

答案 0 :(得分:0)

问题可能是您正在创建一个 Discord.Client()而不是当前版本。您应该编辑函数参数以包含一个bot对象:

function embedVote (channel, bot) {}

这样,您将使用正确的客户端实例。正确调用此函数的示例:

// if function is being triggered via command

embedVote(message.channel, message.client);

// or something like:

embedVote(bot.channels.cache.get('Channel ID'), bot);