Есть ли способ проверить, была ли добавлена ​​чья-то роль? [Discord.js] - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь получить дату, когда кто-то получил роль, но я не уверен, как это сделать и есть ли на самом деле какой-либо способ. Я искал это очень долго. Я хотел бы помочь.

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

async function GetDate(userid) {
  if (!userid) return message.reply('')
}

Bot.on("message", async(message) => {
    let messageArray = message.content.split(" ");
    let cmd = messageArray[0];
    let args = messageArray.slice(1);
    
    if(cmd === `!GetDate`) {
      let User = args[0]
      
      message.reply(`${User} is a member since 2020-02-17`)
    }
});

I

1 Ответ

0 голосов
/ 18 февраля 2020

Вы можете прослушать событие guildMemberUpdate, затем извлечь журнал аудита с типом memberRoleUpdate и получить журнал аудита.

bot.on('guildMemberUpdate', (oldMember, newMember) => {
    if(oldMember.roles.size < newmember.roles.size) {
        const fetchedLogs = await oldMember.guild.fetchAuditLogs({
        limit: 1,
        type: 'MEMBER_ROLE_UPDATE',
    });

        const roleAddLog = fetchedLogs.entries.first();
        if (!roleAddLog ) return;
        const { executor, target, extra } = kickLog;
        console.log(`Role ${extra.name} added to ${<@target.id>} by ${<@executor.id>}`)
    }
});

V2

О, так что вы можете получить роль по ID и получить роль createdAdd

client.on('message', message => {
    let targetRole = message.guild.roles.get('PLACEROLEID')
    if(targetRole) console.log(targetRole.createdAt)
});
...