(discord.js) How can I make this command only work for certain roles/users?
I'm still fairly inept when it comes to software development, and need some help with making this command work for only certain roles on my discord server, or only work for certain users
client.on('message', async message => {
if (message.content === '-fruits') {
try {
await message.react('🍎');
await message.react('🍊');
await message.react('🍇');
} catch (error) {
console.error('One of the emojis failed to react:', error);
}
}
});
You can restrict a command to specific users by creating an array of user IDs, and if the message authors ID is in the list check if it matches any commands.
// Create an array of user ids
const adminIDs = [/* List of user IDs */]
client.on('message', async message => {
// Check if the user who sent the message is in the list
if (adminIDs.include(message.author.id)) {
// If user is in list, then check if message matches a command
if (message.content === 'foo') {
// do stuff...
} else if (message.content === 'bar') {
// do more stuff..
}
}
});
As for roles, you can check if a user has a specific role.
client.on('message', async message => {
// Check if the user has a role with the name "Admin"
if (message.member.roles.find(r => r.name === 'Admin')){
if (message.content === 'foo') {
// do stuff...
} else if (message.content === 'bar') {
// do more stuff..
}
}
});
Comment on @KyleRifqi's answer (I don't have 50 rep.)
Roles also have IDs, so you can do message.member.roles.find(r => r.id === "Role ID string")
instead, if you happen to have multiple roles with the same name