Проблема с сохранением данных в переменные в вашем коде связана с тем, что вы пытаетесь передать значения переменных, таких как `count_price` и `count_all`, в функцию обработчика сообщений (`handle_text`) как параметры. Это не сработает, потому что в этом случае функции всегда будут получать значения по умолчанию, как указано в сигнатуре функции.
Вместо этого вам нужно использовать глобальные переменные (или хранить данные в словаре, как вы делаете с `user_state`) и использовать их внутри функций. Давайте исправим ваш код следующим образом:
```python
import telebot
from telebot import types
token = '' # Вставьте ваш токен
bot = telebot.TeleBot(token)
# Глобальные переменные для хранения суммы
count_price = 0 # сумма за текущий месяц
count_all = 0 # сумма за все время
user_state = {}
MAIN_MENU = 0 # главное меню
FIRST_WORK_MENU = 1 # меню работ
ADD_WORK_MENU = 2 # меню добавления работ
@bot.message_handler(commands=['start'])
def start(message):
user_id = message.from_user.id
user_state[user_id] = MAIN_MENU
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Главное меню")
btn2 = types.KeyboardButton("ℹ️ Информация")
btn3 = types.KeyboardButton("ℹ️️ начать подсчет зарплаты")
btn4 = types.KeyboardButton("ℹ️️ итог за месяц")
btn5 = types.KeyboardButton("ℹ️ итог за все время")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, "Добро пожаловать! Выберите пункт меню:", reply_markup=markup)
@bot.message_handler(content_types=['text'])
def handle_text(message):
global count_price, count_all # Указываем, что используем глобальные переменные
if message.text == "Главное меню": # кнопка главного меню
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Главное меню")
btn2 = types.KeyboardButton("ℹ️ Информация")
btn3 = types.KeyboardButton("ℹ️️ начать подсчет зарплаты")
btn4 = types.KeyboardButton("ℹ️️ итог за месяц")
btn5 = types.KeyboardButton("ℹ️ итог за все время")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, "Вы вернулись в главное меню.", reply_markup=markup)
elif message.text == "ℹ️️ начать подсчет зарплаты":
count_price += 100 # Зап пример, увеличить count_price на 100
bot.send_message(message.chat.id, f"Начат подсчет зарплаты. Текущая сумма: {count_price}")
elif message.text == "ℹ️️ итог за месяц":
bot.send_message(message.chat.id, f"Итог за месяц: {count_price}")
elif message.text == "ℹ️ итог за все время":
bot.send_message(message.chat.id, f"Итог за все время: {count_all}")
# Добавьте другие условия для обработки других кнопок по аналогии
bot.polling(none_stop=True)
```
### Объяснение изменений:
1. **Использование глобальных переменных:** Мы добавили `global count_price, count_all` в начале функции `handle_text`, чтобы указать, что мы хотим работать с глобальными переменными, а не создаем новые локальные переменные.
2. **Условные ветки:** Мы добавили функциональность для нескольких кнопок, обрабатывая текстовые команды, чтобы вы могли видеть, как изменяются `count_price` и `count_all` при нажатии кнопок.
Теперь при нажатии кнопки соответствующие суммы будут обновляться, и вы сможете их отображать в чате. Вы можете продолжать расширять логику обработки, добавляя остальные кнопки и их действия.