diff --git a/BotCode/keyboards/inline_kb/start_inline_kb.py b/BotCode/keyboards/inline_kb/start_inline_kb.py index 6501037..baad589 100644 --- a/BotCode/keyboards/inline_kb/start_inline_kb.py +++ b/BotCode/keyboards/inline_kb/start_inline_kb.py @@ -1,20 +1,16 @@ # BotCode/keyboards/inline_kb/start_inline_kb.py -# Создания инлайн-клавиатуры на команду: /start +# Создание инлайн-клавиатуры на команду: /start -from aiogram.types import InlineKeyboardMarkup -from aiogram.utils.keyboard import InlineKeyboardBuilder +from BotLibrary import BaseInlineKeyboard -# Создание роутера и настройка экспорта +# Настройка экспорта в модули __all__ = ("get_start_kb",) -# Функция создания клавиатуры на команду: /actor -def get_start_kb() -> InlineKeyboardMarkup: - ikb = InlineKeyboardBuilder() - - # Добавляем кнопки, группируя их по строкам - ikb.button(text="Посмотреть инфо-канал", url="https://t.me/laveilinfo") - ikb.button(text="Отправить анкету", url="https://t.me/laveilinfo") - ikb.button(text="Предложить союз", url="https://t.me/laveilinfo") - - ikb.adjust(1) - return ikb.as_markup() \ No newline at end of file +# Функция создания клавиатуры +def get_start_kb(row_width : int = 1): + buttons = [ + ("Я Новичок!", None, "novice_cbd"), + ("Где я?", None, "where_i_am_cbd"), + ("Мне уже известен этот феномен..", None, "menu"), + ] + return BaseInlineKeyboard(buttons, row_width=row_width).get_keyboard() diff --git a/BotCode/routers/commands/user_cmd/start_cmd.py b/BotCode/routers/commands/user_cmd/start_cmd.py index e9b2670..14ebf36 100644 --- a/BotCode/routers/commands/user_cmd/start_cmd.py +++ b/BotCode/routers/commands/user_cmd/start_cmd.py @@ -1,17 +1,23 @@ # BotCode/routers/commands/user_cmd/start_cmd.py -# # Работа с командой /start, для запуска бота +# Работа с командой /start, для запуска бота from BotLibrary import CommandHandler from BotCode.keyboards import get_start_kb - -# Создание команды /start с нужными параметрами +user = "2" +# Создание команды /start start_cmd = CommandHandler( name="start", description="Добро пожаловать!", keywords=["start", "старт", "запуск", "пуск", "on", "вкл", "с", "s", "ы", "ыефке", "cnfhn", "pfgecr", "gecr", "щт", "drk", "restart", "куыефке"], callbackdata="keywords", - text_msg="Старт!", keyboard=get_start_kb, - media="file", path_to_media="https://gdb.voanews.com/455403fe-91ea-4abe-8d29-3862282ec56b_cx0_cy9_cw0_w408_r1_s.jpg", + media="photo", + path_to_media="ProjectsFiles/media/Banners/start_banner.jpg", + tg_links=True, + text_msg=f""" +Здравствуй, дорогой Путник. +Мое имя - Эми! Я - ваш путеводитель в этом прекрасном месте! +Вы готовы отправиться в этот дивный мир? +""", ) diff --git a/BotLibrary/samples/__init__.py b/BotLibrary/samples/__init__.py index 922f167..1ad15bb 100644 --- a/BotLibrary/samples/__init__.py +++ b/BotLibrary/samples/__init__.py @@ -3,3 +3,4 @@ # Экспортирование модулей во внешние слои проекта from .user_cmd_class import * +from .keyboards_sample import * \ No newline at end of file diff --git a/BotLibrary/samples/keyboards_sample.py b/BotLibrary/samples/keyboards_sample.py new file mode 100644 index 0000000..9f56a39 --- /dev/null +++ b/BotLibrary/samples/keyboards_sample.py @@ -0,0 +1,31 @@ +# BotCode/keyboards/inline_kb/base_inline_kb.py +# Базовый класс для создания инлайн-клавиатур + +from aiogram.types import InlineKeyboardMarkup +from aiogram.utils.keyboard import InlineKeyboardBuilder +from typing import List, Tuple, Optional + + +class BaseInlineKeyboard: + def __init__(self, buttons: List[Tuple[str, Optional[str], Optional[str]]], row_width: int = 1): + """ + :param buttons: список кнопок в формате (текст, url, callback_data). + :param row_width: количество кнопок в строке. + """ + self.buttons = buttons + self.row_width = row_width + + def get_keyboard(self) -> InlineKeyboardMarkup: + """ + Создаёт инлайн-клавиатуру. + :return: объект InlineKeyboardMarkup + """ + ikb = InlineKeyboardBuilder() + for text, url, callback_data in self.buttons: + if url: + ikb.button(text=text, url=url) + elif callback_data: + ikb.button(text=text, callback_data=callback_data) + + ikb.adjust(self.row_width) + return ikb.as_markup() diff --git a/BotLibrary/samples/user_cmd_class.py b/BotLibrary/samples/user_cmd_class.py index 6fa2bd9..46a9ce5 100644 --- a/BotLibrary/samples/user_cmd_class.py +++ b/BotLibrary/samples/user_cmd_class.py @@ -11,12 +11,12 @@ from BotLibrary.validators import username from BotLibrary.loggers import Logs # Настройки экспорта в модули -__all__ = ("CommandHandler", ) +__all__ = ("CommandHandler",) # Класс-шаблон для команд class CommandHandler: - def __init__(self, name: str, keywords : list, chat_action : bool = False, - description: str = "Описание команды", text_msg : str = "Сообщение", + def __init__(self, text_msg, name: str, keywords : list, chat_action : bool = False, + description: str = "Описание команды", tg_links : bool = False, keyboard = None, prefix = BotVar.prefix, callbackdata = None, ignore_case : bool = True, activate_keywoards : bool = True, activate_commands : bool = True, activate_callback : bool = True, @@ -38,6 +38,7 @@ class CommandHandler: self.media = media.lower() self.path_to_media = path_to_media + self.tg_links = tg_links if callbackdata == "keywords": self.callbackdata = keywords else: @@ -57,6 +58,8 @@ class CommandHandler: """Основной хэндлер команды.""" try: url : bool = valid_url(self.path_to_media) + if self.tg_links: + self.text_msg = self.text_msg.replace("", str(message.from_user.id)) Logs.info(log_type=self.log_type, user=username(message), text=f"использовал(а) команду /{self.name}") if self.media == "message": diff --git a/ProjectsFiles/media/Banners/start_banner.jpg b/ProjectsFiles/media/Banners/start_banner.jpg new file mode 100644 index 0000000..868d4b2 Binary files /dev/null and b/ProjectsFiles/media/Banners/start_banner.jpg differ