将响应添加到消息后,为什么这不记录到控制台?

时间:2019-05-17 11:31:44

标签: discord.js

将响应添加到消息时,当前代码未记录到控制台。

我知道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")
    }
  });

没有错误,控制台完全空白。

1 个答案:

答案 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) {

执行此操作以修复您的代码。