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.

76 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 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)