Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как в библиотеке Telebot переключаться между функциями, используя if?

Бот должен перейти к указанной функции при выполнении условия, не ожидая ничего от пользователя. Классический способ
if (message.text == "🌳Дерево🌳"):
        tree(message)
не работает, т.к. в следующей функции есть еще ветвления. Что мне нужно использовать?
ПрограммированиеИгры+5
Mr.Lev
  ·   · 1,0 K
Бакалавр Колледж, Юристпруденция  · 29 мая 2023
Вы можете использовать переменную состояния для хранения текущего состояния бота и переключать его между функциями в зависимости от условия. Например, если бот находится в состоянии "дерево", то он будет вызывать функцию для работы с этим состоянием, а если он находится в состоянии "цветок", то будет вызывать функцию для работы с этим состоянием. Вот пример кода:
state = {}
def handle_message(message):
 chat_id = message.chat.id
 if message.text == "🌳Дерево🌳":
state[chat_id] = "tree"
 tree(message)
elif message.text == "🌷Цветок🌷":
 state[chat_id] = "flower"
 flower(message)
 else:
 if chat_id in state:
 if state[chat_id] == "tree":
 # обрабатываем сообщение в состоянии "дерево" tree_message(message)
 elif state[chat_id] == "flower":
 # обрабатываем сообщение в состоянии "цветок" flower_message(message)
 else:
 # если состояние не определено, то обрабатываем сообщение по умолчанию
 default_message(message)
 else:
 # если состояние еще не определено, то обрабатываем сообщение по умолчанию
 default_message(message)

Здесь мы сохраняем состояние каждого чата в словаре
state
Когда пользователь отправляет сообщение с ключевым словом "Дерево", мы сохраняем состояние "tree" в словаре и вызываем соответствующую функцию
tree()
Если пользователь отправляет другое сообщение, мы проверяем, находится ли он в каком-то состоянии. Если да, то мы вызываем соответствующую функцию для обработки сообщения в этом состоянии. Если нет, то мы вызываем функцию по умолчанию.