Upload files to "/"
This commit is contained in:
commit
d6acf9ccb2
126
ebot.py
Normal file
126
ebot.py
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
import telebot
|
||||
import sqlite3
|
||||
import random
|
||||
import time
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
TOKEN = "8554851929:AAFOvEGDbmnmwusAdEjv7j1QNaqJ_-lMLCw"
|
||||
bot = telebot.TeleBot(TOKEN)
|
||||
|
||||
DB_NAME = "energy.db"
|
||||
COLLECT_COOLDOWN = 3600 # 1 час
|
||||
|
||||
# ---------- БАЗА ДАННЫХ ----------
|
||||
def init_db():
|
||||
with sqlite3.connect(DB_NAME) as conn:
|
||||
conn.execute("""
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
user_id INTEGER PRIMARY KEY,
|
||||
username TEXT,
|
||||
energy INTEGER DEFAULT 0,
|
||||
registered_at TEXT,
|
||||
last_collect INTEGER DEFAULT 0
|
||||
)
|
||||
""")
|
||||
|
||||
def get_user(user_id):
|
||||
with sqlite3.connect(DB_NAME) as conn:
|
||||
cur = conn.execute("SELECT * FROM users WHERE user_id = ?", (user_id,))
|
||||
return cur.fetchone()
|
||||
|
||||
def register_user(user_id, username):
|
||||
with sqlite3.connect(DB_NAME) as conn:
|
||||
conn.execute(
|
||||
"INSERT INTO users (user_id, username, registered_at) VALUES (?, ?, ?)",
|
||||
(user_id, username, datetime.now().strftime("%d.%m.%Y"))
|
||||
)
|
||||
|
||||
# ---------- УТИЛИТЫ ----------
|
||||
def format_energy(kw):
|
||||
if kw >= 1_000_000:
|
||||
return f"{kw / 1_000_000:.2f} ГВт⋅ч"
|
||||
elif kw >= 1000:
|
||||
return f"{kw / 1000:.2f} МВт⋅ч"
|
||||
else:
|
||||
return f"{kw} кВт⋅ч"
|
||||
|
||||
# ---------- СТАРЫЙ ТЕКСТ ----------
|
||||
REPLY_TEXT = "⚡️ На данный момент отсутствует электроэнергия, Rezoc Bot временно недоступен."
|
||||
OLD_KEYWORDS = r'\b(ботр|кд|огород|ловить|ебот|медали|погода|ловушка|копать|королевство|/bal|/kd)\b'
|
||||
|
||||
# ---------- ТОП ----------
|
||||
@bot.message_handler(commands=['etop'])
|
||||
def top_handler(message):
|
||||
with sqlite3.connect(DB_NAME) as conn:
|
||||
rows = conn.execute(
|
||||
"SELECT username, energy FROM users ORDER BY energy DESC LIMIT 15"
|
||||
).fetchall()
|
||||
|
||||
if not rows:
|
||||
bot.reply_to(message, "Топ пока пуст 😔")
|
||||
return
|
||||
|
||||
text = "🏆 ТОП 15 по энергии\n\n"
|
||||
for i, (username, energy) in enumerate(rows, 1):
|
||||
name_display = username if username else f"User {i}"
|
||||
text += f"{i}. {name_display}: {format_energy(energy)}\n"
|
||||
|
||||
bot.reply_to(message, text)
|
||||
|
||||
# ---------- /start ----------
|
||||
@bot.message_handler(commands=['start'])
|
||||
def start_handler(message):
|
||||
bot.reply_to(message, ('Чтобы начать игру введите "квт"'))
|
||||
|
||||
# ---------- ХЕНДЛЕР ----------
|
||||
@bot.message_handler(func=lambda m: m.text is not None)
|
||||
def main_handler(message):
|
||||
text = message.text.lower()
|
||||
user_id = message.from_user.id
|
||||
username = message.from_user.first_name or f"User{user_id}"
|
||||
|
||||
# ---------- Мини-игра ----------
|
||||
if text == "квт" or text == "профиль":
|
||||
user = get_user(user_id)
|
||||
if not user:
|
||||
register_user(user_id, username)
|
||||
user = get_user(user_id)
|
||||
|
||||
# СОБРАТЬ
|
||||
if text == "квт":
|
||||
now = int(time.time())
|
||||
last = user[4]
|
||||
ban = user[5] # last_collect
|
||||
|
||||
if now - last < COLLECT_COOLDOWN:
|
||||
wait = (COLLECT_COOLDOWN - (now - last)) // 60
|
||||
bot.reply_to(message, f"⏳ Рано. Попробуй через {wait} мин.")
|
||||
return
|
||||
|
||||
gain = random.randint(1, 100)
|
||||
with sqlite3.connect(DB_NAME) as conn:
|
||||
conn.execute(
|
||||
"UPDATE users SET energy = energy + ?, last_collect = ? WHERE user_id = ?",
|
||||
(gain, now, user_id)
|
||||
)
|
||||
bot.reply_to(message, f"⚡ Ты собрал {gain} кВт⋅ч энергии!\nБаланс - профиль\nТоп 15 - /etop")
|
||||
return
|
||||
|
||||
# БАЛ
|
||||
if text == "профиль":
|
||||
energy = user[2] # energy
|
||||
reg_date = user[3] # registered_at
|
||||
bot.reply_to(
|
||||
message,
|
||||
f"⚡ Энергия: {format_energy(energy)}\n🏆Топ 10 - /top\n\n"
|
||||
f"📅 Регистрация: {reg_date}\n"
|
||||
f"👤 Игрок: {user[1]}"
|
||||
)
|
||||
return
|
||||
|
||||
# ---------- ЗАПУСК ----------
|
||||
init_db()
|
||||
print("⚡ Energy Bot запущен")
|
||||
bot.send_message(-1001766074965, "✅ Бот перезапущен.")
|
||||
bot.infinity_polling()
|
||||
Loading…
Reference in New Issue
Block a user