import os import json import time from datetime import datetime, timedelta import telebot global USERS_BALANCE TEA_PRICE = 0.2 # цена чашки чая USERS_BALANCE = {} # баланс пользователей (user_id: [balance, last_time_teapot]) BASE_DIR = os.path.dirname(os.path.abspath(__file__)) BASE_NAME = 'data.json' DB_PATH = os.path.join(BASE_DIR, BASE_NAME) # если базы данных нет, то создаем новую if not os.path.exists(DB_PATH): with open(DB_PATH, 'w') as f: json.dump({}, f) # загружаем базу данных with open(DB_PATH, 'r') as f: USERS_BALANCE = json.load(f) #Загружаем токен из базы bot = telebot.TeleBot(USERS_BALANCE['token']) @bot.message_handler(commands=['start']) def start_message(message): bot.reply_to(message, 'Привет, я бот для чаепитий! ' 'Чтобы выпить чашку чая напиши /tea. ' 'Для проверки баланса напиши /bal.') @bot.message_handler(commands=['tea']) def tea_message(message): global USERS_BALANCE user_id = str(message.from_user.id) user_name = message.from_user.username if not user_id in USERS_BALANCE: USERS_BALANCE[user_id] = [0.0, ''] # проверяем, можно ли выпить чай try: last_teapot_time = datetime.strptime(USERS_BALANCE[user_id][1], '%Y-%m-%d %H:%M:%S') time_delta = datetime.now() - last_teapot_time if time_delta.seconds < 1800: bot.reply_to(message, f'Ты уже пил чай {time_delta.seconds//30} минут назад. \n' f'Чай будет готов через {(30 - time_delta.seconds//30)} минут. ☕️') return except: pass # обновляем баланс пользователя balance = USERS_BALANCE[user_id] print(balance) balance[0] += TEA_PRICE balance[1] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') USERS_BALANCE[user_id] = balance with open(DB_PATH, 'w') as f: json.dump(USERS_BALANCE, f) # записываем изменения в базу данных bot.reply_to(message, f'Ты выпил чашку чая. ☕️') @bot.message_handler(commands=['bal']) def balance_message(message): user_id = str(message.from_user.id) # проверяем баланс пользователя user_balance = USERS_BALANCE[user_id][0] bot.reply_to(message, f'Твой баланс: {user_balance} литров. ☕️') bot.polling(none_stop=True)