11

I am making a bot and I am trying to Ping a certain role. Here is the relevant code:

let msga = msg.author;
msg.channel.send("@NES Found one!! " + msga);

@NES is the role I am trying to ping/mention.

RtHAitP30D
  • 306
  • 3
  • 6
  • 19

4 Answers4

41

The currently accepted answer is incorrect. You ping a user with <@id>, not a role.

As stated in this Github issue, for roles, you have to use <@&id> and the role has to be pingable.

So, the correct code for the question would be something like:

msg.channel.send("<@&" + roleId + "> Found one!! " + msga);

Or, using fancy formatted strings:

msg.channel.send(`<@&${roleId}> Found one!! ${msga}`);
yummypasta
  • 1,398
  • 2
  • 17
  • 36
  • 1
    Correct answer but you have a space after the **&** and before the **"** which shouldn't be there in your first block of code. It should be: msg.channel.send("<@&" + roleId + "> Found one!! " + msga); – James Finn Dec 11 '20 at 00:06
  • My answer was correct at the time of posting, before v12 was released, updated my answer to point to this one. – Thomas Reichmann Dec 30 '20 at 22:41
5

Just add an opening and closing angle bracket and use the role id to make the mention.

msg.channel.send("<@id> Found one!! " + msga);

This answer was valid for older versions of discord.js (I believe v11 and under) but is now invalid for v12+ use yummypasta's solution for the newer versions.

Thomas Reichmann
  • 627
  • 3
  • 15
2

It is:

 message.channel.send(`<@& id >`); 
Unheilig
  • 16,196
  • 193
  • 68
  • 98
soey_sause
  • 23
  • 5
2

try this: msg.channel.send(`<@&${'roleId'}> Found one!! ${msga}`);

Yusa
  • 21
  • 1