Инициализатор модуля
This commit is contained in:
4
bot/__init__.py
Normal file
4
bot/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from .core import *
|
||||
from .handlers import router
|
||||
from .middlewares import *
|
||||
from .filters import *
|
||||
5
bot/core/__init__.py
Normal file
5
bot/core/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
"""
|
||||
Модуль управления ботом
|
||||
"""
|
||||
from .bots import *
|
||||
from .webhook import *
|
||||
11
bot/filters/__init__.py
Normal file
11
bot/filters/__init__.py
Normal file
@@ -0,0 +1,11 @@
|
||||
"""
|
||||
Модуль фильтров для aiogram
|
||||
"""
|
||||
from .subscription import *
|
||||
from .admin import *
|
||||
from .spam import *
|
||||
from .modes import *
|
||||
from .chat_type import *
|
||||
from .msg_content import *
|
||||
from .chat_rights import *
|
||||
from .callback import *
|
||||
16
bot/handlers/__init__.py
Normal file
16
bot/handlers/__init__.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from aiogram import Router
|
||||
|
||||
from .commands import router as cmd_routers
|
||||
from .messages import router as messages_routers
|
||||
from .chl_comment import router as channels_routers
|
||||
|
||||
# Настройка экспорта и роутера
|
||||
__all__ = ("router",)
|
||||
router: Router = Router(name=__name__)
|
||||
|
||||
# Подключение роутеров
|
||||
router.include_routers(
|
||||
channels_routers,
|
||||
cmd_routers,
|
||||
messages_routers,
|
||||
)
|
||||
16
bot/handlers/commands/__init__.py
Normal file
16
bot/handlers/commands/__init__.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from aiogram import Router
|
||||
|
||||
#from .admins import router as admin_cmd_router
|
||||
from .users import router as users_cmd_router
|
||||
#from .settings import router as settings_cmd_router
|
||||
|
||||
# Настройка экспорта и роутера
|
||||
__all__ = ("router",)
|
||||
router: Router = Router(name=__name__)
|
||||
|
||||
# Подключение роутеров
|
||||
router.include_routers(
|
||||
#settings_cmd_router,
|
||||
#admin_cmd_router,
|
||||
users_cmd_router,
|
||||
)
|
||||
18
bot/handlers/commands/admins/__init__.py
Normal file
18
bot/handlers/commands/admins/__init__.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from aiogram import Router
|
||||
|
||||
#from .ban_cmd import router as ban_cmd_router
|
||||
from .all_cmd import router as all_cmd_router
|
||||
from .pin_cmd import router as pin_cmd_router
|
||||
from .kick_cmd import router as kick_cmd_router
|
||||
|
||||
# Настройка экспорта и роутера
|
||||
__all__ = ("router",)
|
||||
router: Router = Router(name=__name__)
|
||||
|
||||
router.include_routers(
|
||||
#ban_cmd_router,
|
||||
kick_cmd_router,
|
||||
pin_cmd_router,
|
||||
all_cmd_router,
|
||||
|
||||
)
|
||||
19
bot/handlers/commands/settings/__init__.py
Normal file
19
bot/handlers/commands/settings/__init__.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from aiogram import Router
|
||||
|
||||
from .set_description_cmd import router as set_description_cmd_router
|
||||
from .set_name_cmd import router as set_name_cmd_router
|
||||
from .set_widget_cmd import router as set_widget_cmd_router
|
||||
from .settings_cmd import router as settings_cmd_router
|
||||
|
||||
# Настройка экспорта и роутера
|
||||
__all__ = ("router",)
|
||||
router: Router = Router(name=__name__)
|
||||
|
||||
|
||||
# Подключение роутеров
|
||||
router.include_routers(
|
||||
settings_cmd_router,
|
||||
set_name_cmd_router,
|
||||
set_description_cmd_router,
|
||||
set_widget_cmd_router,
|
||||
)
|
||||
37
bot/handlers/commands/users/__init__.py
Normal file
37
bot/handlers/commands/users/__init__.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from aiogram import Router
|
||||
|
||||
from .start_cmd import router as start_cmd_router
|
||||
from .listwords import router as listwords_cmd_router
|
||||
from .word import router as word_cmd_router
|
||||
from .slience import router as slice_router
|
||||
from .conflict import router as conflict_router
|
||||
from .stats import router as stats_router
|
||||
from .report import router as report_router
|
||||
from .admins import router as admin_router
|
||||
from .notifications import router as notifications_router
|
||||
from .id import router as id_router
|
||||
from .emoji import router as emoji_router
|
||||
from .cancel import router as cancel_router
|
||||
from .bot_settings import router as setting_router
|
||||
|
||||
# Настройка экспорта и роутера
|
||||
__all__ = ("router",)
|
||||
router: Router = Router(name=__name__)
|
||||
|
||||
|
||||
# Подключение роутеров
|
||||
router.include_routers(
|
||||
cancel_router,
|
||||
notifications_router,
|
||||
report_router,
|
||||
admin_router,
|
||||
start_cmd_router,
|
||||
listwords_cmd_router,
|
||||
word_cmd_router,
|
||||
slice_router,
|
||||
conflict_router,
|
||||
stats_router,
|
||||
id_router,
|
||||
emoji_router,
|
||||
setting_router,
|
||||
)
|
||||
15
bot/handlers/messages/__init__.py
Normal file
15
bot/handlers/messages/__init__.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from aiogram import Router
|
||||
|
||||
from .default_msg import router as default_message_router
|
||||
from .ping_test import router as ping_test_message_router
|
||||
|
||||
# Настройка экспорта и роутера
|
||||
router: Router = Router(name=__name__)
|
||||
|
||||
# Подготовка роутера команд
|
||||
# router.include_routers(
|
||||
# ping_test_message_router,
|
||||
# )
|
||||
|
||||
# Подключение стандартного роутера
|
||||
router.include_router(default_message_router)
|
||||
2
bot/keyboards/__init__.py
Normal file
2
bot/keyboards/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from .inline import *
|
||||
from .reply import *
|
||||
142
bot/middlewares/__init__.py
Normal file
142
bot/middlewares/__init__.py
Normal file
@@ -0,0 +1,142 @@
|
||||
"""
|
||||
Middleware для бота PrimoGuardBot.
|
||||
|
||||
Порядок выполнения middleware важен:
|
||||
1. TimingMiddleware - замер времени выполнения
|
||||
2. LoggingMiddleware - логирование всех событий
|
||||
3. BanCheckMiddleware - проверка статуса бана (блокирует забаненных)
|
||||
4. ErrorHandlingMiddleware - обработка ошибок (последний)
|
||||
|
||||
Message-level middleware:
|
||||
1. RateLimitMiddleware/AntiSpamMiddleware - защита от флуда
|
||||
2. SubscriptionMiddleware - проверка подписки на каналы
|
||||
3. ReferralMiddleware - обработка реферальных ссылок
|
||||
"""
|
||||
from aiogram import Dispatcher, Bot
|
||||
|
||||
from configs import settings
|
||||
from middleware.loggers import logger
|
||||
from .error_mdw import ErrorHandlingMiddleware
|
||||
from .logging_mdw import LoggingMiddleware
|
||||
from .referal_mdw import ReferralMiddleware
|
||||
from .spam_mdw import AntiSpamMiddleware, spam_stats
|
||||
from .sub_mdw import SubscriptionMiddleware
|
||||
from .time_mdw import TimingMiddleware
|
||||
from .banwords_mdw import BanWordsMiddleware
|
||||
|
||||
__all__ = (
|
||||
# Middleware классы
|
||||
"TimingMiddleware",
|
||||
"LoggingMiddleware",
|
||||
"ErrorHandlingMiddleware",
|
||||
"AntiSpamMiddleware",
|
||||
"SubscriptionMiddleware",
|
||||
"ReferralMiddleware",
|
||||
"BanWordsMiddleware",
|
||||
|
||||
# Статистика
|
||||
"spam_stats",
|
||||
|
||||
# Утилиты
|
||||
"setup_middlewares",
|
||||
)
|
||||
|
||||
|
||||
def setup_middlewares(
|
||||
dp: Dispatcher,
|
||||
bot: Bot,
|
||||
admin_ids: list[int] = settings.ADMIN_ID+settings.OWNER_ID,
|
||||
channel_ids: list[int | str] | None = None,
|
||||
enable_spam_check: bool = False,
|
||||
enable_subscription_check: bool = False,
|
||||
) -> dict:
|
||||
"""
|
||||
Регистрирует все middleware в диспетчере.
|
||||
|
||||
Args:
|
||||
dp: Диспетчер aiogram
|
||||
bot: Экземпляр бота
|
||||
admin_ids: ID администраторов (для защиты и уведомлений)
|
||||
channel_ids: ID каналов для проверки подписки
|
||||
enable_spam_check: Включить антиспам
|
||||
enable_subscription_check: Включить проверку подписки
|
||||
|
||||
Returns:
|
||||
dict: Словарь с экземплярами middleware для доступа к методам
|
||||
"""
|
||||
channel_ids = channel_ids or []
|
||||
|
||||
# === UPDATE LEVEL MIDDLEWARE (для всех событий) ===
|
||||
middlewares_updates = []
|
||||
instances = {}
|
||||
|
||||
# 1. Timing - замер времени (первый!)
|
||||
timing_mdw = TimingMiddleware()
|
||||
middlewares_updates.append(timing_mdw)
|
||||
instances['timing'] = timing_mdw
|
||||
|
||||
# 2. Logging - логирование всех событий
|
||||
loggings_mdw = LoggingMiddleware()
|
||||
middlewares_updates.append(loggings_mdw)
|
||||
instances['logging'] = loggings_mdw
|
||||
|
||||
# 3. ErrorHandling - обработка ошибок (последний!)
|
||||
errors_mdw = ErrorHandlingMiddleware(admin_ids=admin_ids)
|
||||
middlewares_updates.append(errors_mdw)
|
||||
instances['error'] = errors_mdw
|
||||
|
||||
# === MESSAGE LEVEL MIDDLEWARE (только для сообщений) ===
|
||||
middlewares_msg = []
|
||||
|
||||
# 1. AntiSpam - защита от флуда (опционально)
|
||||
if enable_spam_check:
|
||||
spams_mdw = AntiSpamMiddleware()
|
||||
middlewares_msg.append(spams_mdw)
|
||||
instances['spam'] = spams_mdw
|
||||
|
||||
# 2. Subscription - проверка подписки на каналы (опционально)
|
||||
if enable_subscription_check and channel_ids:
|
||||
subs_mdw = SubscriptionMiddleware(bot=bot, channels=channel_ids)
|
||||
middlewares_msg.append(subs_mdw)
|
||||
instances['subscription'] = subs_mdw
|
||||
|
||||
dp.message.middleware(BanWordsMiddleware())
|
||||
|
||||
# 3. Referral - обработка реферальных ссылок
|
||||
referral_mdw = ReferralMiddleware()
|
||||
middlewares_msg.append(referral_mdw)
|
||||
instances['referral'] = referral_mdw
|
||||
|
||||
# === РЕГИСТРАЦИЯ MIDDLEWARE ===
|
||||
|
||||
# Регистрируем update-level middleware
|
||||
for middleware in middlewares_updates:
|
||||
dp.update.middleware(middleware)
|
||||
|
||||
# Регистрируем message-level middleware
|
||||
for middleware in middlewares_msg:
|
||||
dp.message.middleware(middleware)
|
||||
|
||||
# Логируем успешную регистрацию
|
||||
enabled_features = []
|
||||
if enable_spam_check:
|
||||
enabled_features.append("AntiSpam")
|
||||
if enable_subscription_check:
|
||||
enabled_features.append("Subscription")
|
||||
|
||||
dp.channel_post.middleware(LoggingMiddleware())
|
||||
dp.edited_channel_post.middleware(LoggingMiddleware())
|
||||
|
||||
logger.info(
|
||||
text=(
|
||||
f"Middleware зарегистрированы: "
|
||||
f"Update={len(middlewares_updates)}, "
|
||||
f"Message={len(middlewares_msg)}, "
|
||||
f"Функции=[{', '.join(enabled_features) if enabled_features else 'базовые'}]"
|
||||
),
|
||||
log_type="MIDDLEWARE_SETUP"
|
||||
)
|
||||
|
||||
return instances
|
||||
|
||||
|
||||
1
bot/special/__init__.py
Normal file
1
bot/special/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .text_processing import *
|
||||
0
bot/states/__init__.py
Normal file
0
bot/states/__init__.py
Normal file
4
bot/tasks/__init__.py
Normal file
4
bot/tasks/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
"""
|
||||
Модуль фоновых задач для бота
|
||||
"""
|
||||
from .cleanup import *
|
||||
1
bot/templates/__init__.py
Normal file
1
bot/templates/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .message_callback import *
|
||||
39
bot/utils/__init__.py
Normal file
39
bot/utils/__init__.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""
|
||||
Утилиты бота PrimoGuardBot
|
||||
|
||||
Модули:
|
||||
- usernames: Работа с пользователями (username, mentions, display names)
|
||||
- type_message: Типы контента и чатов
|
||||
- hidden_username: Упоминания администраторов
|
||||
- format_time: Форматирование времени и дат
|
||||
- argument: Парсинг команд и аргументов
|
||||
- state_utils: Работа с FSM состояниями
|
||||
- auto_delete: Автоматическое удаление сообщений
|
||||
- decorators: Декораторы для хендлеров
|
||||
"""
|
||||
|
||||
# ================= USER INFO =================
|
||||
from .usernames import *
|
||||
|
||||
# ================= CONTENT TYPES =================
|
||||
from .type_message import *
|
||||
|
||||
# ================= MENTIONS =================
|
||||
from .hidden_username import *
|
||||
|
||||
# ================= TIME FORMATTING =================
|
||||
from .format_time import *
|
||||
|
||||
# ================= COMMANDS =================
|
||||
from .argument import *
|
||||
|
||||
# ================= STATE UTILS =================
|
||||
from .state_utils import *
|
||||
|
||||
# ================= AUTO DELETE =================
|
||||
from .auto_delete import *
|
||||
|
||||
# ================= DECORATORS =================
|
||||
from .decorators import *
|
||||
|
||||
from .telegram_emoji import *
|
||||
Reference in New Issue
Block a user