I add command /del for delite message and i improve code.
It's version 0.1.1
This commit is contained in:
+11
@@ -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
@@ -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):
|
||||||
|
|||||||
@@ -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,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):
|
||||||
|
|||||||
Reference in New Issue
Block a user