python - 使用 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 中已经内置的更简单的东西?
解决方案
Discord 用户只能通过 ID 或用户名#discriminator 唯一识别。
假设您能够从有问题的用户输入中识别它,您可以轻松地从 User 对象中获取 ID。
带有 .txt 扩展名的 .JSON 文件是矛盾的,您应该将 JSON 数据存储在 JSON 文件而不是文本文件中。
另外,我建议使用数据库而不是 JSON 文件,因为这样做有很多优点,而继续使用 JSON 文件有很多缺点。
推荐阅读
- python - PySide:QFileSystemModel - 显示/显示根项目
- c++ - 从静态二进制文件中使用 dlopen 时 -rdynamic 不起作用
- css - 文本和背景颜色成表格
- qt - vlc-qt 是否能够获取 RAW 音频数据?
- python - Python:成本计算计算器输出
- python-3.x - 如何从 gensim Word2Vec 嵌入向量中嵌入句子?
- c# - 如何通过 Photon PUN 同步变量
- notepad++ - 在 Notepad++ 中将 SQL 设置为 .pks 和 .pkb 文件的语言
- java - JSON 到 Java 对象 - 无法识别的字段,未标记为可忽略
- mysql - MySQL:连接两个信息,返回一个虚拟列并依次执行与该列的 INNER JOIN