Python 使用Discord用户ID在.JSON文件中存储数据

Python 使用Discord用户ID在.JSON文件中存储数据,python,json,python-3.x,discord.py,Python,Json,Python 3.x,Discord.py,我觉得这个问题的标题让整个事情变得更加混乱。但这里有一个很长的问题: 我有一个bot,它使用.JSON文件存储用户在创建时输入的信息。但是,为了确保他们只创建一个文件,我将它绑定到他们的唯一ID。这确保了即使用户更改昵称,他也只能为自己创建一个文件。当然,后台的.JSON文件将命名为“123456789.txt” 这已成功完成,但我希望添加bot命令,允许其他用户获取存储在该用户文件中的信息。例如,如果Joe想看看Ned最喜欢的颜色是什么,他可以使用以下简单命令: !彩色奈德 bot将处理Ne

我觉得这个问题的标题让整个事情变得更加混乱。但这里有一个很长的问题:

我有一个bot,它使用.JSON文件存储用户在创建时输入的信息。但是,为了确保他们只创建一个文件,我将它绑定到他们的唯一ID。这确保了即使用户更改昵称,他也只能为自己创建一个文件。当然,后台的.JSON文件将命名为“123456789.txt”

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

!彩色奈德
bot将处理Ned的.JSON文件(123456789.txt),查找“color”键下存储的值,并打印结果

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

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

{
“Ned”:“123456789”
“乔”:“234567891”
“山姆”:“345678912”
}

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

discord用户只能通过ID或用户名识别器进行唯一识别。
您可以很容易地从用户对象获取ID,因为您可以从相关的用户输入中识别它

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


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

成员转换器是否适合您的需要?坚持使用ID,因为用户名#鉴别器可以更改(nitro或只是更改您的用户名)。如果数据可以扩大范围,我同意推荐使用数据库,但如果只是存储简单的东西(如喜爱的颜色),那么使用JSON也可以。通过用户名#鉴别器检索用户也可以,因为他们的ID仍然相同。至于使用数据库,这取决于数据对他们有多重要,以及他们拥有多少数据,但通常情况下,您希望将来证明。用户名#鉴别器不能保证返回相同的用户。例如,如果我的组合是Benjin#1234,而使用Nitro的人使用用户名#discriminator,那么我的组合将被更改。查询Benjin#1234将生成另一个帐户,而不是我的帐户。使用ID不会导致这种情况。Nitro不允许您使用其他人的鉴别器。这不是它的工作原理。您只能选择一个免费用户名#鉴别器组合。无论如何,即使您自己更改了鉴别器,通过新用户名#鉴别器检索用户对象也会产生具有相同ID的用户对象。您的ID不会更改。正如我所说,username#discriminator唯一地标识一个用户,使用username#discriminator检索相应的用户对象以获取其ID没有什么错。