我正在开发一个不和谐的机器人,当用户对由该机器人创建的嵌入消息做出反应时,该机器人将添加角色“ 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());
}
如何重新进行这项工作?
答案 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);