По умолчанию все аргументы команд являются строками.Если вы хотите, чтобы библиотека преобразовывала их для вас, вы должны указать, к какому типу вы хотите преобразовать их, предоставив converter с аннотацией типа.Если вы хотите сослаться на message
, который вызвал команду, вы также должны указать либритару передать контекст вызова в обратный вызов команды.
@client.command(pass_context=True)
async def mute(ctx, user: discord.User):
with open("muted.json", 'r') as f:
data = json.load(f)
if not user.id in data:
data[user.id] = {}
else:
await client.send_message(message.channel, "The user is already muted")
Это стоитотмечая, что эта команда на самом деле ничего не делает.Он создает словарь из файла, изменяет его, а затем удаляет его, когда функция завершается.Вместо этого у вас должен быть словарь уровня модуля data
, который загружается один раз, а затем сохраняется при каждом его изменении.