From d6acf9ccb24603f2c949d417b367b2141f6d43d2 Mon Sep 17 00:00:00 2001 From: Korenekoyp Date: Wed, 4 Feb 2026 23:49:40 +0300 Subject: [PATCH] Upload files to "/" --- ebot.py | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 ebot.py diff --git a/ebot.py b/ebot.py new file mode 100644 index 0000000..0d3285b --- /dev/null +++ b/ebot.py @@ -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() \ No newline at end of file