1.9 СВЕРХ ВАЖНЫЕ ИСПРАВЛЕНИЯ

This commit is contained in:
Verum
2025-03-04 01:58:09 +07:00
parent aaeac97680
commit b4b74d5421
10 changed files with 119 additions and 2 deletions

2
.idea/PRIMOWORLD.iml generated
View File

@@ -12,7 +12,7 @@
<sourceFolder url="file://$MODULE_DIR$/BotLibrary/system" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/BotLibrary/system" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/BotLibrary/timer" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/BotLibrary/timer" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/BotLibrary/validators" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/BotLibrary/validators" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/SQLite3" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/SQLite3" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/BotCode" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/BotCode" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/BotLibrary/samples" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/BotLibrary/samples" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/Test" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/Test" isTestSource="true" />

View File

@@ -3,6 +3,7 @@
from aiogram import Router from aiogram import Router
from .user_cmd import router as user_cmd_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( router.include_routers(
adm_cmd_router,
user_cmd_router, user_cmd_router,
) )

View File

@@ -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,
)

View File

@@ -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],
)

View File

@@ -3,7 +3,7 @@
import sqlite3 import sqlite3
from aiogram import types from aiogram import types
from BotLibrary import CommandHandler, username_to_text from BotLibrary import CommandHandler, username_to_text, bot
from ProjectsFiles import BotVar from ProjectsFiles import BotVar
# Настройки экспорта в модули # Настройки экспорта в модули

View File

@@ -7,10 +7,14 @@ from SQLite3 import base_sql
# Настройка экспорта модулей и роутера # Настройка экспорта модулей и роутера
__all__ = ("router",) __all__ = ("router",)
from bd_func.status_user import status_user
router = Router(name="common_msg_router") router = Router(name="common_msg_router")
@router.message() @router.message()
async def handle_all_messages(message: types.Message): async def handle_all_messages(message: types.Message):
await base_sql(message) await base_sql(message)
await status_user(message)
await logger_msg(message) # Это твой метод для логирования await logger_msg(message) # Это твой метод для логирования

Binary file not shown.

View File

@@ -10,6 +10,7 @@ from .bd_get_user import *
from .bd_update_user import * from .bd_update_user import *
from .bd_update_user_msg import * from .bd_update_user_msg import *
from .bd_user_create import * from .bd_user_create import *
from .status_user import *
# Основная обработка SQL # Основная обработка SQL

View File

@@ -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

View File

@@ -0,0 +1,3 @@
# SQLite3/bd_func/username_to_id.py
#