как можно сделать так чтобы бот писал дату выданной роли пользователю тип когда пользователь был принят на роль Discord.js
как можно сделать так чтобы бот писал дату выданной роли пользователю тип когда пользователь был принят на роль?
Ответы (1 шт):
Дискорд по умолчанию не хранит информацию о том, когда и какая роль была выдана пользователю. Вы можете использовать метод guildMemberUpdate, затем получитить получить событие из журнала аудита (обновление ролей пользотеля) memberRoleUpdate.
Таким образом вы можете получить информацию о выданной роли, далее необходимо определиться с хранением данной информации (База данных, JSON файл и т.д.), решить будите ли выперезаписывать дату выдачи роли или будуте хранить всю историю изменений.
Вот пример, как можно получить информацию о выданной роли, к сожалению с дальнейшей проработкой вопроса помочь не могу, так это требует больше деталей от Вас и будет весьма ресурсоемкой задачей :)
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 } = roleAddLog;
console.log(`Role ${extra.name} added to ${<@target.id>} by ${<@executor.id>}`)
}
});