Discordbot 读取 DM 消息并记录它们

Posted

技术标签:

【中文标题】Discordbot 读取 DM 消息并记录它们【英文标题】:Discordbot read DM messages and log them 【发布时间】: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');

【问题讨论】:

【参考方案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 -> 我在尝试从一个机器人向另一个机器人发送消息时收到此错误,有什么解决办法吗?

以上是关于Discordbot 读取 DM 消息并记录它们的主要内容,如果未能解决你的问题,请参考以下文章

无法将 DM 发送到消息到 DB discord.js 中的存储用户

Discord Bot 读取 Google 表格并在表格中返回值。我想在没有表格格式的消息中返回值 ar CSV

Discord - 截图嵌入消息

Discord Bot 读取对设置消息的反应

有没有办法让我的机器人检查 DM 并将它们发布到我服务器的频道中?

检查消息是不是从 DM 发送不工作