【问题标题】:Discord.js awaitReactions on message fetch by id not workingDiscord.js awaitReactions on message fetch by id 不起作用
【发布时间】:2020-11-03 08:07:11
【问题描述】:

我的机器人很久以前发送的消息中的“message.awaitReactions”有问题。

代码如下:

let channel = client.guilds.cache
    .get("<guild_id>")
    .channels.cache.get("<channel_id>");

  channel.messages
    .fetch(<message_id_that_was_sent_a_long_ago_by_my_bot>)
    .then((message) => {
      message
        .awaitReactions(
          (reaction, user) =>
            reaction.emoji.name == "????" || reaction.emoji.name == "????"
        )
        .then((collected) => {
          console.log("collected", collected);
          if (collected.first().emoji.name == "????") {
            user.setNickname("???? " + user.username);
          } else {
          //TODO
          }
          // reaction.remove(user);
        })
        .catch(() => {
          message.reply("No reaction, operation canceled");
        });
    });

问题是当用户在消息上添加反应时没有附加任何内容,我不知道为什么:(

有人知道为什么吗?

谢谢

【问题讨论】:

  • 你使用的是.fetch("123")还是.fetch(123)
  • 我正在使用 config.id_message 女巫是 config.json 的属性,它是“123”,获取消息是因为我可以在 awaitReactions 之前记录它。是 awaitReactions 没有被触发
  • 发布的代码什么时候运行?
  • 在client.on("ready", () => {

标签: javascript discord.js


【解决方案1】:

message.awaitReactions(filter, { time: 15000 }) 将等待 15 秒的反应,然后输入 .then(). 你没有指定任何东西,所以它永远不会进入.then()

你应该改用的是:

const filter = (reaction, user) => reaction.emoji.name == "?" || reaction.emoji.name == "?"
const collector = message.createReactionCollector(filter);
collector.on('collect', (messageReaction, user) => { 
    console.log(`Collected ${messageReaction.emoji.name}`) 
    if (r.emoji.name == "?") {
        messageReaction.message.guild.members.fetch(user.id).then(member => member.setNickname("? " + user.username));
    } else {
        // TODO
    }
    // reaction.remove(user);
});

或者使用事件 messageReactionAdd,您仍然需要获取消息才能触发此事件。

client.on('messageReactionAdd', (messageReaction, user) => {
     if(messageReaction.message.id != '<message_id_that_was_sent_a_long_ago_by_my_bot>') return;
     if (messageReaction.emoji.name == "?") {
         messageReaction.message.guild.members.fetch(user.id).then(member => member.setNickname("? " + user.username));
     }
     // reaction.remove(user);
})
client.on('ready', () => {
     let channel = client.guilds.cache
         .get("<guild_id>")
         .channels.cache.get("<channel_id>");
     channel.messages.fetch('<message_id_that_was_sent_a_long_ago_by_my_bot>');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2021-05-11
    • 2020-09-03
    • 2021-11-12
    • 2021-12-19
    • 2020-07-02
    • 2018-04-24
    • 2018-01-13
    相关资源
    最近更新 更多