Проверка, есть ли определенная переменная в .json файле

пытаюсь сделать что-то похожее на регистрацию в чат-игре на Python для Discord. Я пытаюсь сделать так, чтобы пользователь мог зарегистрировать в ней только один раз. Сама регистрация работает отлично, но проверка абсолютно нет. Можете ли вы как-то помочь, пожалуйста?

@bot.command()
async def getstart(ctx):
    await ctx.send('placeholder (welcome message here)')
    with open("config.json") as feedsjson:
        feeds = json.load(feedsjson)
        if not {"name": f"{ctx.message.author.id}"} in feeds:
            await ctx.send('placeholder (we can add user in json file)..')
            getstartinsocialcredit(ctx.message.author.id, 0)
        else:    
            return await ctx.send('placeholder (user already in json file)')

Что должно получиться по итогу. Пользователь регистрируется один раз, а далее, если он вновь напишет команду (скажем sc.getstart), то ему напишет бот: "Вы уже в Базе! Не могу вас добавить вновь", или по что-то похожее.


Ответы (1 шт):

Автор решения: Proksima

Проблема вашего решения в том, что вы сравниваете словарь {"name": f"{ctx.message.author.id}"} с {"name": 995336851030290462, "sc": 0}, что никогда равно не будет, т.к во втором случае в словаре есть ключ "sc".

Могу предложить вот такое решение взамен:

l = [{"name": 995336851030290462, "sc": 0}, {"name": 905279830467581057, "sc": 0},
     {"name": 129057210578125985, "sc": 0}, {"name": 502801758921868921, "sc": 0}]

searchingId = 129057210578125985
a = True if list(filter(lambda x: x['name'] == searchingId, l)) else False
print(a)

→ Ссылка