有没有办法检查何时添加了某人的角色? [不和谐.js]

Posted

技术标签:

【中文标题】有没有办法检查何时添加了某人的角色? [不和谐.js]【英文标题】:Is there a way to check when someone's role was added? [Discord.js] 【发布时间】:2020-06-01 16:11:58 【问题描述】:

我正在尝试获取某人获得角色的日期,但我不确定该怎么做以及是否真的有任何方法。我一直在寻找这个很长时间。我希望得到一些帮助。

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`)
    
);

【问题讨论】:

您必须搜索审核日志,但可以这样做。这不是一件容易的事,可能比单个 SO 答案所能提供的要多。我建议查看 GuildAuditLogs 的官方文档。 这取决于最近添加角色的时间。如果它在可用审计日志的持续时间内,那么是的,但审计日志似乎有限制。 【参考方案1】:

您可以监听事件guildMemberUpdate,然后获取类型为memberRoleUpdate 的审计日志并获取审计日志全文。

bot.on('guildMemberUpdate', (oldMember, newMember) => 
    if(oldMember.roles.cache.size < newMember.roles.cache.size) 
        const fetchedLogs = await oldMember.guild.fetchAuditLogs(
        limit: 1,
        type: 'MEMBER_ROLE_UPDATE',
    );
    
        const roleAddLog = fetchedLogs.entries.first();
        if (!roleAddLog ) return;
        const  executor, target, changes = roleAddLog;
        console.log(`Role $changes[0].new[0].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)
);

【讨论】:

谢谢,但这不是我想要的。我想检查添加某人角色的日期。 我正在编辑我的答案,您可以通过 ID 获取角色并获取 .createdAT,因此它是创建角色的日期 我想做一些事情,当你使用命令 !getinfo (user) 时,它会在用户获得角色时输出。例如。 !getinfo @CoolGuy#1234。它会输出类似 CoolGuy#1234 got role called : "Member" at (date)。 所以您需要将我的第一个答案的操作插入数据库,然后选择它。当某些角色被添加到用户时,Discord 不会更改日期。 (任何简单的解决方案)。 1 个用户可以拥有 10、20、50、100 或 200 个角色,因此您必须知道要跟踪的角色。

以上是关于有没有办法检查何时添加了某人的角色? [不和谐.js]的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试让不和谐的机器人根据某人加入服务器后的时间赋予角色

如何让一个不和谐的 js 机器人在某人获得某个角色后向他发送消息

有没有办法让机器人知道公会成员何时登录不和谐服务器?

我如何在不和谐中 ping 某人

不和谐.JS |发布特定链接后自动踢某人?

如何修剪没有特定角色的不和谐用户?