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.guild
是 null
,这是一个假值)
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