Я кодирую бота, используя API-интерфейс discord.py, пытался смоделировать switch / case для различных команд боту
Я прочитал в Интернете, что могу использовать switcher = { *some value* : *function* }
для имитации switch / case, но при определенных значениях она запускает каждую функцию вместо соответствующей
async def command_switcher(argument, message, parameters):
switcher= {
">autovc": await autovc_command_switcher(parameters[1], message,
parameters) if (len(parameters) > 1) else await
autovc_invalid(message),
">help": await default_help(message),
">vcgroup": await autovc_invalid(message)
}
return switcher.get(argument, "Invalid")
Я вызываю command_switcher
и передаю аргумент, если аргумент ">help"
, тогда он правильно только запускаетdefault_help()
функция, но если я передаю ">autovc"
, она запускает все 3 функции
Редактировать : также, если я переключаю порядок записей, она все равно будет иметь тот же результат:">help"
по-прежнему работает только сам, а ">autovc"
по-прежнему запускает все 3
Редактировать 2 : Решено Спасибо за комментарии, пытаясь создать правильный MCVEкак было рекомендовано, и, увидев комментарий о том, что значения dict являются объектами функции, я понял, что неправильно вызывал функции, а не ссылался на сам объект функции.У меня также были некоторые проблемы с async / await, но комментарий, связывающий меня с https://xinhuang.github.io/posts/2017-07-31-common-mistakes-using-python3-asyncio.html, прояснил это и для меня