【问题标题】:Discord bot recognize if someone pings an account and repliesDiscord bot 识别是否有人 ping 帐户并回复
【发布时间】:2021-07-30 10:24:36
【问题描述】:

我一直在开发一个基本的不和谐机器人,以便在有人 ping 我的帐户时回复。到目前为止,它仅适用于直接 ping,而不适用于您 ping 我的角色。任何帮助将不胜感激。

const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});
const ownerId = "";

client.on("message", async message => {
    if (message.author.bot) return false;

    if (message.mentions.has(ownerId)) {
        message.reply(`reply`);
    };
});

【问题讨论】:

  • 什么是ownerId?角色 ID 还是用户 ID?
  • ownerId 是我的主帐户的用户 ID。这就是我希望机器人响应的内容
  • ownerId 是故意为空的吗?
  • 是的,我为帖子删除了它

标签: javascript node.js discord discord.js


【解决方案1】:

下面代码中的基本思想是,它首先从发送消息的公会中的用户那里获取GuildMember 对象。然后,它会检查消息中是否有任何提及并将所有messageRoles 中的角色 ID。它还将所有用户的成员角色放入另一个名为memberRoles 的数组中。然后,它将两个数组与some(非常方便的方法)进行比较,如果为真,则返回。

代码:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});
const ownerId = "";

client.on("message", async message => {
    if (message.author.bot) return false;

    if (message.mentions.has(ownerId)) {
        message.reply(`reply`);
    }

    let user = client.users.cache.get(ownerId);
    let currentGuild = message.guild;
    let currentMember = currentGuild.members.cache.get(user.id);
    let memberRoles = [];
    currentMember.roles.cache.each(role => {
        memberRoles.push(role.id);
    });
    let messageRoles = [];
    console.log(message.mentions.roles);
    
    message.mentions.roles.each(role => {
        messageRoles.push(role.id);
    })
    let containsMention = messageRoles.some(x => memberRoles.includes(x));
    if (containsMention) {
        message.reply('reply');
    }
});

【讨论】:

  • 这意味着我必须为我所属的所有角色添加 roleIds。机器人有什么方法可以识别谁在 ping 我,包括直接和角色 ping?
  • 我已经更新了代码并附上了解释。这应该会有所帮助。
猜你喜欢
  • 2019-03-05
  • 2021-05-19
  • 2018-08-15
  • 2022-07-12
  • 2022-01-04
  • 1970-01-01
  • 2022-11-16
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多