2016-09-01 2 views
1

Как организовать словарь доступных команд для бота Telegram? Как это делают хорошие программисты? Я знаю, что написание десятков заявлений if - плохая идея, а также заявление switch.Телеграмма бота: гироскопия доступных команд

На данный момент он реализован с помощью switch:

  1. бот получает команду
  2. находит его в течение switch
  3. Процессы команды
  4. отправляет ответ пользователю

Но когда есть десятки команд, оператор switch bec omes трудно поддерживать. Каков общий способ решения этой проблемы?

ответ

1

Я не кодер Python, но кажется, что ваша проблема должна быть решена с помощью структуры данных associative array, независимо от используемого вами языка. Фактическое название структуры может варьироваться от языка к языку: например, в C++ он называется map, а в Python это ... dictionary! Таким образом, вы несколько раз написали соответствующее ключевое слово в своем вопросе (даже на языке оригинала).

подшипника выше в виду, эскиз вашей программы может выглядеть следующим образом:

#!/usr/bin/python 

# Command processing functions: 
def func1(): 
    return "Response 1" 

def func2(): 
    return "Response 2" 

# Commands dictionary: 
d = {"cmd1":func1, "cmd2":func2} 

# Suppose this command was receiced by the bot: 
command_received = "cmd1" 

# Processing: 
try: 
    response = d[command_received]() 
except KeyError: 
    response = "Unknown command" 

# Sending response: 
print response 
+0

Я хотел бы добавить, что хороший пример будет реализация маршрутизатора в Питона серверных структур, таких как [Django] (HTTP : //www.django-rest-framework.org/api-guide/routers/). –

Смежные вопросы