js发送过的每条消息做出反应

js发送过的每条消息做出反应

本文介绍了有没有办法对使用discord.js发送过的每条消息做出反应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用机器人通过discord.js f对通道中的每条消息做出反应.我有一个表情符号竞赛频道,我想在其中的每个帖子上添加一个✅和一个✖反应ofc,清除了所有不必要的消息,以便有50条消息

I wanna use an bot to react to every single message in an channel using discord.js f.e. i got an emoji contest channel and i wanna ad an ✅ and an ✖ reaction on every post in thereofc, all the unnecesary messages are cleaned up so that there are like 50 messages

推荐答案

  • 使用获取在频道中已发送的消息 TextChannel.fetchMessages() .
  • 遍历收藏.
  • 使用 Message.react添加反应() .
  • 在频道中发送新消息时,您还应该添加反应.
  • const emojiChannelID = 'ChannelIDHere';
    
    client.on('ready', async () => {
      try {
        const channel = client.channels.get(emojiChannelID);
        if (!channel) return console.error('Invalid ID or missing channel.');
    
        const messages = await channel.fetchMessages({ limit: 100 });
    
        for (const [id, message] of messages) {
          await message.react('✅');
          await message.react('✖');
        }
      } catch(err) {
        console.error(err);
      }
    });
    
    client.on('message', async message => {
      if (message.channel.id === emojiChannelID) {
        try {
          await message.react('✅');
          await message.react('✖');
        } catch(err) {
          console.error(err);
        }
      }
    });
    

    在此代码中,您会注意到我正在使用 for ... of 循环,而不是 Map.forEach() .其背后的原因是后者将简单地调用方法并继续前进.这将导致任何被拒绝的诺言 not 被捕获.我还使用了 async/ await 样式,而不是容易弄乱的 then()链.

    In this code, you'll notice I'm using a for...of loop rather than Map.forEach(). The reasoning behind this is that the latter will simply call the methods and move on. This would cause any rejected promises not to be caught. I've also used async/await style rather than then() chains which could easily get messy.

    这篇关于有没有办法对使用discord.js发送过的每条消息做出反应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 18:48