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 /.env
/code.txt /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 import types, Dispatcher, Bot
from aiogram.types import Message
from aiogram.filters import Command from aiogram.filters import Command
from models.state import BotState from models.state import BotState
from config import Config from config import Config
from utils.antispam import admin_required from utils.antispam import admin_required
from services.watcher_service import WatcherService 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): def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
@dp.message(Command("log")) @dp.message(Command("log"))
@admin_required(3) @admin_required(3)
async def send_log(message: types.Message): async def send_log(message: Message):
"""Отправка логов""" """Отправка логов"""
try: try:
log_file = types.FSInputFile(Config.LOG_FILE) log_file = types.FSInputFile(Config.LOG_FILE)
@@ -19,7 +23,7 @@ def register_handlers(dp: Dispatcher, state: BotState, bot: Bot):
@dp.message(Command("status")) @dp.message(Command("status"))
@admin_required(3) @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.analytics import analyze_bot_logs
from utils.mac_metrics import get_macbook_battery_level 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: except Exception as e:
await message.answer(f"❌ Ошибка при проверке статуса: {str(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")) @dp.message(Command("power"))
@admin_required(2) @admin_required(2)
async def power_control(message: types.Message): 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 models.state import BotState
from config import Config from config import Config
from services.schedule_service import ScheduleService from services.schedule_service import ScheduleService
import logging from logging import getLogger
logger = logging.getLogger(__name__) logger = getLogger(__name__)
class WatcherService: class WatcherService:
+1 -1
View File
@@ -1,6 +1,6 @@
import os import os
MESSAGES_FILE = "messages.txt" MESSAGES_FILE = "storage/message.txt"
# --- функция для записи message_id --- # --- функция для записи message_id ---
def save_message(chat_id: int, message_id: int): def save_message(chat_id: int, message_id: int):