Python SDK for building Tavern bots
Project description
taverns.py
Python SDK for building Tavern bots on the Taverns platform.
Installation
pip install taverns.py
# or from source:
pip install -e .
Requires Python 3.10+.
Quick Start
import os
from taverns import Client, Intents
client = Client(intents=Intents.MESSAGES | Intents.MESSAGE_CONTENT)
@client.event
async def on_ready():
print(f"Logged in as {client.user.display_name}")
@client.event
async def on_message_create(message):
if message.sender_id == client.user.id:
return
if message.content == "!ping":
await client.send_message(message.tavern_id, message.channel_id, content="Pong!")
client.run(os.environ["BOT_TOKEN"])
Slash Commands
from taverns import Client, Intents, Interaction
from taverns.commands import command, option
from taverns.types import CommandOptionType
client = Client(intents=Intents.MESSAGES | Intents.INTERACTIONS)
@client.event
async def on_ready():
await client.register_commands([
command("ping", "Check latency"),
command("greet", "Greet someone", options=[
option("name", "Who to greet", CommandOptionType.STRING, required=True),
]),
])
@client.event
async def on_interaction_create(interaction: Interaction):
if interaction.command_name == "ping":
await interaction.reply("Pong!")
elif interaction.command_name == "greet":
name = interaction.get_option("name", "World")
await interaction.reply(f"Hello, {name}!")
client.run(os.environ["BOT_TOKEN"])
Deferred Responses
@client.event
async def on_interaction_create(interaction: Interaction):
if interaction.command_name == "slow":
await interaction.defer_reply() # Shows "thinking..." to the user
result = await do_slow_work()
await interaction.follow_up(f"Done: {result}")
Ephemeral Responses
await interaction.reply("Only you can see this", ephemeral=True)
Webhook Verification
from taverns import verify_webhook_signature
is_valid = verify_webhook_signature(
raw_body=request.data,
signature=request.headers["X-Tavern-Signature"],
secret=WEBHOOK_SECRET,
timestamp=request.headers.get("X-Tavern-Timestamp"),
)
Intents
Control which events your bot receives:
from taverns import Intents
# Specific intents
client = Client(intents=Intents.MESSAGES | Intents.INTERACTIONS)
# All non-privileged intents
client = Client(intents=Intents.DEFAULT)
# All intents (including privileged)
client = Client(intents=Intents.ALL)
Privileged intents (MESSAGE_CONTENT, MEMBERS) are self-serve for private bots.
REST Client
For direct API access:
# Available after login
channels = await client.rest.get_channels(tavern_id)
members = await client.rest.get_members(tavern_id)
messages = await client.rest.get_messages(tavern_id, channel_id, limit=50)
Links
- API Documentation
- Developer Portal
- taverns.js (Node.js SDK)
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
taverns_py-0.1.0.tar.gz
(18.2 kB
view details)
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 taverns_py-0.1.0.tar.gz.
File metadata
- Download URL: taverns_py-0.1.0.tar.gz
- Upload date:
- Size: 18.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92e2ea8a35a7ba3c445ea6328a946b3d1f15e1462eba98177be789da1b0b5c01
|
|
| MD5 |
da04d9b262f02b8ab3f26a64c436dfe3
|
|
| BLAKE2b-256 |
59ae1bf9af166dfd6a265d60397156dd785c2dbc32334cefdb5e5964e06d2436
|
File details
Details for the file taverns_py-0.1.0-py3-none-any.whl.
File metadata
- Download URL: taverns_py-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b67353d328b5230c7370bd40904c1f0d50990925c9499462f19144eef20e8d13
|
|
| MD5 |
78a9413e150685e67f18194e9386eec2
|
|
| BLAKE2b-256 |
6be2b4bfb9236c1d1f2f77382c185e5122ad2657eda0b330ce9f11a80cf4689e
|