首页 > 解决方案 > 使用 Discord 用户 ID 将数据存储在 .JSON 文件中

问题描述

我觉得这个问题的标题只是让整个事情变得更加混乱。但这是它的长篇:

我有一个机器人,它使用 .JSON 文件来存储用户在创建时放入其中的信息。但是,为了确保他们正在创建一个且仅一个文件,我已将其与他们的唯一 ID 绑定。这确保了即使用户更改昵称,他也只能为自己创建一个文件。当然,后台的 .JSON 文件会被命名为 '123456789.txt'。

这已成功完成,但我想添加机器人命令,以允许其他用户获取存储在该用户文件中的信息。因此,例如:如果 Joe 想查看 Ned 最喜欢的颜色是什么,他可以使用一个简单的命令,例如:

!favcolor Ned

机器人会细化 Ned 的 .JSON 文件 (123456789.txt),查找键“color”下存储的值,并打印出结果。

问题不在于我找不到人们的用户 ID ( ctx.message.author.id)。问题是我不知道如何让其他人这样做,因为据我所知,没有办法确保当有人在 '!favcolor' 和 'Ned' 之前,机器人会找到123456789.txt。

目前我能想到的唯一解决方案是在创建获取用户唯一 ID 的文件时维护一个 .JSON 文件,然后将其与用户名配对。就像是:

{
"Ned": "123456789"
"Joe": "234567891"
"Sam": "345678912"
}

等等。然后它只查看那个 JSON,并获取正确的 ID。这是一个好方法吗?还是我错过了 discord.py 中已经内置的更简单的东西?

标签: pythonjsonpython-3.xdiscord.py

解决方案


Discord 用户只能通过 ID 或用户名#discriminator 唯一识别。
假设您能够从有问题的用户输入中识别它,您可以轻松地从 User 对象中获取 ID。

带有 .txt 扩展名的 .JSON 文件是矛盾的,您应该将 JSON 数据存储在 JSON 文件而不是文本文件中。

另外,我建议使用数据库而不是 JSON 文件,因为这样做有很多优点,而继续使用 JSON 文件有很多缺点。


推荐阅读