A Python wrapper for the Fluxer API
Project description
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:
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 fluxer_py-0.4.2.tar.gz.
File metadata
- Download URL: fluxer_py-0.4.2.tar.gz
- Upload date:
- Size: 58.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d2c9ff636efa535d6c606f504426866428ce3f6495eb47c1f7c98deb9c224b6
|
|
| MD5 |
aedfaa2c8dd164333ee0882de2669116
|
|
| BLAKE2b-256 |
c0ff0eb77834f48cfa4e675ac5b0866e1828c6a534e1ed4a296b31c653642b61
|
File details
Details for the file fluxer_py-0.4.2-py3-none-any.whl.
File metadata
- Download URL: fluxer_py-0.4.2-py3-none-any.whl
- Upload date:
- Size: 64.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4d09b7c7d2d8486d545d39fe3252746da00b236817c86977e31d32f7b2a995b
|
|
| MD5 |
a5c1ffaf22a3b25eba4fc14cc101210c
|
|
| BLAKE2b-256 |
d1a00862f76c0b7ae404c2eaae91ddff6cb95a59dda7eda38acaaa55330ce592
|