Upload files to "/"

This commit is contained in:
Korenekoyp 2026-02-04 23:49:40 +03:00
commit d6acf9ccb2

126
ebot.py Normal file
View 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()