当前位置: 首页 > 知识库问答 >
问题:

Discordbot读取DM消息并记录它们

辛承
2023-03-14

我想让我的机器人只读取DM消息,并将其发送到不和谐的渠道,但我的代码垃圾邮件消息无限,垃圾邮件5次,然后它暂停几秒钟,然后再次垃圾邮件,机器人也不只读取DM消息,并读取公会消息,所以如果我在公会里发送任何东西,它会发送垃圾邮件。

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

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');

共有3个答案

阮健
2023-03-14

因为不和。JSV13也使用了部分频道,我希望可以

顺便提一下

if (message.channel.type != "DM") return;
齐昊焱
2023-03-14

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

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;
});
楚羽
2023-03-14

如果检查消息是否来自公会,则应停止此操作。如果消息,则提前返回。帮会是真实的(在DM消息中。帮会null这是一个虚假的值)

js prettyprint-override">if (message.guild) return;

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

 类似资料:
  • 我已经开发了2个Android应用程序。第一个,写入NFC标签,第二个读取我写的内容。 因此,对于*第一个应用程序(WriteNFC):我正在向标记中写入一条NDEF消息,该消息涉及两条NDEF记录:第一条记录是“文本”类型,第二条是“URL”类型。 第二个应用程序(ReadNFC):我扫描标签,以便读取NDEF消息,并显示它,但不是完全显示。我只在屏幕上显示第二条记录(URL)。我想做的是,当用

  • 我希望我的Spring批处理应用程序一次从数据库中读取50条记录,然后将这50条记录发送给处理器,然后发送给写入器。 有人可以告诉我如何做到这一点吗? 我尝试使用JdbcPagingItemReader并将pageSize设置为50,这样可以读取50条记录,但是rowMapper、处理器和编写器一次接收一条记录,而不是获得50条记录。 如何使处理器和写入器在dto中获得50条记录,而不是一次接收一

  • 我正在使用。这是我的: 当我想记录一条长消息时,我在每个appender上有不同的输出。e、 g.如果消息有17000个字符,从控制台我得到14000个字符,从udp我得到8000个字符。我认为这里的问题可能与每行配置的最大长度有关,对吗?尽管如此,我还是找不到那个特定的属性。 你对此有什么想法吗?

  • 我试图创建一个类来读取XLSX文件时,我上传到一个网站。 我有将文件上载到服务器的代码。该文件可以上载,但它不能从Excel中捕获数据。 我可以知道如何解决或修改此代码以使数据能够在Web上看到吗? 我知道还有其他重复的问题,但经过尝试,这些答案似乎对我不起作用。 如果删除行公共静态空白...,然后我会得到这个错误:包应该包含一个内容类型part[M1.13] 如果我只是从上面运行main方法,这

  • 我使用的是JBoss,因此需要排除JBoss自己的日志子系统,以便进行日志记录,我使用的是jboss-deployment-structure.xml文件: 我使用的是JPA,因此如果这可能有所帮助,这是我的persistence.xml文件:

  • 读取匹配指定过滤条件、并且在上次调用本方法之后接收到的消息。 调用: web3.shh.getFilterMessages(id) 参数: id:String,消息过滤器ID,由shh.newMessageFilter()返回 返回值: Array: 一组消息对象。 示例代码: web3.shh.getFilterMessages('2b47fbafb3cce24570812a82e6e93cd