This commit is contained in:
dj
2025-10-10 07:04:08 +03:00
parent 9a48d6f60f
commit c9099dac69
26 changed files with 738 additions and 405 deletions
+10 -10
View File
@@ -7,9 +7,9 @@ from tgbot.routers.user import user_menu
from tgbot.utils.misc.bot_filters import IsAdmin
# Регистрация всех роутеров
# Register all routers
def register_all_routers(dp: Dispatcher):
# Подключение фильтров
# Connect filters
main_errors.router.message.filter(F.chat.type == "private")
main_start.router.message.filter(F.chat.type == "private")
@@ -18,13 +18,13 @@ def register_all_routers(dp: Dispatcher):
main_missed.router.message.filter(F.chat.type == "private")
# Подключение обязательных роутеров
dp.include_router(main_errors.router) # Роутер ошибки
dp.include_router(main_start.router) # Роутер основных команд
# Connect needed routers
dp.include_router(main_errors.router) # Router - error
dp.include_router(main_start.router) # Router - main
# Подключение пользовательских роутеров (юзеров и админов)
dp.include_router(user_menu.router) # Юзер роутер
dp.include_router(admin_menu.router) # Админ роутер
# Connect usebles routers (users и admins)
dp.include_router(user_menu.router) # Router - user
dp.include_router(admin_menu.router) # Router - admin
# Подключение обязательных роутеров
dp.include_router(main_missed.router) # Роутер пропущенных апдейтов
# Connect needed routers
dp.include_router(main_missed.router) # Router - missed handlers
+13 -19
View File
@@ -8,38 +8,32 @@ from aiogram.types import FSInputFile, Message, CallbackQuery
from aiogram.utils.media_group import MediaGroupBuilder
from tgbot.data.config import PATH_DATABASE, PATH_LOGS
from tgbot.database.db_users import UserModel
from tgbot.keyboards.inline_misc import admin_inl
from tgbot.keyboards.reply_misc import admin_rep
from tgbot.database.db_users import BaseModel as UserModel
from tgbot.keyboards.inline_main import admin_finl
from tgbot.utils.const_functions import get_date
from tgbot.utils.misc.bot_models import FSM, ARS
router = Router(name=__name__)
# Кнопка - Admin Inline
@router.message(F.text == 'Admin Inline')
# Message - Admin button
@router.message(F.text == 'Admin button')
async def admin_button_inline(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
await message.answer("Click Button - Admin Inline", reply_markup=admin_inl)
await message.answer(
"Inline admin keyboards",
reply_markup=admin_finl()
)
# Кнопка - Admin Reply
@router.message(F.text == 'Admin Reply')
async def admin_button_reply(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
await message.answer("Click Button - Admin Reply", reply_markup=admin_rep)
# Колбэк - Admin X
# Callback - Admin X
@router.callback_query(F.data == 'admin_inline_x')
async def admin_callback_inline_x(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await call.answer(f"Click Admin X")
# Колбэк - Admin
# Callback - Admin
@router.callback_query(F.data.startswith('admin_inline:'))
async def admin_callback_inline(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
get_data = call.data.split(":")[1]
@@ -47,7 +41,7 @@ async def admin_callback_inline(call: CallbackQuery, bot: Bot, state: FSM, arSes
await call.answer(f"Click Admin - {get_data}", True)
# Получение Базы Данных
# Get Database file
@router.message(Command(commands=['db', 'database']))
async def admin_database(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
@@ -58,7 +52,7 @@ async def admin_database(message: Message, bot: Bot, state: FSM, arSession: ARS,
)
# Получение логов
# Get Logs file
@router.message(Command(commands=['log', 'logs']))
async def admin_log(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
@@ -79,7 +73,7 @@ async def admin_log(message: Message, bot: Bot, state: FSM, arSession: ARS, User
await message.answer_media_group(media=media_group.build())
# Очистить логи
# Clear logs file
@router.message(Command(commands=['clear_log', 'clear_logs', 'log_clear', 'logs_clear']))
async def admin_logs_clear(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
+2 -2
View File
@@ -8,14 +8,14 @@ from tgbot.utils.misc.bot_logging import bot_logger
router = Router(name=__name__)
# Ошибка с блокировкой бота пользователем
# Error with block forbidden user
# @router.errors(ExceptionTypeFilter(TelegramForbiddenError))
# class MyHandler(ErrorHandler):
# async def handle(self):
# ...
# Ошибка с редактированием одинакового сообщения
# Error with edit duplicate message
@router.errors(ExceptionMessageFilter(
"Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message")
)
+9 -9
View File
@@ -2,34 +2,34 @@
from aiogram import Router, Bot, F
from aiogram.types import CallbackQuery, Message
from tgbot.database.db_users import UserModel
from tgbot.database import ModelUsers
from tgbot.utils.const_functions import del_message
from tgbot.utils.misc.bot_models import FSM, ARS
router = Router(name=__name__)
# Колбэк с удалением сообщения
# Callback with delete message
@router.callback_query(F.data == 'close_this')
async def main_callback_close(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
async def main_callback_close(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: ModelUsers):
await del_message(call.message)
# Колбэк с обработкой кнопки
# Callback with processing miss button
@router.callback_query(F.data == '...')
async def main_callback_answer(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
async def main_callback_answer(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: ModelUsers):
await call.answer(cache_time=30)
# Колбэк с обработкой удаления сообщений потерявших стейт
# Callback with processing miss callback data
@router.callback_query()
async def main_callback_missed(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
async def main_callback_missed(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: ModelUsers):
await call.answer(f"❗️ Miss callback: {call.data}", True)
# Обработка всех неизвестных команд
# Processing all unknowns callback datas
@router.message()
async def main_message_missed(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
async def main_message_missed(message: Message, bot: Bot, state: FSM, arSession: ARS, User: ModelUsers):
await message.answer(
"♦️ Unknown command.\n"
"♦️ Enter /start",
+4 -4
View File
@@ -3,7 +3,7 @@ from aiogram import Router, Bot, F
from aiogram.filters import Command
from aiogram.types import Message
from tgbot.database.db_users import UserModel
from tgbot.database.db_users import BaseModel as UserModel
from tgbot.keyboards.reply_main import menu_frep
from tgbot.utils.const_functions import ded
from tgbot.utils.misc.bot_models import FSM, ARS
@@ -11,8 +11,8 @@ from tgbot.utils.misc.bot_models import FSM, ARS
router = Router(name=__name__)
# Открытие главного меню
@router.message(F.text.in_(('🔙 Main menu', '🔙 Return')))
# Main menu
@router.message(F.text.in_(('menu', 'return', 'start')))
@router.message(Command(commands=['start']))
async def main_start(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
@@ -20,7 +20,7 @@ async def main_start(message: Message, bot: Bot, state: FSM, arSession: ARS, Use
await message.answer(
ded(f"""
🔸 Hello, {User.user_name}
🔸 Enter /start or /inline
🔸 Enter /start or /menu
"""),
reply_markup=menu_frep(message.from_user.id),
)
+14 -26
View File
@@ -3,55 +3,43 @@ from aiogram import Router, Bot, F
from aiogram.filters import Command
from aiogram.types import Message, CallbackQuery
from tgbot.database.db_users import UserModel
from tgbot.keyboards.inline_main import menu_finl
from tgbot.keyboards.inline_misc import user_inl
from tgbot.keyboards.reply_misc import user_rep
from tgbot.database.db_users import BaseModel as UserModel
from tgbot.keyboards.inline_main import user_finl
from tgbot.keyboards.reply_main import menu_frep
from tgbot.utils.misc.bot_models import FSM, ARS
router = Router(name=__name__)
# Кнопка - User Inline
@router.message(F.text == 'User Inline')
# Message - User button
@router.message(F.text == 'User button')
async def user_button_inline(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
await message.answer(
"Click Button - User Inline",
reply_markup=user_inl,
"Inline user keyboards",
reply_markup=user_finl()
)
# Кнопка - User Reply
@router.message(F.text == 'User Reply')
async def user_button_reply(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
# Command - /menu
@router.message(Command(commands="menu"))
async def user_command_menu(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
await message.answer(
"Click Button - User Reply",
reply_markup=user_rep,
"Enter command - /menu",
reply_markup=menu_frep(message.from_user.id),
)
# Команда - /inline
@router.message(Command(commands="inline"))
async def user_command_inline(message: Message, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await state.clear()
await message.answer(
"Click command - /inline",
reply_markup=menu_finl(message.from_user.id),
)
# Колбэк - User X
# Callback - User X
@router.callback_query(F.data == 'user_inline_x')
async def user_callback_inline_x(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
await call.answer(f"Click User X")
# Колбэк - User
# Callback - User
@router.callback_query(F.data.startswith('user_inline:'))
async def user_callback_inline(call: CallbackQuery, bot: Bot, state: FSM, arSession: ARS, User: UserModel):
get_data = call.data.split(":")[1]