如果机器人被ping通

时间:2020-09-26 03:49:17

标签: javascript node.js discord discord.js

如果消息中包含机器人的提及,我试图使我的机器人向消息作者发送DM,但是每次发送消息时,消息作者都会获得DM,而不是仅获得DM。是否包含机器人的提示。

这是我的代码。

if (msg.content.includes === '<@!751281320122122311>' || '<@751281320122122311>') {
    msg.author.send({
        embed: {
            color: 3447003,
            title: "Hey",
            description: "Just because I'm a bot, doesn't mean I don't get annoyed when you ping me.",
        }
    });
}

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

如果您只想检查邮件中是否包含该字符串,我认为这应该起作用。

if (
  msg.content.includes("<@!751281320122122311>") ||
  msg.content.includes("<@751281320122122311>")
) {
  msg.author.send({
    embed: {
      color: 3447003,
      title: "Hey",
      description:
        "Just because I'm a bot, doesn't mean I don't get annoyed when you ping me.",
    },
  });
}

有关Array.prototype.includes()函数的更多详细信息,请参见this

答案 1 :(得分:1)

按照书面规定,您的if条件将始终为真。

if (msg.content.includes === '<@!751281320122122311>' || '<@751281320122122311>') {

说:“如果msg.content.includes等于'<@!751281320122122311>',或者字符串值'<@751281320122122311>'是真实的,则执行此操作。”字符串文字永远是真实的。

您可能想要更多类似这样的东西:

if (msg.content.includes === '<@!751281320122122311>' || msg.content.includes === '<@751281320122122311>') {

但是即使那样也可能是错误的。 msg.content可能是字符串,数组或具有您要调用的includes函数的其他内容。如果是这样,您需要这样做:

if (msg.content.includes('<@!751281320122122311>') || msg.content.includes('<@751281320122122311>')) {

答案 2 :(得分:0)

这应该有效

 if (message.mentions.has(client.user) && !message.mentions.has(message.guild.id)) 
{
    message.author.send({
        embed: {
            color: 3447003,
            title: "Hey",
            description: "Just because I'm a bot, doesn't mean I don't get annoyed when you ping me.",
        }
    });
}