【问题标题】:Discordbot read DM messages and log themDiscordbot 读取 DM 消息并记录它们
【发布时间】:2021-12-06 15:03:25
【问题描述】:

我希望我的机器人只阅读 DM 消息并将它们发送到不和谐的频道,但我的代码无限发送垃圾邮件,发送 5 次垃圾邮件,然后暂停几秒钟,然后再次发送垃圾邮件,机器人也不阅读只有 DM 消息和阅读公会消息,所以如果我在公会中发送任何内容,它就会成为垃圾内容。

我想要什么? 如果有人发送“你好!” (消息内容)给 DM 中的机器人,机器人需要发送“你好!” (消息内容)到指定频道(日志频道)。

const Discord = require("discord.js");  
const client = new Discord.Client({ intents:['DIRECT_MESSAGES'],
partials: ['MESSAGE'] });


client.on('ready', () =>{
    console.log('Bot Online!'); //bot successfully logged in

});


  client.on('message', async (message) => {
    await client.channels.cache.get('CHANNEL ID').send(message.content);
    console.log(message.content); //log messages
    return;
});
// Authorizing
client.login('LOGIN');

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    对于 Discord.js v13 也使用 CHANNEL 部分,我希望它有效

    顺便说一句

    if (message.channel.type != "DM") return;
    

    【讨论】:

      【解决方案2】:

      问题是当机器人将消息发送到日志通道时。它还会再次触发message 事件。为了避免这种情况,只需添加

      if(message.author.bot) return;
      

      你的代码看起来像

        client.on('message', async (message) => {
          if(message.author.bot) return;
          await client.channels.cache.get('CHANNEL ID').send(message.content);
          console.log(message.content); //log messages
          return;
      });
      

      如果您只想获取直接消息

      你可以使用

      if(message.guild) return;
      
        client.on('message', async (message) => {
          if(message.guild) return;
          await client.channels.cache.get('CHANNEL ID').send(message.content);
          console.log(message.content); //log messages
          return;
      });
      

      【讨论】:

      • 好的,谢谢,我如何告诉机器人只读取 DM 消息
      • 非常感谢!
      • 没问题@Ecstasyyy。
      【解决方案3】:

      检查消息是否来自公会应该可以阻止这种情况。如果 message.guild 为真值,请尽早返回(在 DM 中,message.guildnull,这是一个假值)

      if (message.guild) return;
      

      你可以把它放在事件回调的顶部,这样如果它在公会中就不会运行

      【讨论】:

      • 我如何将其设置为 true,因为我希望机器人记录来自另一个机器人的所有 DM 消息` if(message.author.bot) return;`
      • 它应该已经记录了它们 - 如果你有该行,如果你想要机器人消息,已经删除它
      • 对不起,我没有解释清楚.. 我希望机器人只读取其他机器人发送的消息,而不是读取普通用户发送的消息
      • 使用逻辑非运算符 (!) 执行此操作:if(!message.author.bot) return;
      • DiscordAPIError: Cannot send messages to this user -> 我在尝试从一个机器人向另一个机器人发送消息时收到此错误,有什么解决办法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 2019-03-05
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      相关资源
      最近更新 更多