Search code examples
telegram-botpython-telegram-botphp-telegram-bot

Telegram bot: a dirctionary of available commands


How to organize a dictionary of available commands for a Telegram bot? How do good programmers do it? I know that writing dozens of if statements is a bad idea, as well as a switch statement.

For now it's implemented using switch:

  1. The bot receives a command
  2. Finds it in a switch
  3. Processes the command
  4. Sends the response to the user

But when there are dozens of commands, the switch operator becomes hard to maintain. What is the common way to solve this problem?


Solution

  • I'm not a Python coder, but it seems that your problem should be solved with with an associative array data structure regardless the language you use. The actual name of the structure may vary from language to language: for example, in C++ it is called map, and in Python it is.. dictionary! Thus, you several times wrote the relevant keyword in your question (even in the original language).

    Bearing the above in mind, a sketch of your program may look like this:

    #!/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