Кривое сравнение значений JSON хранилища, почему?
from discord.ext import commands
import json
import os
import asyncio
bot = commands.Bot(command_prefix='7')
os.chdir(r'D:\Sublime Text 3\dis\test_systems\json_files')
@bot.command()
async def Test(message):
with open('parametr.json', 'r') as f:
users = json.load(f)
await update_data(users, message.author)
await add_Z(users, message.author, 10000)
await X(users, message.author)
await sendd(message)
with open('parametr.json','w') as f:
json.dump(users, f)
async def update_data(users, user):
if not str(user.id) in users:
users[str(user.id)] = {}
users[str(user.id)]['Z'] = 0
users[str(user.id)]['X'] = 15000
async def add_Z(users, user, parametr):
users[str(user.id)]['Z'] += parametr
async def X(users, user):
users[str(user.id)]['X'] == 15000
async def sendd(message):
await message.channel.send(f'Успешно!')
with open('parametr.json', 'r') as f:
users = json.load(f)
if 'Z' > 'X':
await message.channel.send('да')
else:
await message.channel.send('Нет')
Сам код работает идеально, все значения в хранилище добавляет и всё делает как и должно. Но сравнение выдаёт только одно значение, то что Z больше X, хотя в хранилище наоборот.
X всегда остаётся 15000, тут ошибок нет.
{"293396418834464768": {"Z": 10000, "X": 15000}}
Почему возникает ошибка?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
if 'Z' > 'X':
await message.channel.send('да')
else:
await message.channel.send('Нет')
Мне кажется тут у вас ошибка. Вы сравниваете константные строки. Тут всегда будет True, потому что как код символа Z конечно же больше кода символа X.
Наверное, вы тут хотели сравнить что-то другое, а не просто символы 'Z' и 'X'. Например:
if users[str(user.id)]['Z'] > users[str(user.id)]['X']:
Только надо достать ещё из message как-то user.id, а я в discord не силён, возможно это будет message.author.id:
if users[str(message.author.id)]['Z'] > users[str(message.author.id)]['X']: