Skip to main content

A python library for interacting with eXpress BotX API

Project description

pybotx

Библиотека для создания чат-ботов и SmartApps для мессенджера eXpress

PyPI version PyPI - Python Version Coverage Code style

Особенности

  • Простая для использования
  • Поддерживает коллбэки BotX
  • Легко интегрируется с асинхронными веб-фреймворками
  • Полное покрытие тестами
  • Полное покрытие аннотациями типов

Установка

Используя pip:

pip install git+https://github.com/ExpressApp/pybotx.git

Предупреждение: Данный проект находится в активной разработке (0.y.z) и его API может быть изменён при повышении минорной версии.

Минимальный пример бота (интеграция с FastAPI)

from http import HTTPStatus
from uuid import UUID

from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse

from pybotx import (
    Bot,
    BotAccountWithSecret,
    HandlerCollector,
    IncomingMessage,
    build_command_accepted_response,
)

collector = HandlerCollector()


@collector.command("/echo", description="Send back the received message body")
async def echo_handler(message: IncomingMessage, bot: Bot) -> None:
    await bot.answer_message(message.body)


bot = Bot(
    collectors=[collector],
    bot_accounts=[
        BotAccountWithSecret(  # noqa: S106
            # Не забудьте заменить эти учётные данные на настоящие
            id=UUID("123e4567-e89b-12d3-a456-426655440000"),
            host="cts.example.com",
            secret_key="e29b417773f2feab9dac143ee3da20c5",
        ),
    ],
)

app = FastAPI()
app.add_event_handler("startup", bot.startup)
app.add_event_handler("shutdown", bot.shutdown)


@app.post("/command")
async def command_handler(request: Request) -> JSONResponse:
    bot.async_execute_raw_bot_command(await request.json())
    return JSONResponse(
        build_command_accepted_response(),
        status_code=HTTPStatus.ACCEPTED,
    )


@app.get("/status")
async def status_handler(request: Request) -> JSONResponse:
    status = await bot.raw_get_status(dict(request.query_params))
    return JSONResponse(status)


@app.post("/notification/callback")
async def callback_handler(request: Request) -> JSONResponse:
    bot.set_raw_botx_method_result(await request.json())
    return JSONResponse(
        build_command_accepted_response(),
        status_code=HTTPStatus.ACCEPTED,
    )

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

pybotx-0.39.1.tar.gz (51.4 kB view hashes)

Uploaded Source

Built Distribution

pybotx-0.39.1-py3-none-any.whl (94.1 kB view hashes)

Uploaded Python 3

Supported by

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