Discord bot 识别是否有人 ping 帐户并回复

时间:2021-05-08 10:05:07

标签: javascript node.js discord discord.js

我一直在开发一个基本的不和谐机器人,以便在有人 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`);
    };
});

1 个答案:

答案 0 :(得分:0)

下面代码的基本思想是,它首先从发送消息的 Guild 中的用户那里获取 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');
    }
});