将响应添加到消息时,当前代码未记录到控制台。
我知道messageReactionAdd事件是通过在下面分别调用该事件触发的,但是我不确定为什么不进行记录。
// This makes the events used a bit more readable
const events = {
ADD: 'messageReactionAdd',
REMOVE: 'messageReactionRemove',
};
// This event handles adding/removing users from the role(s) they chose
client.on('raw', async event => {
if (!events.hasOwnProperty(event.t)) return;
const { d: data } = event;
const user = client.users.get(data.user_id);
const channel = client.channels.get(data.channel_id);
const message = await channel.fetchMessage(data.message_id);
const member = message.guild.members.get(user.id);
const emojiKey = (data.emoji.id) ? `${data.emoji.name}:${data.emoji.id}` : data.emoji.name;
let reaction = message.reactions.get(emojiKey);
if (!reaction) {
// Create an object that can be passed through the event like normal
const emoji = new Emoji(client.guilds.get(data.guild_id), data.emoji);
reaction = new MessageReaction(message, emoji, 1, data.user_id === client.user.id);
}
if(event.t === 'ADD') {
console.log("Reaction: Added")
}
});
没有错误,控制台完全空白。
答案 0 :(得分:2)
看起来,您正在使用if (!events.hasOwnProperty(event.t)) return;
检查event.t
是否等于它们中的任何一个,但是当有人在消息中做出反应时,event.t
返回MESSAGE_REACTION_ADD
。所以它从一开始就回来了。
“只需更改ADD
属性即可解决问题”
但是,在if(event.t === 'ADD')
中,您检查event.t
是否等于ADD
,因此将不会执行,因为event.p
返回MESSAGE_REACTION_ADD
“只需将if(event.t === 'ADD')
更改为if(event.p === 'MESSAGE_REACTION_ADD) {
执行此操作以修复您的代码。