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
Ссылки
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xtgbot-0.0.1.tar.gz.
File metadata
- Download URL: xtgbot-0.0.1.tar.gz
- Upload date:
- Size: 165.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c0fd9bc5b35a1e7c3bc4c8878b8dc324cf4656e5ea3a46fe0c664a37a2438b7
|
|
| MD5 |
cf20a5c423a8164519b1145c471a19fa
|
|
| BLAKE2b-256 |
029721f5748e94f133ad12234f4b720ed9fc9d0c2accdcef61fc3bc45030d185
|
File details
Details for the file xtgbot-0.0.1-py3-none-any.whl.
File metadata
- Download URL: xtgbot-0.0.1-py3-none-any.whl
- Upload date:
- Size: 338.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2938dd12ef997cdd2793950bb5ee06b969b9b3a3b039a8ff8d5dea149afdabff
|
|
| MD5 |
1cf89d12b43822b8071bb3a600d09c63
|
|
| BLAKE2b-256 |
6ad3d494b2ea7f94b0266b151063698f85efa4c9eb647781d618781d02ae67ed
|