Skip to main content

Lightweight library for building Microsoft Bot Service bots - Python

Project description

botas logo

botas

A lightweight, multi-language library for building Microsoft Teams bots — this is the core Python package.

For zero-boilerplate FastAPI hosting, see botas-fastapi.

Installation

pip install botas

Quick start (with FastAPI)

from botas import BotApplication
from botas_fastapi import bot_auth_dependency
from fastapi import Depends, FastAPI, Request

bot = BotApplication()

@bot.on("message")
async def on_message(ctx):
    await ctx.send(f"You said: {ctx.activity.text}")

app = FastAPI()

@app.post("/api/messages", dependencies=[Depends(bot_auth_dependency())])
async def messages(request: Request):
    body = await request.body()
    await bot.process_body(body.decode())
    return {}

Or use the higher-level botas-fastapi wrapper for a simpler setup:

from botas_fastapi import BotApp

app = BotApp()

@app.on("message")
async def on_message(ctx):
    await ctx.send(f"You said: {ctx.activity.text}")

app.start()

API

BotApplication

The core bot class — web-framework-agnostic.

Method Description
on(type, handler) Register a handler for an activity type (also works as a @decorator)
on_invoke(name, handler) Register a handler for an invoke activity by name (also works as a @decorator)
use(middleware) Add a middleware to the turn pipeline (runs in registration order)
process_body(body) Process a raw JSON body string

Authentication options

BotApplicationOptions fields (also resolved from environment variables):

Option Env variable Description
client_id CLIENT_ID Azure AD application (bot) ID
client_secret CLIENT_SECRET Azure AD client secret
tenant_id TENANT_ID Azure AD tenant ID (default: common)
managed_identity_client_id MANAGED_IDENTITY_CLIENT_ID Managed identity client ID
token_factory Custom async token factory (scope, tenant_id) -> str

Documentation

License

MIT

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

botas-0.3.72.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

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

botas-0.3.72-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file botas-0.3.72.tar.gz.

File metadata

  • Download URL: botas-0.3.72.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for botas-0.3.72.tar.gz
Algorithm Hash digest
SHA256 b2f7efcc413b588fe0cdd504cce9472b2a62e07f79312c2bd2128777a05fd222
MD5 e0dcfe6789b7b88ff848557c9a5fce0f
BLAKE2b-256 7d32753677ca1bc7735415ca53b52d5eb4ee422ec4ab4e62d1992af84b2ebb35

See more details on using hashes here.

Provenance

The following attestation bundles were made for botas-0.3.72.tar.gz:

Publisher: CD.yml on rido-min/botas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file botas-0.3.72-py3-none-any.whl.

File metadata

  • Download URL: botas-0.3.72-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for botas-0.3.72-py3-none-any.whl
Algorithm Hash digest
SHA256 b545d2d73c3d14af3e34c386503fe3a45f9d521ba4e139a3bbf0d2f73e92ba57
MD5 e7bde1f7d0299e5e5a6839b8bc6cce0c
BLAKE2b-256 f6315038de8810000e2bf8f11b4f3fdf48b26664595c54b3638d98a9e751aac2

See more details on using hashes here.

Provenance

The following attestation bundles were made for botas-0.3.72-py3-none-any.whl:

Publisher: CD.yml on rido-min/botas

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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