#python #json #discord.py
#python #json #discord.py
Вопрос:
Я создаю discord-бота. Необходимо отправить аргументы команды в словарь, а затем в json. Сначала как ключ, а затем как массив.
НО! Он отправляет только второй и третий аргументы.
@client.command(pass_context=True)
async def next(ctx,name,time):
author = ctx.message.author
#role authentification
if "561139623250755585" in [y.id for y in author.roles]:
rere = time ' ' date
db = dict(name = rere)
with open("time.json" , "a") as file:
json.dump(db, file)
with open("time.json" , "r") as fil:
Dec = json.load(fil)
Out = Dec[name]
await client.say(Out)
else:
with open("time.json" , "r") as file:
Dec = json.load(file)
Out = Dec[name]
await client.say(Out)
Как вы видите в коде, он должен преобразовать три аргумента в dict . НО! похоже, что python передает это здесь db = dict(name = rere)
и использует как ключ здесь Out = Dec[name]
При вводе /next gg gg gg
он возвращается в json {"name":'gg gg'}
и эта ошибка в консоли Out = Dec[name]
KeyError: 'gg'
Как это исправить?
Комментарии:
1. Чем дольше я смотрю на ваш код, тем меньше в нем смысла. Что вы пытаетесь сделать?
Ответ №1:
При использовании dict
функции для создания словаря аргумент ключевого слова преобразуется в ключевое слово. Например, если бы вам понравилось это, dict(username=rere)
вы бы получили { 'username': 'gg gg' }
.
Чтобы получить содержимое name
переменной, вы можете поступить следующим образом:
db = {}
db[name] = rere
или
db = { name: rere }
В обоих случаях содержимое переменной name
будет использоваться в качестве ключа в словаре.