Skip to main content

A lightweight, native voice implementation for hikari-based Discord bots

Project description


A lightweight, native voice implementation for hikari-based Discord bots


Overview

hikari-wave is a standalone voice module for hikari that provides direct voice gateway communication without requiring external backends like Lavalink.

It is designed to be:

  • Simple to use
  • Fully asynchronous
  • Native to hikari's architecture

No separate software. No complex setup. Just voice.

Contents

Features

  • Native Discord voice gateway implementation
  • Async-first, awaitable API
  • Strong typing and documentation throughout (Pylance/MyPy friendly)
  • Supplemental voice events for better control and UX
  • No external services (no Lavalink, no JVM, etc.)
  • Designed specifically for hikari's async model
  • Minimal overhead and predictable behavior

Installation

pip install hikari-wave

Ensure FFmpeg is installed and available in your system PATH.

Quick Start

Create a basic voice client bot:

import hikari

bot = hikari.GatewayBot("TOKEN")
voice = hikariwave.VoiceClient(bot)

bot.run()

Connect to a channel and play audio when you join a channel:

@bot.listen()
async def on_join(event: hikariwave.MemberJoinEvent):
    connection = await voice.connect(event.guild_id, event.channel_id)
    source = FileAudioSource("test.mp3")

    await connection.player.play(source)

That's it.

Implemented Features

  • Voice connect / disconnect
  • Audio playback
  • Move, reconnect, resume
  • Player utilities (queue, shuffle, next/previous, volume, etc.)
  • Audio Sources:
    • Files
    • URLs
    • In-memory buffers
    • YouTube
  • Discord Audio/Video End-to-End Encryption (DAVE)

Documentation

Full documentation is available at: https://hikari-wave.wildevstudios.net/

Library Lifecycle

See https://hikari-wave.wildevstudios.net/en/latest/pages/lifecycle for the full list of deprecated and experimental features.

Help and Contact

Feel free to join the hikari Discord server under the #wave channel for assistance.

Versioning & Stability Policy

hikari-wave follows Semantic Versioning with a clear and practical stability model designed to balance rapid development with reliability.

Version Format

MAJOR.MINOR.PATCH

Patch Releases (x.y.z)

  • Bug fixes and internal improvements only
  • No breaking changes
  • Always considered stable
  • No alpha (a) or beta (b) suffixes

Patch releases are safe to upgrade to without code changes.

Minor Releases (x.y.0)

  • Introduce new features, subsystems, or configuration options
  • Existing public APIs generally preserved, but behavior may expand
  • May include short-lived alpha/beta pre-releases before stabilization

Example releases flow: 1.0.0a1 -> 1.0.0b1 -> 1.0.0 -> 1.0.1 Pre-releases exist to gather feedback and catch issues early. Once stabilized, the same version is released as a stable minor.

Pre-Releases (a/b)

  • Used only for new minor/major versions
  • Intended for developers who want early access to new features/versions
  • Not recommended for production unless you are testing upcoming functionality

Recommendation

If you want maximum stability:

  • Pin to stable releases
  • Avoid alpha/beta versions

If you want early access to new features:

  • Opt into pre-releases and report issues

Deprecation Policy

To ensure stability while allowing hikari-wave to evolve, the project follows a structured and transparent deprecation process.

What is considered deprecated?

A feature may be deprecated if it:

  • Has a better or more flexible replacement
  • Causes long-term maintenance or performance issues
  • Conflicts with newer architectural changes

Deprecation Process

When a feature is deprecated:

  1. Explicit Announcement
  • The deprecation is documented in:
    • The changelog
    • The documentation (API docs)
  • A clear migration path is provided when possible
  1. Runtime Warnings
  • Deprecated features may emit a DeprecationWarning
  • Warnings are non-fatal and do not break existing code

Removal Timeline

  • Pre-1.0.0
    • Breaking removals may occur at any time
    • Deprecations will still receive advance notice whenever possible
  • 1.0.0+
    • Deprecated features will not be removed until the next major version

Experimental Features

  • APIs marked as experimental are exempt from the deprecation process
  • Experimental features may change or be removed without notice
  • Experimental status will always be clearly documented

User Responsibility

Users are encouraged to:

  • Monitor release notes and changelogs
  • Address deprecation warnings promptly
  • Test against pre-releases when relying on newer or evolving features

Contributing

Bug reports and feature requests are welcome via GitHub Issues. Clear reproduction steps and context are appreciated.

License

MIT License © 2025 WilDev Studios

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

hikari_wave-0.7.0a1.tar.gz (48.1 kB view details)

Uploaded Source

Built Distribution

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

hikari_wave-0.7.0a1-py3-none-any.whl (63.1 kB view details)

Uploaded Python 3

File details

Details for the file hikari_wave-0.7.0a1.tar.gz.

File metadata

  • Download URL: hikari_wave-0.7.0a1.tar.gz
  • Upload date:
  • Size: 48.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for hikari_wave-0.7.0a1.tar.gz
Algorithm Hash digest
SHA256 130fbcc7061647166e2bd77ad100aa92b8ffb81c2dc087387b6cf48fe987843f
MD5 23543c67d75cb3f6e943260a24c56c85
BLAKE2b-256 dfe7bde29d6843c88d0b772cea2beea5cd35c5ad83a0898cfd3566f23aeff609

See more details on using hashes here.

File details

Details for the file hikari_wave-0.7.0a1-py3-none-any.whl.

File metadata

  • Download URL: hikari_wave-0.7.0a1-py3-none-any.whl
  • Upload date:
  • Size: 63.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for hikari_wave-0.7.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e02df8e45b29422124548587325ba6bd130f37d90660a9409811963f8ddac4a
MD5 1cd15ba7821cbda293401f67b7d36b20
BLAKE2b-256 ffc897d5687a9936106f6e1d6020f473cb6d7758ac11fbec5721d1e1bd2f88f0

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