我正在寻找一种制作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!”。到控制台,但是其余代码似乎不起作用。
答案 0 :(得分:0)
我看起来这一定可行。
您确定服务器中的漫游器具有读取消息的权限吗? 试试这个准备好的方块
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或角色的solutin包括:
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')
}
});
答案 1 :(得分:0)
我对此也有疑问。这是对我有用的解决方案。
const userID = "The_user's_id";
bot.on("message", function(message) {
if(message.author.id === userID) {
message.react('emoji name or id');
}
});
注意:要找到用户的ID,只需右键单击该用户,然后按“复制ID”即可。