discord-mentions
v3.2.0
Published
Easily extract a member, role, or channel from a Discord mention.
Downloads
6
Maintainers
Readme
About
Easily extract a member, role, or channel from a Discord mention using Discord.js.
Usage
const getMention = require('discord-mentions');
var member = getMention('<@!189855563893571595>', someGuild).member;
// Expected: GuildMember
var role = getMention('<@&12345689012345678>', someGuild).role;
// Expected: '12345689012345678' (ID doesn't refer to a valid role)
var id = getMention('<#632684617312370698>').channel;
// Expected: '632684617312370698'
var mention = getMention('not a mention');
// Expected: null
Returns...
...when a valid mention and guild are provided:
an object with amember
,role
, orchannel
property as the mentioned GuildMember/Role/GuildChannel....when a valid mention is provided, but the guild parameter is omitted:
an object with amember
,role
, orchannel
property as the ID inside the mention....when an invalid mention and valid guild are provided:
an object with amember
,role
, orchannel
property as as the ID inside the mention....when an invalid mention is provided, but the guild parameter is omitted:
null
Example
Using the client's mention as its prefix and implementing a command which requires a mentioned recipient...
const getMention = require('discord-mentions');
client.on('message', message => {
if (!message.guild || message.author.bot) return;
const args = message.content.trim().split(/\s+/g);
// Ignoring the message if it doesn't start with the client's mention.
if (getMention(args[0]) !== client.user.id) return;
args.shift();
const cmd = args[0].toLowerCase();
// Simple hug command - mention a member to hug. This is where
// 'message.mentions.members.first()' won't help, since it's
// actually the client every time with this setup.
if (cmd === 'hug') {
try {
// Making sure the first argument is a mention.
const mention = getMention(args[1], message.guild);
if (!mention) return await message.channel.send(':x: Please mention a member to hug.');
// Making sure the mention is a member.
const recipient = mention.member;
if (!recipient || typeof recipient === 'string') return await message.channel.send(':x: That\'s a mention, but not a member!');
await message.channel.send(`${message.author} hugs ${recipient}!`);
} catch(err) {
console.error(err);
}
}
});