javascript - 为什么我无法获取发布/删除角色的用户的昵称?
问题描述
我试图找出谁从日志中删除/发布了一个角色,但它没有出现我尝试了不同的方式但没有成功,请帮忙。
module.exports = {
name: 'guildMemberUpdate',
once: false,
async execute(oldMember, newMember) {
try {
const fetchedLogs = await newMember.guild.fetchAuditLogs({
limit: 1,
type: 'MEMBER_UPDATE',
});
const memberLog = fetchedLogs.entries.first();
if (!memberLog) return console.log(`${newMember.displayName} sam`);
const { executor, target } = memberLog;
if (oldMember.roles.cache.size < newMember.roles.cache.size) {
const role = newMember.roles.cache.difference(oldMember.roles.cache).first();
if (entry.target.id === newMember.user.id) {
console.log(`${new Date().toLocaleString('ru-RU', { timeZone: 'Europe/Moscow', hour12: false })} Роль: ${role.name} выдал - ${executor.tag} пользователю - ${newMember.displayName} - <@${newMember.user.id}>`)
}
if (oldMember.roles.cache.size > newMember.roles.cache.size) {
const role = newMember.roles.cache.difference(oldMember.roles.cache).first();
if (entry.target.id === newMember.user.id) {
console.log(`${new Date().toLocaleString('ru-RU', { timeZone: 'Europe/Moscow', hour12: false })} Роль: ${role.name} снял - ${executor.tag} пользователю - ${newMember.displayName} - <@${newMember.user.id}>`)
}
}
}
} catch (err) {
return console.log(`Error: ${err.stack}`)
}
}
};
解决方案
GuildAuditLogsEntry.executor
是一个User
实例。要获取GuildMember
带有昵称、角色等的版本,您可以在GuildMember
's guild 中查找用户。您可以这样做:
newMember.guild.members.resolve(executor)
请记住,这依赖于缓存。获取也是一种选择(这是一个承诺!):
await newMember.guild.members.fetch(executor.id)
推荐阅读
- r - 名称(x)中的 gam 函数错误 <- 值:“名称”属性必须与向量的长度相同
- c# - Azure Service Fabric 错误:访问被拒绝。部署失败
- laravel - 如何在用户表的单个字段中存储多个复选框项目,以便如果我想搜索特定项目,我可以在 laravel 中做到这一点?
- paypal - 贝宝如何通知您计费计划付款?
- javascript - 如何为 Google 表格中单元格值更改的弹出按钮创建脚本?
- python - 合并两列,同时优先第一列
- php - FOSuser Bundle - 用户可以有多个帐户,如何在它们之间切换
- r - 在 igraph 图中获取边缘标签的子集
- ios - Flutter 应用程序未在真实的 iOS 设备上运行
- python - argparse 一个或两个参数之间的互斥