【问题标题】:React to a Message Previously Sent in Discord.js对之前在 Discord.js 中发送的消息做出反应
【发布时间】:2020-12-30 14:35:47
【问题描述】:

这是一个非常基本的方法,但我想知道我怎么可能让任何用户发送消息,然后让某人输入一些内容(例如!react EMOJI_NAME)并让它对随机用户发送的消息做出反应,然后然后删除消息“!react EMOJI_NAME”。我已经有一个可以发送任何自定义表情符号的系统,无论是否动画,但我没有办法对不同用户发送的特定消息做出反应(这就是为什么我不能只搜索第一条消息频道或识别作者发送的消息)有人有任何提示如何识别频道中发送的第二条消息吗?任何帮助表示赞赏:)

注意:下面的代码不起作用,因为它会对消息“!react EMOJI_NAME”做出反应,然后继续删除完全相同的消息。感谢阅读!

case 'react':
          var { MessageEmbed } = require('discord.js');
          var emojis = client.emojis.cache.filter(e => e.name.toLowerCase() === args.join(' ').toLowerCase());

            var content = '';

            emojis.forEach(emoji => {
              content = `${content} ${emoji}`;
            });

            message.react(content)
              .then(function () {
                message.delete()
              })
              .catch(function () {
                var errorEmbed = new MessageEmbed()
                  .setColor('#ff0000')
                  .setDescription(`<:error:784747315960479754> There was an error finding that emoji`);
                message.channel.send(errorEmbed);
              });
            break;

【问题讨论】:

  • 也许你需要fetchMessages()

标签: javascript discord discord.js


【解决方案1】:

确保它在 async 函数中

message.delete(); // delete the message first

const [target] = await channel.fetchMessages({ limit: 1 }); // get first message in the channel

const emojis = client.emojis.cache.filter(e => e.name.toLowerCase() === args.join(' ').toLowerCase()); // get all emojis

emojis.forEach(emoji => { // loop through every emoji
  await target.react(emoji); // react to the message with said emoji
});

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 2021-06-12
    • 2021-05-14
    • 1970-01-01
    • 2021-05-26
    • 2021-06-24
    • 2019-11-18
    • 2020-07-17
    相关资源
    最近更新 更多