我如何 DM 将直接消息放入公共频道而不发送垃圾邮件的机器人

Posted

技术标签:

【中文标题】我如何 DM 将直接消息放入公共频道而不发送垃圾邮件的机器人【英文标题】:how do i DM the bot which puts direct messages into a public channel without spamming messages 【发布时间】:2021-02-10 07:38:10 【问题描述】:

所以我在这里使用的是一个不和谐的机器人,它应该在公会/不和谐服务器的公共频道中发布相同的消息(我将它发送给它)。但我的问题是,由于某种原因,它每秒会发送 6 条垃圾邮件。

在下面我描述了我所做的几乎所有事情。我敢打赌,我就像婴儿一样远离正确编写代码,但我正在努力解决它应该花费的时间。

我一直在寻找很多解决方案并尝试了我遇到的许多变体,这让我越来越困惑 client.on('ready') 或 bot.on()

当我使用 client.on() 时,我得到一个 ReferenceError: msg is not defined 错误。 我找不到问题出在哪里。 当我使用 bot.on() 时,它说''ReferenceError: bot is not defined''。我用谷歌搜索,有人说你记下了''client.on()''等。

所以我很沮丧,决定在这里问一个可以为我写下我似乎无法修复自己的代码的人。我只是浪费了太多时间。我将非常感谢您提供的任何帮助!提前致谢!

所以无论如何这是我的代码:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => 
    console.log(`Logged in as $client.user.tag!`);
);

client.on('message', msg => 
    console.log('Message received: ' + msg.content);

    const channel = client.channels.cache.get('CHANNEL ID');
    if (msg.content) 
        channel.send(msg.content);
    
);

client.login('BOT TOKEN');

【问题讨论】:

【参考方案1】:

您的机器人只是对自己做出响应。它回复您的消息,然后回复对您的消息的回复,然后回复对您的消息的回复的回复,等等。您可以通过检查消息作者是否是具有User.bot 的机器人来防止这种情况发生。

您还应该检查消息是否在 dm 中发送,这样它就不会在每条随机消息上触发。

client.on('message', (msg) => 
 if (msg.author.bot || msg.channel.type !== 'dm') return;
 console.log('Message received: ' + msg.content);

 const channel = client.channels.cache.get('CHANNEL ID');
 if (msg.content) 
  channel.send(msg.content);
 
);

【讨论】:

以上是关于我如何 DM 将直接消息放入公共频道而不发送垃圾邮件的机器人的主要内容,如果未能解决你的问题,请参考以下文章

Discordbot 读取 DM 消息并记录它们

如何使不和谐机器人将消息发送到不和谐 Node js 的特定频道机器人

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

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

Django Channels - 当组成员时无法直接向频道发送消息

如何让机器人将消息发送到“通用”频道或消息最多的频道?