【问题标题】:Discord.js How to make a Name Change History CommandDiscord.js 如何创建名称更改历史命令
【发布时间】:2019-10-01 18:25:36
【问题描述】:

我想做一个代码来显示你的名字更改历史,比如 NotSoBot

有人可以帮我吗?

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    这些机器人使用自己的数据库。 Discord 不会记录这些更改。你不能只使用 discord.js 来做到这一点。唯一的问题是,如果您的机器人不是很大,它不会非常有效,因为您的机器人无法访问每个更改用户名的用户。如果您的机器人离线或在您的机器人开始记录这些更改之前的任何用户名,则无法跟踪这些更改。

    如果您仍想这样做,请使用数据库和 discord.js 事件 userUpdate 并记录所有用户名。请注意,即使用户的头像更改或区分,此事件也会触发。

    【讨论】:

    • 昵称更改存储在审核日志中,这是不和谐机器人可以访问的内容。在某些情况下,数据库化可能会更快,但是,就像您说的那样,有很多事情会使该选项不理想。但要说You cannot do this only with discord.js 根本不正确。
    • 我认为当他说一个有过去用户名的机器人时,他说的不是一个说昵称而是用户名的机器人。所以不仅限于公会。并且如果公会有很多昵称日志,他无法一次请求获取所有内容。
    • 我明白你在说什么,是的,如果用户正在更改他们实际的不和谐用户名,唯一的记录方法是通过数据库和大量检查(最终可能是 API垃圾邮件,如果他们想要 100% 的准确度 [或接近准确度]。)但他仍然可以使用 .fecthAuditLogs 选项在一个请求中获取昵称日志(只要用户不是每秒钟都更改他们的昵称)。
    【解决方案2】:

    如果您打算使用审核日志来获取所有名称更改 - 我建议您进行一些 Documentation 研究。

    我不会为您提供您正在寻找的完整代码,而是您自己解决问题的垫脚石。

    您要做的是获取审核日志,并根据您的命令中实现的给定参数指定选项。 (即您要搜索的用户。)

    检索名称更改的简单方法:

    message.guild.fetchAuditLogs({type: 'MEMBER_UPDATE', user: 'DESIRED USER ID'}).then(async (audit) => {
            let log = audit.entries.first().changes
            console.log(log)
        })
    

    输出:

    [ { key: 'nick', old: , new: } ]
    

    Key 在昵称中是您正在寻找的。 Old 是旧昵称。 New 是新昵称。

    这应该会为您指明正确的方向,因为其余部分并不太复杂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2019-04-30
      • 2021-04-04
      • 1970-01-01
      相关资源
      最近更新 更多