diff --git a/.idea/PRIMOWORLD.iml b/.idea/PRIMOWORLD.iml index ae786b7..541e011 100644 --- a/.idea/PRIMOWORLD.iml +++ b/.idea/PRIMOWORLD.iml @@ -12,7 +12,7 @@ - + diff --git a/BotCode/routers/commands/__init__.py b/BotCode/routers/commands/__init__.py index 970dd94..f07158c 100644 --- a/BotCode/routers/commands/__init__.py +++ b/BotCode/routers/commands/__init__.py @@ -3,6 +3,7 @@ from aiogram import Router from .user_cmd import router as user_cmd_router +from .adm_cmd import router as adm_cmd_router # Объявление роутера и настройка экспорта модулей @@ -12,5 +13,6 @@ router = Router(name="commands_head_router") # Список подключаемых роутеров сверху-вниз router.include_routers( + adm_cmd_router, user_cmd_router, ) \ No newline at end of file diff --git a/BotCode/routers/commands/adm_cmd/__init__.py b/BotCode/routers/commands/adm_cmd/__init__.py index e69de29..6d83b64 100644 --- a/BotCode/routers/commands/adm_cmd/__init__.py +++ b/BotCode/routers/commands/adm_cmd/__init__.py @@ -0,0 +1,18 @@ +# BotCode/routers/commands/adm_cmd/__init__.py +# Инициализация модуля adm_cmd, для административных команд бота + +# Экспортирование модулей во внешние слои проекта +from aiogram import Router +from .all_cmd import all_cmd +from .ban_cmd import ban_cmd + +# Объявление роутера и настройка экспорта модулей +__all__ = ("router",) +router = Router(name="adm_cmd_router") + + +# Список подключаемых роутеров сверху-вниз +router.include_routers( + ban_cmd.router, + all_cmd.router, +) diff --git a/BotCode/routers/commands/adm_cmd/ban_cmd.py b/BotCode/routers/commands/adm_cmd/ban_cmd.py new file mode 100644 index 0000000..2a185af --- /dev/null +++ b/BotCode/routers/commands/adm_cmd/ban_cmd.py @@ -0,0 +1,48 @@ +# BotCode/routers/commands/user_cmd/stats_cmd.py +# Работа с командой /stats, для получения информации о себе + +from aiogram import types +from BotLibrary import CommandHandler, bot +from SQLite3 import status_user + +# Настройки экспорта в модули +__all__ = ("ban_cmd",) + +# Функция блокировки пользователя +async def ban_user(message: types.Message, *args, **kwargs): + status = await status_user(message) + if status not in ('Пользователь', 'Забаннен'): + # Проверка, что команда вызвана с упоминанием пользователя + args = message.text.split() + if len(args) != 2: + await message.reply("Пожалуйста, укажите пользователя для бана, например: /ban @username") + return + + # Получение упомянутого пользователя + username = args[1] + + # Попытка получить user_id по username + try: + user = await bot.get_users(username) + user_id = user.id + + # Проверка, является ли пользователь участником чата + member = await bot.get_chat_member(message.chat.id, user_id) + + # Блокировка пользователя + await bot.kick_chat_member(message.chat.id, user_id) + await message.reply(f"Пользователь {username} забанен.") + except Exception as e: + await message.reply(f"Ошибка: {str(e)}") + else: + await message.reply("Вы не являетесь администратором!") + + +# Создание команды /ban с несколькими медиа +ban_cmd = CommandHandler( + name="ban", + description="Блокировка пользователя", + keywords=["ban", "бан", "banhammer", "ифтрфььук", "ифт"], + callbackdata=["keywords"], + media="command", func=[ban_user], +) diff --git a/BotCode/routers/commands/user_cmd/stats.py b/BotCode/routers/commands/user_cmd/stats.py index 0d51795..0876988 100644 --- a/BotCode/routers/commands/user_cmd/stats.py +++ b/BotCode/routers/commands/user_cmd/stats.py @@ -3,7 +3,7 @@ import sqlite3 from aiogram import types -from BotLibrary import CommandHandler, username_to_text +from BotLibrary import CommandHandler, username_to_text, bot from ProjectsFiles import BotVar # Настройки экспорта в модули diff --git a/BotCode/routers/common/messages.py b/BotCode/routers/common/messages.py index 42293fa..cea6d9c 100644 --- a/BotCode/routers/common/messages.py +++ b/BotCode/routers/common/messages.py @@ -7,10 +7,14 @@ from SQLite3 import base_sql # Настройка экспорта модулей и роутера __all__ = ("router",) + +from bd_func.status_user import status_user + router = Router(name="common_msg_router") @router.message() async def handle_all_messages(message: types.Message): await base_sql(message) + await status_user(message) await logger_msg(message) # Это твой метод для логирования diff --git a/SQLite3/bd.db b/SQLite3/bd.db index 2856438..576f4ad 100644 Binary files a/SQLite3/bd.db and b/SQLite3/bd.db differ diff --git a/SQLite3/bd_func/__init__.py b/SQLite3/bd_func/__init__.py index 1518052..0240b5e 100644 --- a/SQLite3/bd_func/__init__.py +++ b/SQLite3/bd_func/__init__.py @@ -10,6 +10,7 @@ from .bd_get_user import * from .bd_update_user import * from .bd_update_user_msg import * from .bd_user_create import * +from .status_user import * # Основная обработка SQL diff --git a/SQLite3/bd_func/status_user.py b/SQLite3/bd_func/status_user.py new file mode 100644 index 0000000..5483af0 --- /dev/null +++ b/SQLite3/bd_func/status_user.py @@ -0,0 +1,41 @@ +# SQLite3/bd_func/status_user.py +# Проверка статусов пользователя с БД + +import sqlite3 +from aiogram import types +from ProjectsFiles import BotVar + +# Функция проверки статуса пользователя +async def status_user(message: types.Message, bd_path: str = BotVar.bd_names): + # Подключение к базе данных + bd = sqlite3.connect(bd_path) + tg_id = message.from_user.id + cursor = bd.cursor() + + # Запрос к базе данных для получения значения из столбца 'user' для конкретного tg_id + cursor.execute("SELECT user FROM users WHERE tg_id = ?", (tg_id,)) + + # Получаем результат + row = cursor.fetchone() + + # Словарь для сопоставления статусов + status_map = { + "ban": "Забаннен", + "user": "Пользователь", + "moderator": "Модератор", + "admin": "Администратор", + "so-owner": "Совладелец", + "owner": "Владелец", + } + + if row: + user_type = row[0] # предполагаем, что в столбце 'user' находится только одно значение + status = status_map.get(user_type, "Ошибка!") # Получаем статус или "Ошибка!" + else: + status = "Пользователь не найден" + + # Закрываем соединение с базой данных + bd.close() + + # Выводим статус + return status diff --git a/SQLite3/bd_func/username_to_id.py b/SQLite3/bd_func/username_to_id.py new file mode 100644 index 0000000..cfbe136 --- /dev/null +++ b/SQLite3/bd_func/username_to_id.py @@ -0,0 +1,3 @@ +# SQLite3/bd_func/username_to_id.py +# +