Official analytics SDK for Discord bots using Cordia
Project description
Cordia
The official Python analytics SDK for Discord bots.
Async-first design built on aiohttp. Tracks commands, users, server count, and uptime with automatic batching and background heartbeat.
Install
pip install cordia
Requires Python 3.8+.
Quick Start
import cordia
import os
# pass your discord.py bot/client instance
client = cordia.CordiaClient(
api_key=os.getenv("CORDIA_API_KEY"),
bot=bot, # bot_id auto-detected from bot.user.id
)
Discord.py Example
import discord
from discord.ext import commands
import cordia
import os
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
cordia_client = cordia.CordiaClient(
api_key=os.getenv("CORDIA_API_KEY"),
bot=bot, # bot_id + shard metadata auto-detected
)
@bot.event
async def on_ready():
print(f"Logged in as {bot.user}")
await cordia_client.post_guild_count(len(bot.guilds))
cordia_client.start(bot.loop)
@bot.command()
async def ping(ctx):
await ctx.send("Pong!")
await cordia_client.track_command(
command="ping",
user_id=str(ctx.author.id),
guild_id=str(ctx.guild.id) if ctx.guild else None,
)
bot.run(os.getenv("DISCORD_TOKEN"))
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str |
required | API key from the Cordia dashboard |
bot |
discord.Client |
recommended | Discord.py bot/client for bot_id + shard auto-detection |
bot_id |
str |
optional | Manual bot ID override (rarely needed) |
heartbeat_interval |
int |
30000 |
Heartbeat interval (ms) |
auto_heartbeat |
bool |
True |
Start heartbeat on start() |
batch_size |
int |
10 |
Events before auto-flush |
flush_interval |
int |
5000 |
Auto-flush interval (ms) |
debug |
bool |
False |
Enable debug logging |
API
| Method | Description |
|---|---|
start(loop) |
Start background tasks (flush + heartbeat) |
track_command(...) |
Queue a command event |
track_user(...) |
Queue a user activity event |
post_guild_count(count) |
Report server count (immediate) |
start_heartbeat(loop) |
Start heartbeat manually |
stop_heartbeat() |
Stop heartbeat |
get_uptime() |
Returns uptime in ms |
flush() |
Force-flush queued events |
close() |
Stop tasks, flush, and close session |
Documentation
Full guides and API reference at docs.cordialane.com.
License
MIT
Project details
Release history Release notifications | RSS feed
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 cordia-1.2.0.tar.gz.
File metadata
- Download URL: cordia-1.2.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17e9d67e433090c1b78237de90e2159bdb0a9e599709c20529eade5b1f3f3627
|
|
| MD5 |
51524a74575ffc11ed73c7ccac85863f
|
|
| BLAKE2b-256 |
0ce44a9ab928438ac872f3f2eed109305e324b58db8a9422fb2fbca50061997c
|
File details
Details for the file cordia-1.2.0-py3-none-any.whl.
File metadata
- Download URL: cordia-1.2.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df1f07a350e9c4731939d3ec9e78fed1e0539d05122be0cee4b168c0ef61a582
|
|
| MD5 |
f785ef630e74cab17ad95ff0bab1d070
|
|
| BLAKE2b-256 |
ba3a4501445596b741a920f69a6112e2608a4f55609d465a100678c76d0c2003
|