I add command /del for delite message and i improve code.

It's version 0.1.1
This commit is contained in:
Niken
2025-10-04 17:14:26 +03:00
parent 58b47bec5e
commit 7702c9a85b
4 changed files with 49 additions and 5 deletions
+11
View File
@@ -1,2 +1,13 @@
/.env
/code.txt
.DS_Store
.idea/
__pycache__/
bot.log
bot/__pycache__/
handlers/__pycache__/
models/__pycache__/
services/__pycache__/
storage/__pycache__/
utils/__pycache__/
storage/message.txt
+35 -2
View File
@@ -1,15 +1,19 @@
from aiogram import types, Dispatcher, Bot
from aiogram.types import Message
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
from storage.message_storage import load_messages, save_message, clear_messages
from logging import getLogger
logger = getLogger(__name__)
def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
@dp.message(Command("log"))
@admin_required(3)
async def send_log(message: types.Message):
async def send_log(message: Message):
"""Отправка логов"""
try:
log_file = types.FSInputFile(Config.LOG_FILE)
@@ -19,7 +23,7 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
@dp.message(Command("status"))
@admin_required(3)
async def send_status(message: types.Message):
async def send_status(message: Message):
"""Статус бота"""
from utils.analytics import analyze_bot_logs
from utils.mac_metrics import get_macbook_battery_level
@@ -40,6 +44,35 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
except Exception as e:
await message.answer(f"❌ Ошибка при проверке статуса: {str(e)}")
@dp.message(Command("del"))
@admin_required(1)
async def delete_all_messages(message: Message):
"""Удаляет все сохраненные сообщения бота"""
messages = load_messages()
if not messages:
sent = await message.answer(
"📭 Нет сохранённых сообщений для удаления.",
reply_to_message_id=message.message_id
)
save_message(sent.chat.id, sent.message_id)
return
deleted = 0
for chat_id, msg_id in messages:
try:
await bot.delete_message(chat_id, msg_id)
deleted += 1
except Exception as e:
logger.warning(f"Не удалось удалить {msg_id} в чате {chat_id}: {e}")
clear_messages()
sent = await message.answer(
f"✅ Удалено {deleted} сообщений (включая /rasp).",
reply_to_message_id=message.message_id
)
save_message(sent.chat.id, sent.message_id)
@dp.message(Command("power"))
@admin_required(2)
async def power_control(message: types.Message):
+2 -2
View File
@@ -7,10 +7,10 @@ from aiogram.types import BufferedInputFile
from models.state import BotState
from config import Config
from services.schedule_service import ScheduleService
import logging
from logging import getLogger
logger = logging.getLogger(__name__)
logger = getLogger(__name__)
class WatcherService:
+1 -1
View File
@@ -1,6 +1,6 @@
import os
MESSAGES_FILE = "messages.txt"
MESSAGES_FILE = "storage/message.txt"
# --- функция для записи message_id ---
def save_message(chat_id: int, message_id: int):