It's my tg bot for schedule. version 0.1

This commit is contained in:
Niken
2025-10-04 16:59:38 +03:00
commit 58b47bec5e
16 changed files with 767 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
from aiogram import types, Dispatcher, Bot
from aiogram.filters import Command
from models.state import BotState
from config import Config
from utils.antispam import admin_required
from services.watcher_service import WatcherService
def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
@dp.message(Command("log"))
@admin_required(3)
async def send_log(message: types.Message):
"""Отправка логов"""
try:
log_file = types.FSInputFile(Config.LOG_FILE)
await message.answer_document(log_file, caption="📑 Логи бота")
except FileNotFoundError:
await message.answer("Файл логов пока не создан.")
@dp.message(Command("status"))
@admin_required(3)
async def send_status(message: types.Message):
"""Статус бота"""
from utils.analytics import analyze_bot_logs
from utils.mac_metrics import get_macbook_battery_level
try:
stats = analyze_bot_logs(Config.LOG_FILE)
batt = await get_macbook_battery_level()
status_text = (
"🤖 СТАТУС БОТА\n"
"══════════════\n"
f"✅ Uptime: {stats.get('uptime_percentage', 0)}%\n"
f"⏱️ Слежка расписания: {'ВКЛ' if state.watcher_work else 'ВЫКЛ'}\n"
f"🔋 Уровень заряда: {batt}%"
)
await message.answer(status_text)
except Exception as e:
await message.answer(f"❌ Ошибка при проверке статуса: {str(e)}")
@dp.message(Command("power"))
@admin_required(2)
async def power_control(message: types.Message):
"""Управление слежкой"""
args = message.text.split()
if len(args) < 2:
status = "включена" if state.watcher_work else "выключена"
await message.answer(f"⏱️ Слежка расписания: {status}")
return
command = args[1].lower()
watcher_service = WatcherService(state, bot)
if command == "on" and not state.watcher_work:
await watcher_service.start()
await message.answer("✅ Слежка расписания включена")
elif command == "off" and state.watcher_work:
await watcher_service.stop()
await message.answer("❌ Слежка расписания выключена")
else:
await message.answer("❌ Неверная команда")