You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.6 KiB

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 user_id in USERS_BALANCE:
last_teapot_time = datetime.strptime(USERS_BALANCE[user_id][1], '%Y-%m-%d %H:%M:%S')
print(last_teapot_time)
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
# обновляем баланс пользователя
balance = USERS_BALANCE[str(user_id)]
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 = message.from_user.id
# проверяем баланс пользователя
user_balance = USERS_BALANCE.get(user_id, [0, ''])[0]
bot.reply_to(message, f'Твой баланс: {user_balance} литров. ☕️')
bot.polling(none_stop=True)