#python #json #python-jsons
#питон #json #python-jsons
Вопрос:
Итак, вот как я настроил файл JSON:
async def openinf(): with open("infractions.json", "r") as f: users = json.load(f) return users async def createinfraction(user, type, mod, date, caseid): users = await openinf() users[str(user.id)] = {} users[str(user.id)]["type"] = type users[str(user.id)]["mod"] = mod.id users[str(user.id)]["date"] = date users[str(user.id)]["caseid"] = caseid with open("infractions.json", "w") as f: json.dump(users, f) print("done function") return True
Это приведет к печати этого в файле json: {"581457749724889102": {"type": "Warning", "mod": 581457749724889102, "date": "04/12/2021 18:52:28", "caseid": "f59427df-552a-11ec-8dfd-e03f49c55de5"}}
Теперь я попытался сделать это:
try: users = await openinf() type = users[str(member.id)]["type"] modid = users[str(member.id)]["mod"] date = users[str(member.id)]["date"] caseid = users[str(member.id)]["caseid"] embed = discord.Embed(title = f"Infractions for {member}", colour = 0x0f9492) i = 1 mod = await client.fetch_user(modid) for user in users: if user == member.id: print("yes") i = 1 embed.add_field(name= f"Infraction #{i}", value = f"**{type}** nCase ID: {caseid}nModerator: {mod}nDate:{date}n", inline = False )
Но это мне не помогает, он не возвращает никаких ошибок (я поставил исключение, которое напечатало бы ошибку после). Я предполагаю, что я неправильно получил объект id.
Комментарии:
1. Вопрос мне не ясен. Вы хотите вернуть значение из файла json (infractions.json) с помощью функции?
2. да, в основном мне нужен идентификатор (581457749724889102 в приведенном мною примере)
3.Вы пробовали
users
? Заворачивание всего в одеялоtry
except
-не лучший способ отладки. Позвольте ошибке произойти, если это произойдет, и включите обратную связь в свой вопрос.4. Возможно, вы пропустили какой-то код, но нет никаких причин для того, чтобы любая из этих функций была асинхронной. Они ничего не ждут и, как таковые, блокируют функции.
Ответ №1:
если user == member.id:
это неправильно, так как ключ dict user
-это не число, а строка.
вам нужно ввести приведение его к целому числу, чтобы выполнить сравнение
if int(user) == member.id: ...
или
if user == str(member.id): ...
делает свое дело.
Как вы уже набрали, приведите member.id несколько раз переместите это в свою собственную переменную и используйте ее в коде.
member_id = str(member.id)