Возвращать ли значение вашей функции в ответ в переопределенном методе.
Пример использования
Copy
from org.telegram.messenger import Utilities# Функция для переопределенияdef function(arg1, arg2, test): ...# Это создает прокси, который переопределяет 'run'MyProxyClass = CactusUtils.gen(Utilities.Callback2, "run")# Создание экземпляра проксиproxy_instance = MyProxyClass(function, test="value")
gen2
Copy
def gen2(java_class: JavaClass, return_value: bool = False, **methods) -> type
Этот метод похож на gen, но позволяет переопределять несколько методов в сгенерированном прокси-классе.
Рекомендуется использовать методы в классе плагина.Методы для логирования по уровню и ID. На выход в logcat идёт лог формата: [level] [__id__] {message}
Метод для получения логов по ID, уровню и времени.
array_list
Copy
def array_list(*args) -> ArrayList
Метод для легкого создания ArrayList.
Можно привести список в качестве первого и единственного аргумента, тогда он преобразует данный список в ArrayList.
Важный частоиспользуемый метод для отправки сообщений. Текст может быть разобран на HTML-разметку или Markdown-разметку.
К сообщению могут быть добавлены Inline кнопки, а также можно отследить отправку сообщения.
Класс для управления данными в JSON-файле, наследующий от dict. Он автоматически загружает данные из указанного файла при инициализации и сохраняет изменения при вызове методов, таких как set, pop или update_from.
Список разделенных аргументов после команды.Разделение в основном через пробел, но если нужно передать одним аргументом текст с пробелами, можно использовать ковычки:
.test arg1 arg2 "arg3 with many words" -> args = ["arg1", "arg2", "arg3 with many words"].test arg1 arg2 param="value with many words" -> args = ["arg1", "arg2", "param=value with many words"]
Функция, возвращающая текст исходного сообщения с HTML-разметкой.Возвращает CactusUtils.HTML.unparse(self.text, list(self.params.entities.toArray()))
method markdown
Copy
def markdown(self) -> str
Функция, возвращающая текст исходного сообщения с Markdown-разметкой.Возвращает CactusUtils.Markdown.unparse(self.text, list(self.params.entities.toArray()))
UriCallback
Copy
@dataclassclass UriCallback
Класс, который возвращается в callback функцию MessageUri ссылки.
Изменяет Inline-клавиатуру текущему сообщению, автоматически подставляя в CactusUtils.edit_message_markup UI-объект сообщения.
method delete (delete_message)
Copy
def delete_message(self) -> None
Удаляет сообщение.
Telegram
Copy
class Telegram
Класс Telegram предоставляет статические методы для взаимодействия с Telegram API, включая отправку запросов TLRPC, поиск сообщений и получение информации о пользователях, чатах, каналах и стикерпаках.
class Result
Copy
class Result:
Внутренний класс, используемый для хранения результатов асинхронных запросов TLRPC.
Создает объект запроса TLRPC, устанавливая предоставленные аргументы как атрибуты класса запроса. Это удобный способ инициализировать объекты запросов.
Ожидать ли ответ. Если True, метод будет блокироваться до получения ответа и возвращать объект Result. Если False, метод вернет идентификатор запроса немедленно.
Вызывать ли исключения. Если True и запрос завершился ошибкой, будет вызвано исключение TLRPCException. Если False, ошибка будет возвращена внутри объекта Result.
class SearchFilter
Copy
class SearchFilter(Enum):
Перечисление, представляющее различные фильтры для поиска сообщений. Используется для уточнения типа сообщений, которые вы ищете.
Идентификатор пользователя. Уникальный ID пользователя, информацию о котором вы хотите получить.
method input_user
Copy
@staticmethoddef input_user(user_id: int)
Получает объект InputUser по идентификатору пользователя. Этот объект используется в других запросах к Telegram API, которым требуется ссылка на пользователя.
Идентификатор пира. ID пользователя, чата или канала.
method input_peer
Copy
@staticmethoddef input_peer(peer_id: int)
Получает объект InputPeer по идентификатору пира (пользователя, чата или канала). InputPeer — это объект, который API использует для идентификации целевого диалога.
Получает конкретные сообщения из канала по их идентификаторам.
ВНИМАНИЕ: Этот метод может не возвращать ожидаемый результат в полной мере. Если у вас есть информация или предложения по исправлению, пожалуйста, свяжитесь с @chillden4ik в Telegram.
Разрешает короткое имя канала (username, например, @telegram) в полный объект канала. Может работать как синхронно (по умолчанию), так и асинхронно через обратный вызов.
Функция обратного вызова. Если предоставлена, метод будет работать асинхронно, и эта функция будет вызвана с разрешенным объектом канала.
FileSystem
Copy
class FileSystem
Вспомогательный класс для управления файлами и директориями, предоставляющий методы для работы с базовыми, кеш- и временными директориями, а также для чтения и записи содержимого файлов. Все методы в этом классе являются статическими.
method basedir
Copy
@classmethoddef basedir(cls, *path: str)
Возвращает базовую директорию приложения. Если предоставлены аргументы path, то будут созданы поддиректории внутри базовой директории, если они не существуют, и будет возвращен объект File для самого глубокого указанного пути.
Необязательные компоненты пути для добавления к базовой директории.
method cachedir
Copy
@classmethoddef cachedir(cls, *path: str)
Возвращает директорию внешнего кеша приложения. Если предоставлены аргументы path, то будут созданы поддиректории внутри директории кеша, если они не существуют, и будет возвращен объект File для самого глубокого указанного пути.
Читает и возвращает содержимое файла, расположенного во временной директории. При желании файл может быть запланирован на удаление через указанное количество секунд.
Дополнительные аргументы, передающиеся в функцию callback’а.
Пример использования
Copy
plugin_id = "testplugin"cmd_url = CactusUtils.Uri(plugin_id=plugin_id, command="test", kwargs={"message": "hello with love from cactus!"}).string()... # данную ссылку можно вставлять куда хотите, работать будет из любого места... # в классе плагина@uri("test") # from cactuslib import uridef test_uri_callback(self, message: str): ...
... # класс плагина@CactusUtils.Uri.callback("test")def test_uri_callback(self, **kwargs): ...
MessageUri
Copy
class MessageUri(Uri)
Класс для создания URI-ссылки для хендлера с callback’ом, которая будет обрабатываться только в сообщениях.
Всё то же самое, что и в Uri, но есть изменения:
/cactus/ заменяется на /cactusX/.
В callback функцию возвращается экземпляр CactusUtils.UriCallback с необходимыми данными первым аргументом.
Пример использования
Copy
plugin_id = "testplugin"cmd_url = CactusUtils.MessageUri(plugin_id=plugin_id, command="test", kwargs={"message": "hello from message with love from cactus!"}).string()# или CactusUtils.MessageUri.create(self, "test", message="hello from message with love from cactus!")... # отправляете сообщение с данной ссылкой, её можно также внутри текста оставлять и будет работать как "кликабельная" кнопка.... # в классе плагина@CactusUtils.MessageUri.callback("test")def test_message_uri_callback(self, params: CactusUtils.UriCallback, message: str): ...
Будет ли вызываться ваша функция, если было произведено длительное нажатие на ссылку (проверять можно через параметр long_press в UriCallback)На обычное нажатие не влияет.
Пример использования
Copy
... # класс плагина@CactusUtils.Uri.callback("test")def test_uri_callback(self, **kwargs): ...
Plugin (CactusModule)
Copy
class CactusModule(BasePlugin)
Базовый класс для плагинов с разными фичами.
Обязательно нужно наследовать свой класс плагина от данного класса, иначе система плагинов может работать неправильно.
Минимальная необходимая версия CactusLib для работы вашего плагина.
Если текущая версия меньше минимальной требуемой, плагин выдаст ошибку при загрузке.
Строка с данными, которая будет отправлена обратно вашему плагину при нажатии. Это основной способ обработки нажатий.Получаем с помощью метода CallbackData
Если True, то сообщение будет отправлено в чат с метаданными внутри текста сообщения. Это позволит увидеть всем пользователям с CactusLib данную клавиатуру.
Опциональные аргументы, которые будут переданы в функцию on_sent.
method add_row
Copy
def add_row(*btns) -> "Markup"
Добавляет ряд кнопок к клавиатуре.В качестве аргумента можно приводить список, тогда все кнопки из него будут добавлены в ряд.Метод возвращает себя, то есть self для удобства.
Создает ссылку с метаданными о текущей клавиатуре внутри.
Данную ссылку в сообщении будет видеть CactusLib и создавать клавиатуру из данных в ссылке.Возвращает строку типа tg://cactus/mdata/{compressed_data}
Будет ли вызываться ваша функция, если было произведено длительное нажатие на кнопку (проверять можно через параметр is_long в CallbackParams)На обычное нажатие не влияет.
Пример использования
Copy
# ... в классе плагина@CactusUtils.Inline.on_click("testbutton")def test_button_callback(self, params: CactusUtils.Inline.CallbackParams): ...
HTML
Copy
class HTML
Все методы являются статичными и их можно вызывать без инициализации класса.
method parse
Copy
def parse(text: str, custom_emoji: int = 1) -> dict
Тип Premium-эмодзи для распознания и отправки.0 (NOT_PREMIUM) - убрать все премиум-эмодзи и оставить только обычные, которые были внутри тега.1 (TELEGRAM_PREMIUM) - разрешить обычные премиум эмодзи.2 (CACTUS_PREMIUM) - заменить все теги типа <emoji id=123456789>❤️</emoji> на <a href='tg://cactus/emoji/123456789'>❤️</a>, которые будут преобразовываться CactusLib’ом и видны всем, у кого также установлен соответствующий плагин.
Тип Premium-эмодзи для распознания и отправки.0 (NOT_PREMIUM) - убрать все премиум-эмодзи и оставить только обычные, которые были внутри тега.1 (TELEGRAM_PREMIUM) - разрешить обычные премиум эмодзи.2 (CACTUS_PREMIUM) - заменить все теги типа [❤️](123456789) на [❤️](tg://cactus/emoji/123456789), которые будут преобразовываться CactusLib’ом и видны всем, у кого также установлен соответствующий плагин.