Discord bot没有回复消息[重复]

Posted

技术标签:

【中文标题】Discord bot没有回复消息[重复]【英文标题】:Discord bot is not replying to messages [duplicate] 【发布时间】:2021-10-18 14:57:26 【问题描述】:

我一直在尝试设置一个不和谐的机器人,通过遵循文档,我能够设置一个斜杠命令,但无法让机器人回复服务器上的消息。

这是我用来从docs 设置斜杠命令的代码。

const  REST  = require('@discordjs/rest');
const  Routes  = require('discord-api-types/v9');

const commands = [
  name: 'ping',
  description: 'Replies with Pong!'
]; 

const rest = new REST( version: '9' ).setToken('token');

(async () => 
  try 
    console.log('Started refreshing application (/) commands.');

    await rest.put(
      Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID),
       body: commands ,
    );

    console.log('Successfully reloaded application (/) commands.');
   catch (error) 
    console.error(error);
  
)();

在此之后,我使用以下代码设置了机器人:

const  Client, Intents  = require('discord.js');
const client = new Client( intents: [Intents.FLAGS.GUILDS] );


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

client.on('interactionCreate', async interaction => 
    // console.log(interaction)
    if (!interaction.isCommand()) return;

    if (interaction.commandName === 'ping') 
        await interaction.reply('Pong!');
        // await interaction.reply(client.user + '????');
    
);

client.login('BOT_TOKEN');

现在我可以得到 Pong 的响应了!当我说 /ping 时。

但在我从this link 添加以下代码后,我没有得到机器人的任何响应。

client.on('message', msg => 
  if (msg.isMentioned(client.user)) 
    msg.reply('pong');
  
);

我希望机器人回复消息而不仅仅是斜线命令。有人可以帮忙吗。谢谢!!!???

【问题讨论】:

这能回答你的问题吗? “message event listener not working properly”、“Having trouble sending a message to a channel with Discord.js”。 【参考方案1】:

首先,您缺少GUILD_MESSAGES 接收messageCreate 事件的意图。

const client = new Discord.Client( intents: ["GUILDS", "GUILD_MESSAGES"] );

其次,message 事件已被弃用,请改用messageCreate

client.on("messageCreate", (message) => 
    if (message.mentions.has(client.user)) 
        message.reply("Pong!");
    
);

最后,Message.isMentioned() 不是 logner 函数,它来自 discord.js v11。使用MessageMentions.has() 检查消息中是否提到了用户。

使用 discord.js ^13.0.1 测试。

【讨论】:

非常感谢!这就像一个魅力。我感到困惑并混淆了版本。我也在尝试获取所有用户的列表,我相信我们需要 GuildMemberManager 和经理我们需要缓存,我们如何生成缓存? 我很高兴它有帮助。我认为您应该就该主题提出一个新问题,因为它涉及不同的问题。我曾经写过一篇关于从所有公会获取所有用户 ID 的帖子,可能会有所帮助,链接 here。 谢谢!!该链接有所帮助。虽然我只能得到最近发过信息的人的名单,而不是全部。关于如何做到这一点的任何想法?你能把我重定向到一些我可以了解用法的资源吗?就像我能够在文档中找到类和函数一样,但我无法实现它们,也许是因为我不知道它的先决条件,比如创建 MemberManager 等。 你不应该创建MemberManager,经理已经在那里,你只需要访问它的实例。看看Guild.members。然后在 manager 上使用.fetch() 来获取所有成员。 好的,谢谢大佬!这真的很有帮助,我会尽力完成它......再次感谢?

以上是关于Discord bot没有回复消息[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何让 discord bot 等待回复 5 分钟然后发送消息?使用不和谐的 js

Python,Discord bot 未回复消息且终端未更新

Discord Java Bot 没有响应

Discord Bot JS:编辑来自先前斜杠命令交互的回复

即使没有任何错误,我的 discord.js 机器人也不会回复用户消息 [重复]

检查消息回复是不是为回复类型消息 discord.py