对之前在 Discord.js 中发送的消息做出反应

时间:2020-12-30 02:00:43

标签: javascript discord discord.js

这是一个非常基本的,但我想知道我怎么可能让任何用户发送消息,然后让某人输入一些东西(例如!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;

1 个答案:

答案 0 :(得分:0)

确保它在 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
});