3.0 Выпуск в PrimoRU
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
# BotLibrary/samples/inline_kb_sample.py
|
||||
# Шаблон для создания инлайн клавиатур
|
||||
|
||||
from aiogram.types import InlineKeyboardMarkup, ReplyKeyboardRemove
|
||||
from aiogram.types import InlineKeyboardMarkup
|
||||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||
from typing import List, Tuple, Optional
|
||||
|
||||
# Настройка экспорта в модули
|
||||
__all__ = ("BaseInlineKeyboard",)
|
||||
|
||||
class BaseInlineKeyboard:
|
||||
def __init__(self, buttons: List[Tuple[str, Optional[str], Optional[str]]], row_width: int = 1):
|
||||
"""
|
||||
@@ -17,7 +20,7 @@ class BaseInlineKeyboard:
|
||||
def get_keyboard(self) -> InlineKeyboardMarkup:
|
||||
"""
|
||||
Создаёт инлайн-клавиатуру и возвращает её вместе с объектом для удаления reply-клавиатуры.
|
||||
:return: кортеж (InlineKeyboardMarkup, ReplyKeyboardRemove)
|
||||
:return: кортеж InlineKeyboardMarkup
|
||||
"""
|
||||
ikb = InlineKeyboardBuilder()
|
||||
for text, url, callback_data in self.buttons:
|
||||
|
||||
@@ -5,6 +5,9 @@ from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, KeyboardButtonPol
|
||||
from aiogram.utils.keyboard import ReplyKeyboardBuilder
|
||||
from typing import List, Union, Tuple, Optional, Dict, Any
|
||||
|
||||
# Настройка экспорта в модули
|
||||
__all__ = ("BaseReplyKeyboard",)
|
||||
|
||||
class BaseReplyKeyboard:
|
||||
def __init__(
|
||||
self,
|
||||
@@ -100,4 +103,4 @@ class BaseReplyKeyboard:
|
||||
buttons.append(KeyboardButton(text=button))
|
||||
rkb.row(*buttons)
|
||||
|
||||
return rkb.as_markup(resize_keyboard=self.resize_keyboard, one_time_keyboard=self.one_time_keyboard)
|
||||
return rkb.as_markup(resize_keyboard=self.resize_keyboard, one_time_keyboard=self.one_time_keyboard)
|
||||
|
||||
@@ -11,16 +11,47 @@ from typing import Optional, Callable
|
||||
from ..loggers import Logs
|
||||
from ..validators import username, valid_url
|
||||
from ProjectsFiles import BotVar
|
||||
from SQLite3 import base_sql
|
||||
from ..sql import db
|
||||
|
||||
# Настройки экспорта в модули
|
||||
__all__ = ("CommandHandler",)
|
||||
|
||||
class CommandHandler:
|
||||
"""
|
||||
Класс для создания и управления командами Telegram-бота.
|
||||
|
||||
Этот класс позволяет создавать команды с различными настройками, включая
|
||||
текстовые сообщения, медиафайлы, клавиатуры, выполнение функций и обработку
|
||||
callback-запросов.
|
||||
|
||||
:param name: Название команды.
|
||||
:param keywords: Список ключевых слов, вызывающих команду.
|
||||
:param func: Список функций, которые выполняются при вызове команды.
|
||||
:param text_msg: Текстовое сообщение, которое отправляется в ответ на команду.
|
||||
:param chat_action: Флаг отправки анимации набора текста перед ответом.
|
||||
:param description: Описание команды.
|
||||
:param tg_links: Флаг обработки ссылок на пользователей в тексте.
|
||||
:param keyboard: Клавиатура, привязанная к команде.
|
||||
:param prefix: Префикс команды (по умолчанию `BotVar.prefix`).
|
||||
:param callbackdata: Список callback-данных, связанных с командой.
|
||||
:param only_admin: Флаг, разрешающий использование команды только администраторам.
|
||||
:param ignore_case: Флаг игнорирования регистра в ключевых словах.
|
||||
:param activate_keywords: Флаг активации команды по ключевым словам.
|
||||
:param delete_msg: Флаг удаления исходного сообщения после обработки команды.
|
||||
:param activate_commands: Флаг активации команды через стандартный обработчик команд.
|
||||
:param activate_callback: Флаг активации обработки callback-запросов.
|
||||
:param media: Тип медиафайла, который отправляется (`"message"`, `"photo"`, `"video"`, и т. д.).
|
||||
:param path_to_media: Путь к медиафайлу (или список путей).
|
||||
:param parse_mode: Форматирование текста (`Markdown`, `HTML` и т. д.).
|
||||
:param disable_notification: Флаг отключения уведомлений при отправке сообщений.
|
||||
:param protect: Флаг защиты контента сообщений.
|
||||
|
||||
:return: Готовый шаблон для команды.
|
||||
"""
|
||||
def __init__(self, name: str,
|
||||
keywords: list,
|
||||
func: Optional[list[Callable]] = None,
|
||||
text_msg=None,
|
||||
text_msg = None,
|
||||
chat_action: bool = False,
|
||||
description: str = "Описание команды",
|
||||
tg_links: bool = False,
|
||||
@@ -34,15 +65,16 @@ class CommandHandler:
|
||||
activate_commands: bool = True,
|
||||
activate_callback: bool = True,
|
||||
media: str = "message",
|
||||
path_to_media=None,
|
||||
path_to_media = None,
|
||||
parse_mode: str = BotVar.parse_mode,
|
||||
disable_notification: bool = BotVar.disable_notification,
|
||||
protect: bool = BotVar.protect_content):
|
||||
|
||||
self.router = Router(name=f"{name}_router")
|
||||
self.name = name
|
||||
self.log_type = name.capitalize()
|
||||
self.description = description
|
||||
self.last_bot_message = {} # {chat_id: message_id}
|
||||
self.last_bot_message = {}
|
||||
|
||||
self.keywords = keywords
|
||||
self.text_msg = text_msg
|
||||
@@ -125,7 +157,10 @@ class CommandHandler:
|
||||
text = text.replace("<users>", str(message.from_user.id))
|
||||
|
||||
Logs.info(log_type=self.log_type, user=username(message), text=f"использовал(а) команду /{self.name}")
|
||||
await base_sql(message)
|
||||
|
||||
# Работа с базами данных
|
||||
db.update_user(message)
|
||||
db.update_user_messages(message)
|
||||
|
||||
# Обрабатываем текстовое сообщение
|
||||
if callable(self.text_msg):
|
||||
|
||||
Reference in New Issue
Block a user