code: def flavor(msg):
      
      if 'message_id' in msg:
          return 'chat'
      elif 'id' in msg and 'chat_instance' in msg:
          return 'callback_query'
      elif 'id' in msg and 'query' in msg:
          return 'inline_query'
      elif 'result_id' in msg:
          return 'chosen_inline_result'
      elif 'id' in msg and 'shipping_address' in msg:
          return 'shipping_query'
      elif 'id' in msg and 'total_amount' in msg:
          return 'pre_checkout_query'
      else:
          top_keys = list(msg.keys())
          if len(top_keys) == 1:
              return top_keys[0]
  
          raise exception.BadFlavor(msg)
docs: Return flavor of message or event.
  
      A message's flavor may be one of these:
  
      - ``chat``
      - ``callback_query``
      - ``inline_query``
      - ``chosen_inline_result``
      - ``shipping_query``
      - ``pre_checkout_query``
  
      An event's flavor is determined by the single top-level key.