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