Skip to main content

A Python wrapper for the Fluxer API

Project description

Invite Tracker

Supported python versions PyPI version Pyright badge
Ruff badge uv
Join us!

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 Client and high-level Bot

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 limits
  • Gateway -- Manages WebSocket connection and event dispatch
  • Client -- Base event-driven interface
  • Bot -- High-level command framework
  • Cog -- Modular command grouping system

Data Models

fluxer.py provides strongly-typed models representing Fluxer entities:

  • Guild
  • Channel
  • Message
  • User
  • GuildMember
  • VoiceState
  • Webhook
  • Embed
  • Emoji

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:

https://deepwiki.com/akarealemil/fluxer.py/1-overview

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

fluxer_py-0.4.2.tar.gz (58.9 kB view details)

Uploaded Source

Built Distribution

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

fluxer_py-0.4.2-py3-none-any.whl (64.5 kB view details)

Uploaded Python 3

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

Hashes for fluxer_py-0.4.2.tar.gz
Algorithm Hash digest
SHA256 9d2c9ff636efa535d6c606f504426866428ce3f6495eb47c1f7c98deb9c224b6
MD5 aedfaa2c8dd164333ee0882de2669116
BLAKE2b-256 c0ff0eb77834f48cfa4e675ac5b0866e1828c6a534e1ed4a296b31c653642b61

See more details on using hashes here.

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

Hashes for fluxer_py-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b4d09b7c7d2d8486d545d39fe3252746da00b236817c86977e31d32f7b2a995b
MD5 a5c1ffaf22a3b25eba4fc14cc101210c
BLAKE2b-256 d1a00862f76c0b7ae404c2eaae91ddff6cb95a59dda7eda38acaaa55330ce592

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