A Python API wrapper for Fluxer.
Build bots and automated clients with a clean, type-safe, and event-driven architecture.
Features
- Async-first design built on
asyncio - REST API support with automatic rate limiting
- WebSocket gateway for real-time events
- Command framework with decorators
- Modular cog system
- Strongly-typed data models
- Structured error handling and retry logic
- Clean separation between low-level
Clientand high-levelBot
Installation
pip install fluxer.py
Requires Python 3.10 or higher.
Voice support
Voice requires LiveKit and ffmpeg:
pip install fluxer.py[voice]
or
uv add fluxer.py --extra voice
ffmpeg must be installed separately and available on your PATH.
On macOS (assuming you have Brew):
brew install ffmpeg
On Debian/Ubuntu:
apt install ffmpeg
On Windows: (assuming you have Chocolatey)
choco install ffmpeg
For development:
git clone https://github.com/akarealemil/fluxer.py.git
cd fluxer.py
pip install -e .
Template
A batteries-included template is available to get you started quickly with a new bot project.
Quick Start
A simple bot with a ping command:
import fluxer
bot = fluxer.Bot(command_prefix="!", intents=fluxer.Intents.default())
@bot.event
async def on_ready():
print(f"Bot is ready! Logged in as {bot.user.username}")
@bot.command()
async def ping(ctx):
await ctx.reply("Pong!")
if __name__ == "__main__":
TOKEN = "your_bot_token"
bot.run(TOKEN)
Choosing Between Bot and Client
Bot
Use Bot if you need: - Decorator-based commands - Built-in command
parsing - Cog support - Rapid bot development
Client
Use Client if you need: - Full event-driven control - A custom command
framework - Lower-level API interaction - Advanced or specialized
implementations
Architecture Overview
Bot extends Client, adding a command framework on top of the core
event system.
Core components:
HTTPClient-- Handles REST requests and rate limitsGateway-- Manages WebSocket connection and event dispatchClient-- Base event-driven interfaceBot-- High-level command frameworkCog-- Modular command grouping system
Data Models
fluxer.py provides strongly-typed models representing Fluxer entities:
GuildChannelMessageUserGuildMemberVoiceStateWebhookEmbedEmoji
Models encapsulate both state and behavior, exposing convenience methods such as:
Message.reply()Channel.send()Guild.kick_member()
Voice
Requires fluxer.py[voice] and ffmpeg
@bot.command()
async def play(ctx, channel_id: int, *, path: str):
channel = await bot.fetch_channel(str(channel_id))
async with await channel.connect(bot) as vc:
await vc.play_file(path)
For background playback with an after callback:
async with await channel.connect(bot) as vc:
vc.play(fluxer.FFmpegPCMAudio("music.mp3"), after=lambda e: print("done"))
# bot continues handling commands while audio plays
Pause and resume mid-playback:
vc.pause()
vc.resume()
print(vc.is_paused) # bool
FFmpegPCMAudio accepts the same options as discord.py's FFmpegPCMAudio:
| Parameter | Description |
|---|---|
executable |
Path to ffmpeg binary (default: "ffmpeg") |
before_options |
Arguments inserted before -i (e.g. "-ss 30" to seek) |
options |
Arguments inserted after the source (e.g. "-filter:a volume=0.5") |
sample_rate |
Output sample rate in Hz (default: 48000) |
num_channels |
1 for mono, 2 for stereo (default: 2) |
Intents
Intents determine which events your application receives from the
WebSocket gateway.
Common usage:
fluxer.Intents.default()
fluxer.Intents.all()
Limiting intents improves performance and ensures your application subscribes only to necessary events.
Exceptions
All library exceptions inherit from:
FluxerException
Errors include:
- HTTP errors mapped to REST status codes
- Gateway protocol errors
- Connection and retry-related failures
Documentation
Full documentation is available at:
Metadata
Release files for fluxer.py 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fluxer_py-0.4.2.tar.gz | 58.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fluxer_py-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 123.4 kB
Release files / fluxer_py-0.4.2.tar.gz
| Download URL | fluxer_py-0.4.2.tar.gz |
|---|---|
| Size | 58.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d2c9ff636efa535d6c606f504426866428ce3f6495eb47c1f7c98deb9c224b6
|
|
BLAKE2b-256 checksum How to use checksums |
c0ff0eb77834f48cfa4e675ac5b0866e1828c6a534e1ed4a296b31c653642b61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / fluxer_py-0.4.2-py3-none-any.whl
| Download URL | fluxer_py-0.4.2-py3-none-any.whl |
|---|---|
| Size | 64.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b4d09b7c7d2d8486d545d39fe3252746da00b236817c86977e31d32f7b2a995b
|
|
BLAKE2b-256 checksum How to use checksums |
d1a00862f76c0b7ae404c2eaae91ddff6cb95a59dda7eda38acaaa55330ce592
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|