Skip to main content

Python SDK for Commandless relay API

Project description

commandless-relay (Python)

Official Python SDK for the Commandless relay API.

This package gives Python bots a simple client and a ready-to-use discord.py adapter.

Install

Core client:

pip install commandless-relay

With discord.py adapter support:

pip install "commandless-relay[discord]"

AI-only setup (no code)

Install and run from terminal, similar to the Node SDK flow:

pip install "commandless-relay[discord]"
commandless-discord

Set these environment variables first:

  • BOT_TOKEN - your Discord bot token
  • COMMANDLESS_API_KEY - API key created in Commandless dashboard
  • COMMANDLESS_SERVICE_URL (or SERVICE_URL) - optional, defaults to Commandless backend
  • BOT_ID - optional bot ID from dashboard (recommended)
  • COMMANDLESS_HMAC_SECRET - optional HMAC secret
  • COMMANDLESS_MENTION_REQUIRED - optional (true by default)
  • COMMANDLESS_RUNTIME_MODE - optional (sdk default, use sdk_hosted for always-on hosted connectors)

Quickstart (discord.py in code)

import os
import discord
from commandless_relay import RelayClient, use_discord_adapter

TOKEN = os.getenv("BOT_TOKEN")
API_KEY = os.getenv("COMMANDLESS_API_KEY")
BASE_URL = os.getenv("COMMANDLESS_SERVICE_URL") or os.getenv("SERVICE_URL")  # optional

intents = discord.Intents.default()
intents.message_content = True
intents.messages = True
intents.guilds = True

client = discord.Client(intents=intents)
relay = RelayClient(api_key=API_KEY, base_url=BASE_URL)  # base_url optional

use_discord_adapter(client, relay, mention_required=True)

@client.event
async def on_ready():
    print(f"Logged in as {client.user}")

client.run(TOKEN)

Environment variables

  • BOT_TOKEN - your Discord bot token
  • COMMANDLESS_API_KEY - API key created in Commandless dashboard
  • COMMANDLESS_SERVICE_URL (or SERVICE_URL) - optional, defaults to Commandless backend
  • BOT_ID - optional fixed bot id to lock config/persona
  • COMMANDLESS_HMAC_SECRET - optional HMAC secret
  • COMMANDLESS_MENTION_REQUIRED - optional (true by default)
  • COMMANDLESS_DISABLE_CONFIG_CACHE - optional (false by default)
  • COMMANDLESS_DEBUG - optional verbose logs (false by default)
  • COMMANDLESS_RUNTIME_MODE - optional (sdk default, use sdk_hosted for always-on hosted connectors)

Included components

  • RelayClient
    • send_event(event) -> Decision dict or None
    • register_bot(...) -> botId (optional flow)
    • heartbeat() (optional flow)
  • ConfigCache
    • fetches /v1/relay/config
    • local filtering for channel/user/role/premium/rate limits
    • polls every 30 seconds
  • use_discord_adapter(client, relay, mention_required=True, execute=None)
    • binds an on_message listener
    • binds an on_interaction listener for slash commands
    • sends events to relay
    • executes reply actions by default
    • applies local config filtering by default (disable via COMMANDLESS_DISABLE_CONFIG_CACHE=true)
    • sends a clear message on billing rejection (402 / no subscription or credits)

Testing

Run unit tests:

python -m unittest discover -s tests -p "test_*.py"

Release

Use the bundled release helper:

bash scripts/release.sh

This script runs tests, builds distributions, and uploads with Twine.

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

commandless_relay-0.1.12.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

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

commandless_relay-0.1.12-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file commandless_relay-0.1.12.tar.gz.

File metadata

  • Download URL: commandless_relay-0.1.12.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for commandless_relay-0.1.12.tar.gz
Algorithm Hash digest
SHA256 b2c5c0f0903675edce08fd550f34ce46b4cef1539814a103e31d76cece4de80b
MD5 93b9d99cba4f3d356109973bb339246b
BLAKE2b-256 ccb88f5f28bc1e6fefb3f4125177aacfaa38b2df81ed2dd9b4b9cb8c3b41ce28

See more details on using hashes here.

File details

Details for the file commandless_relay-0.1.12-py3-none-any.whl.

File metadata

File hashes

Hashes for commandless_relay-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 f9489b9f8fe9c0fd77dcb2aa92e7bb2d4f2bc399bd3690913c817e538ccf6c9c
MD5 96d904f6f5d56037e08fb0527d3967b8
BLAKE2b-256 31cd8a860e3a4176cf4dab230449d8a34d7330b312fa419006d70bcd1d67b7d2

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