Discord 机器人如何只回复特定用户?

Posted

技术标签:

【中文标题】Discord 机器人如何只回复特定用户?【英文标题】:How can a Discord bot reply to only certain users? 【发布时间】:2020-06-29 11:12:42 【问题描述】:

我正在寻找一种方法来制作只对某些用户做出反应或回复的 Discord 机器人。它可以通过角色或 ID 选择用户,但我似乎无法让它工作。这是我尝试过的:

if (message.author.id === 'myDiscordID') 
        message.reply('hello!').then(r => 
        );
    

如果有帮助,我正在使用 Discord JS 进行编码。这是整个 index.js 文件:

const Discord = require('discord.js');
const  prefix, token  = require('./config.json');

const client = new Discord.Client();

client.once('ready', () => 
    console.log('Ready!');
);

client.on('message', message => 

    if (message.author.id === 'myDiscordID') 
        message.reply('hello!').then(r => 
        );
    

);
client.login(token);

文件运行良好,机器人上线,然后打印“Ready!”但是,对于控制台,其余代码似乎不起作用。

【问题讨论】:

【参考方案1】:

我看起来这必须有效。

您确定您的服务器中有机器人并且有权阅读消息吗? 试试这个准备好的块

client.once('ready', () => 
    console.log('Ready!');
    const guildList = client.guilds.cache.map(guild => guild.name)
    console.join(`Bot go online in $guildList.length`)
    console.log(guildList.join('\n'))
); 

检查 user.id 或角色的一些解决方案包括:

console.log(message.content) 用于检查此事件触发器。

client.on('message', message => 
    console.log(message.content)
    if (message.author.id === '') 
        message.reply('author contain')
    

    if (message.member.roles.cache.has('ROLE ID')) 
        message.reply('role contain')
    

    if(message.member.roles.cache.some(role => ['ID1', 'ID2'].includes(role.id)) 
        message.reply('some role contain')
       

);

【讨论】:

【参考方案2】:

我也有这个问题。这是对我有用的解决方案。

const userID = "The_user's_id";

bot.on("message", function(message) 
    if(message.author.id === userID) 
        message.react('emoji name or id');
    
);

注意:要查找用户的ID,只需右键单击他并按“复制ID”即可。

【讨论】:

以上是关于Discord 机器人如何只回复特定用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 DIScord.js 机器人真正回复消息?

Discord 机器人消息不收集反应

如何在 discord.net 中获取用户、机器人和在线用户数?

如何检查用户是不是具有特定角色 discord.js v12? [复制]

如何限制 on_message 回复(Discord Python 机器人)

discord.py 如何使用 wait_for 等待作者消息?