Skip to main content

fluxerpy3

A Python wrapper for the Fluxer API, inspired by discord.py's design. Fluxer is a Discord-like platform with guilds, channels, and messages.

Features

  • Async/await support – Built with modern Python async/await syntax
  • Easy to use – Simple and intuitive API similar to discord.py
  • Type hints – Full type hint support for better IDE integration
  • Gateway support – Real-time WebSocket events (MESSAGE_CREATE, GUILD_MEMBER_ADD, …)
  • Rich models – Guild, Channel, Member, Role, Message, Reaction
  • Error handling – Custom exceptions for different error scenarios

Installation

pip install fluxerpy3

Or install in development mode:

pip install -e .

Quick Start

import asyncio
import fluxerpy3

async def main():
    async with fluxerpy3.Client(token="your_bot_token") as client:
        # Get the bot user
        me = await client.get_me()
        print(f"Logged in as: {me.username}")

        # List all guilds (servers)
        guilds = await client.get_guilds()
        for guild in guilds:
            print(f"  {guild.name} – {guild.member_count} members")

        # Send a message
        await client.send_message("channel_id_here", "Hello from fluxerpy3! 🚀")

asyncio.run(main())

Usage Examples

Guild & Channel Operations

# Get a specific guild
guild = await client.get_guild("guild_id")

# Get all channels in a guild
channels = await client.get_guild_channels(guild.id)
text_channels = [c for c in channels if c.is_text_channel]

# Get recent messages from a channel
messages = await client.get_channel_messages("channel_id", limit=50)
for msg in messages:
    print(f"{msg.author}: {msg.content}")

# Create a new channel
new_channel = await client.create_channel(guild.id, "bot-log", topic="Bot activity log")

Message Operations

# Send a message
msg = await client.send_message("channel_id", "Hello!")

# Edit a message
edited = await client.edit_message("channel_id", msg.id, "Hello (edited)!")

# Delete a message
await client.delete_message("channel_id", msg.id)

# Convenience methods on Message objects
await msg.reply("Replying in the same channel")
await msg.edit("Updated content")
await msg.delete()

Reaction Operations

# Add a reaction
await client.add_reaction("channel_id", msg.id, "👍")

# Remove own reaction
await client.remove_reaction("channel_id", msg.id, "👍")

# Remove another user's reaction
await client.remove_reaction("channel_id", msg.id, "👍", user_id="user_id")

# Via Message object
await msg.add_reaction("🔥")

Member & Moderation Operations

# List members
members = await client.get_guild_members(guild.id, limit=100)

# Get a specific member
member = await client.get_guild_member(guild.id, "user_id")
print(f"{member.display_name} – roles: {member.roles}")

# Kick / ban / unban
await client.kick_member(guild.id, "user_id", reason="Rule violation")
await client.ban_member(guild.id, "user_id", reason="Spam", delete_message_seconds=86400)
await client.unban_member(guild.id, "user_id")

# Convenience methods on Member
await member.kick(reason="Rule violation")
await member.ban(reason="Spam")

Gateway (Real-time Events)

import asyncio
import fluxerpy3
from fluxerpy3 import Intents

async def on_message_create(data):
    author = data.get("author", {})
    print(f"{author.get('username')}: {data.get('content')}")

async def main():
    async with fluxerpy3.Client(token="your_bot_token") as rest:
        gateway_url = await rest.get_gateway_url()

    gw = fluxerpy3.GatewayClient(
        token="your_bot_token",
        gateway_url=gateway_url,
        intents=Intents.DEFAULT,
    )
    gw.on("MESSAGE_CREATE", on_message_create)
    await gw.connect()

asyncio.run(main())

API Reference

Client

User methods:

  • get_me() – Get the authenticated bot user
  • get_user(user_id) – Get a user by ID
  • get_user_by_username(username) – Look up a user by username

Guild methods:

  • get_guilds() – List all guilds the bot is in
  • get_guild(guild_id) – Get a specific guild
  • get_guild_channels(guild_id) – List channels in a guild
  • get_guild_members(guild_id, limit) – List members
  • get_guild_member(guild_id, user_id) – Get a specific member
  • get_guild_roles(guild_id) – List roles
  • kick_member(guild_id, user_id, reason) – Kick a member
  • ban_member(guild_id, user_id, reason, delete_message_seconds) – Ban a user
  • unban_member(guild_id, user_id) – Unban a user

Channel methods:

  • get_channel(channel_id) – Get a channel
  • create_channel(guild_id, name, channel_type, topic, parent_id, nsfw) – Create a channel
  • delete_channel(channel_id) – Delete a channel

Message methods:

  • get_channel_messages(channel_id, limit) – Fetch messages
  • get_message(channel_id, message_id) – Fetch one message
  • send_message(channel_id, content) – Send a message
  • edit_message(channel_id, message_id, content) – Edit a message
  • delete_message(channel_id, message_id) – Delete a message

Reaction methods:

  • add_reaction(channel_id, message_id, emoji) – Add a reaction
  • remove_reaction(channel_id, message_id, emoji, user_id) – Remove a reaction

Gateway:

  • get_gateway_url() – Fetch WSS gateway URL
  • create_gateway_client(intents) – Create a GatewayClient

Models

Model Key properties
User username, discriminator, display_name, avatar_url, bot, status
Guild name, icon_url, owner_id, member_count, description
Channel name, type, guild_id, topic, is_text_channel, is_voice_channel, is_category
Member user, nick, display_name, guild_id, roles, joined_at
Role name, color, permissions, position, mentionable, hoist
Message content, channel_id, guild_id, author, member, created_at, reactions, attachments
Reaction emoji, count, me

Error Handling

from fluxerpy3 import AuthenticationError, NotFoundError, RateLimitError, APIError

try:
    async with fluxerpy3.Client(token="invalid") as client:
        await client.get_me()
except AuthenticationError:
    print("Invalid bot token")
except NotFoundError:
    print("Resource not found")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except APIError as e:
    print(f"API error {e.status_code}: {e}")

License

MIT License – see LICENSE file for details

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Metadata

Release files for fluxerpy3 0.1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fluxerpy3 0.1.2.1
File Size Uploaded Provenance Actions
fluxerpy3-0.1.2.1.tar.gz 27.8 kB Without provenance Details for fluxerpy3-0.1.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fluxerpy3 0.1.2.1
File Interpreter ABI Platform Actions
fluxerpy3-0.1.2.1-py3-none-any.whl Python 3 none any Details for fluxerpy3-0.1.2.1-py3-none-any.whl

Total release size: 48.1 kB

Release files / fluxerpy3-0.1.2.1.tar.gz

Download URL fluxerpy3-0.1.2.1.tar.gz
Size 27.8 kB
Tags Source
SHA-256 checksum
How to use checksums
829166d1697e2031da4ea1531b034e5e9d5aeda6c9427f38c6d12865cf9e41a3
BLAKE2b-256 checksum
How to use checksums
4ae445c3a0727c0fc9437c8efc224a88577364f536fdef31a0d4bdb8a066dd46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Release files / fluxerpy3-0.1.2.1-py3-none-any.whl

Download URL fluxerpy3-0.1.2.1-py3-none-any.whl
Size 20.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf2a06e85bc635b2049df25a3f126a390121aafeac6f017892d941e5fbb73310
BLAKE2b-256 checksum
How to use checksums
ed8585035b6585185bb79642a0a17881fd9f06c3fdc2c6d3d058d955e9c29558
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Security for fluxerpy3 0.1.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page