Skip to main content

Low-level Python library for interacting with the Telegram Bot API

Project description

xtgbot

Телега по библиотеке

Обзор

XTGBot - это низкоуровневая, высокопроизводительная библиотека для работы с Telegram Bot API, обеспечивающая:

  • Полную совместимость с официальной документацией Telegram
  • Минимальные накладные расходы
  • Поддержку фильтров и роутеров
  • Подробные docstring для всех методов и типов
  • Автоматическую генерацию кода методов API

Ключевые особенности

  • Скорость: Оптимизирована для быстрой работы за счет минималистичной реализации
  • Расширяемость: Встроенные роутеры и фильтры для удобной обработки сообщений
  • Автогенерация: Все типы и методы API генерируются автоматически
  • Подробная документация: Все классы и методы содержат детальные docstring

Установка

pip install xtgbot

Быстрый старт

Пример бота

from xtgbot import Bot, Router, Fs
from xtgbot.tg.types import Message

# Создаем бота
bot = Bot("YOUR_BOT_TOKEN")

# Создаем роутер
router = Router()

@router.connect
@Fs.on_command("start")
async def start_handler(message: Message):
    await bot.do.sendMessage(
        chat_id=message.chat.id,
        text="Привет! Я работаю!"
    )

# Подключаем роутер к боту
router.connect(bot)

# Запускаем бота
bot.start_polling()

Основные компоненты

1. Класс Bot

Центральный класс для управления ботом:

class Bot:
    def __init__(self, token: str)
    def start_polling(self, timeout: int = 0, allowed_updates: list = [...])
    async def stop(self)
    async def pause(self)
    async def resume(self)
    def bot_handler(self, fn: Callable[[Update], Any])

Пример использования:

bot = Bot("TOKEN")

@bot.bot_handler
async def handle_updates(update: Update):
    print(f"Received update: {update.update_id}")

bot.start_polling()

2. Класс Router

Для организации обработчиков:

class Router:
    def connect(self, node: Router | Callable | Bot)
    def connect_hi(self, node: Router | Callable | Bot)
    def disconnect(self, node: Router | Callable | Bot)

Пример:

router = Router()

@router.connect
@Fs.on_message
async def echo_handler(message: Message):
    await bot.do.sendMessage(
        chat_id=message.chat.id,
        text=message.text
    )

router.connect(bot)

3. Фильтры

Базовые фильтры:

Filter(**kwargs)

Встроенные пресеты (Fs):

Fs.on_message
Fs.on_command(command: str)
Fs.on_any_command
Fs.on_callback

AIOgram-like фильтр (F):

F  # Магический фильтр в стиле AIOgram

Пример использования фильтров:

@router.connect
@Fs.on_command("help")
async def help_handler(message: Message):
    ...

@router.connect
@F(F.data == "btn0")
async def button_handler(callback: CallbackQuery):
    ...

4. User State

Для управления состоянием:

class UserState:
    def __init__(self, user_id: int)
    def check(self, state: str) -> bool
    def set(self, state: str) -> None
    def filter(self, state: str) -> Callable[[Callable[[Update], Any]], Callable[[Update], Any]]

Пример:

@router.connect
@U.filter("start")
@Fs.on_message
async def start_state_handler(message: Message):
    user_state = UserState(message.chat.id)
    user_state.set("next_state")

Структура проекта

xtgbot/
├── bot.py            # Основной класс бота
├── ext.py            # Расширения (роутеры, фильтры)
├── gen.py            # Генератор кода для API методов
└── tg/
    ├── __init__.py   # Экспорт всех типов и методов
    ├── base_type.py  # Базовый тип для данных
    ├── session.py    # Реализация API методов
    ├── types/        # Все типы Telegram API
    └── methods/      # Все методы Telegram API

Генерация кода

Система автоматически генерирует:

  • Все типы данных Telegram API
  • Все методы Telegram API
  • Сессионный клиент с поддержкой всех методов

NOTE: Реализация в gen.py гарантирует, что библиотека всегда соответствует последней версии Telegram API.

Примеры использования

Обработка сообщений

@router.connect
@Fs.on_message
async def echo(message: Message):
    if message.text:
        await bot.do.sendMessage(
            chat_id=message.chat.id,
            text=f"Вы сказали: {message.text}"
        )

Работа с кнопками

from xtgbot.tg.types import InlineKeyboardMarkup, InlineKeyboardButton

@router.connect
@Fs.on_command("start")
async def start(message: Message):
    await bot.do.sendMessage(
        chat_id=message.chat.id,
        text="Выберите действие:",
        reply_markup=InlineKeyboardMarkup(
            inline_keyboard=[[
                InlineKeyboardButton(text="Нажми меня", callback_data="test")
            ]]
        )
    )

@router.connect_hi
@Fs.on_callback
@F(F.data == "test")
async def callback_handler(callback: CallbackQuery):
    await bot.do.answerCallbackQuery(
        callback_query_id=callback.id,
        text="Вы нажали кнопку!"
    )

@router.connect
@Fs.on_callback
async def callback_handler(callback: CallbackQuery):
    await bot.do.answerCallbackQuery(
        callback_query_id=callback.id,
        text="Вы нажали на неизвестную кнопку!"
    )

Полная документация

Все классы и методы содержат подробные docstring с описанием параметров и примеров использования. Для просмотра полной документации используйте:

help(Bot)
help(Router)
help(Fs)

Заключение

XTGBot предоставляет:

  • Полную и актуальную реализацию Telegram Bot API
  • Высокую производительность
  • Гибкую систему фильтров и роутинга
  • Удобные инструменты для управления состоянием
  • Автоматическую генерацию кода

Библиотека идеально подходит для создания высоконагруженных ботов с минимальными накладными расходами.

Вклад и поддержка

Для поддержки монетой можете связаться со мной в Telegram @vi_is_raven.

Для вклада, пожалуйста, создавайте issue (GitHub/GitLab/TvoyGit) или pull request (только TvoyGit).

Последние слова

Методы и типы генерируются с помощью TgAPIper

Ссылки

Telegram Bot API

Telegram

GitHub

GitLab

TvoyGit

PyPI

TgAPIper:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xtgbot-0.0.4.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xtgbot-0.0.4-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file xtgbot-0.0.4.tar.gz.

File metadata

  • Download URL: xtgbot-0.0.4.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for xtgbot-0.0.4.tar.gz
Algorithm Hash digest
SHA256 bf29475b1047911eb6c3f0968cd6cbb9fccf9cc4465a4553008b8210a04ed26a
MD5 4ecdf5fbf0663b6dde5799d5f4636c78
BLAKE2b-256 2729e57ee10496b17bf97a2a4c2a6aea4e143d52082e18695b33bbb60ba44452

See more details on using hashes here.

File details

Details for the file xtgbot-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: xtgbot-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for xtgbot-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 22f6afca7836a3851714bce67791964aab314dec4077d3a7b4bd2f18c565ea46
MD5 1e660493a6795603625794e0dc956b59
BLAKE2b-256 f3a75b242b90e43f28a12444733c5a3dc763901946e50623394c4341876fdc69

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page