I'm trying to make my discord.js bot send a message when it is pinged. I was unsure how to do this so I referred to this code:
client.on('message', message => {
if (message.content === '<@745648345216712825>') {
message.channel.send('Message Here');
}
});
However, this doesn't work.
Also, is it possible that my bot responds when a person mentions a specific user for example if I am mentioned by the user anywhere in a message the bot responds? If yes, can you show me how to do it?
I'm trying to make my discord.js bot send a message when it is pinged. I was unsure how to do this so I referred to this code:
client.on('message', message => {
if (message.content === '<@745648345216712825>') {
message.channel.send('Message Here');
}
});
However, this doesn't work.
Also, is it possible that my bot responds when a person mentions a specific user for example if I am mentioned by the user anywhere in a message the bot responds? If yes, can you show me how to do it?
Share Improve this question edited Sep 10, 2020 at 8:52 mkrieger1 23.2k7 gold badges63 silver badges79 bronze badges asked Sep 10, 2020 at 8:09 LalluLallu 1684 gold badges7 silver badges21 bronze badges 2-
If you replace the
<@745648345216712825>
with a simple string, likehello
and then you say hello on Discord, does this work? Also, did you get any error message that can help? – Thibault Husté Commented Sep 10, 2020 at 8:40 - What exactly does "this doesn't work" mean? – mkrieger1 Commented Sep 10, 2020 at 8:52
3 Answers
Reset to default 11Message
has a property called mentions
, which contains all the channels, members, roles, and users mentioned in the message. You can use the method .has(data, [options])
of MessageMentions
to see if your bot was mentioned.
client.on("messageCreate", (message) => {
if (message.author.bot) return false;
if (message.content.includes("@here") || message.content.includes("@everyone") || message.type == "REPLY") return false;
if (message.mentions.has(client.user.id)) {
message.channel.send("Hello there!");
}
});
The message
event has been renamed to messageCreate
in Discord.JS v13. Using message
will still work, but you'll receive a deprecation warning until you switch over.
discord.js just got updated you can use
client.on('message', message => {
if (message.mentions.has(client.user)) {
message.channel.send('your message');
}
});
One of the best ways to check if only your bot is mentioned in the entire message is, regex. You can use this regular expression to check if only the client is mentioned:
/^<@!?${<client>.user.id}>( |)$/
You can check message by using the match
method of String
. In our case, String
is message.content
:
if (message.content.match(/^<@!?${client.user.id}>( |)$/)) {
return message.channel.send("Thanks for mentioning me! my prefix is ...");
};