@deathinside/discord-mentions-js

1.0.2 • Public • Published

About

Easily extract a member, role, or channel from a Discord mention using Discord.js.

Usage

const getMention = require('@deathinside/discord-mentions-js');

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 a member, role, or channel property as the mentioned GuildMember/Role/GuildChannel.

  • ...when a valid mention is provided, but the guild parameter is omitted:
    an object with a member, role, or channel property as the ID inside the mention.

  • ...when an invalid mention and valid guild are provided:
    an object with a member, role, or channel 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);
    }
  }
});

Package Sidebar

Install

npm i @deathinside/discord-mentions-js

Weekly Downloads

0

Version

1.0.2

License

ISC

Unpacked Size

136 kB

Total Files

4

Last publish

Collaborators

  • alsheikhaminulislam