A music bot build in Serenity/Rust.

Overview

Sunny Flowers

Github Workflows Rust 1.55.0+

Sunny Flowers is a Discord bot to play media in voice channels. It uses Serenity and Songbird to accomplish this.

Running

You can run Sunny using cargo run --release
When running Sunny locally, she can take in the DISCORD_TOKEN via a .env file.

Deployment

For deploying Sunny a Dockerfile and kubernetes config are provided.
This works like normal and requires the DISCORD_TOKEN present in the environment.

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Contact

Sophie - Ailbe#7190

Comments
  • Big Refactor

    Big Refactor

    Refactored commands to extract the core logic to be handled in the effects, this allows us to be able to re-use this logic in other places where it was already being manually re-used anyway.

    Added custom Sunny error/result handling

    Added prefix to the .env for local testing

    wip #41

    Co-authored-by: Victor Roest [email protected]

    cleanup hacktoberfest-accepted 
    opened by NULLx76 4
  • Bake version number into the binary

    Bake version number into the binary

    So that it would be able to be queried using a hypothetical info command or shown in the help section.

    This should probably use the git tag if present else revision + last tag

    enhancement 
    opened by NULLx76 1
  • Sunny now does not attempt

    Sunny now does not attempt

    to join a call initiated by a user who is already in the same voice channel as her.

    Closes #59

    Co-authored-by: Victor [email protected]

    opened by Druue 0
  • Sunny shouldn't re-join a channel she's already in.

    Sunny shouldn't re-join a channel she's already in.

    As it's currently implemented, sunny just joins the channel even though she's already in it. Sunny should instead respond that she's already in that call and not make a join request

    enhancement 
    opened by Druue 0
  • Commands Clean Up & Local Dev Testing

    Commands Clean Up & Local Dev Testing

    commands.rs is getting unwieldly with the changes to the commands, might be better to seperate out some of the commands into their own specific files as an example:

    commands.rs
    commands/
    - queue.rs
    

    Also, to improve local testing, a new env variable for the prefix

    cleanup 
    opened by Druue 0
  • Inform user of age restriction error

    Inform user of age restriction error

    If a youtube video is age restricted Sunny fails ominously with "Failed to play", it would be nice to inform the user of why it has failed.

    image logs on the server side

    bug 
    opened by NULLx76 0
  • Metrics & Profiling

    Metrics & Profiling

    Add metrics and profiling, probably something like prometheus. This is to better understand the performance characteristics of the bot and gain insights in usage.

    enhancement 
    opened by NULLx76 0
Releases(1.0.0)
  • 1.0.0(Oct 8, 2021)

    v1.0.0 - 2021-10-08 - Initial Release

    The initial release of the Sunny Flowers Discord music bot.

    Added

    Sunny now supports the following commands:

    • join: joins your voice channel
    • leave: leaves the voice channel
    • play: adds a song to the queue
    • play_next: adds a song to the front of the queue
    • pause: pauses the playback of the current song
    • resume: resumes the playback of the current song
    • skip: skips to the next song in the queue
    • stop: stops the current song and clears queue
    • shuffle: shuffles the queue
    • swap: swaps two numbers in the queue from position
    • remove_at: removes a song from the queue at a specific index
    • now_playing: shows an embed containg info of the currently playing song
    • queue: displays the songs coming up in the queue
    • help: shows available commands, their aliases, and usage.

    Known Bugs

    • #16: Playlists behave buggy
    • #39: Song metadata may not show correctly for raw music files
    • #54: YouTube's age restricted videos don't play and fail silently
    Source code(tar.gz)
    Source code(zip)
Owner
Sophie
Software Developer
Sophie
Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device. Polaris works by streami

Antoine Gersant 1k Jan 9, 2023
musify is a simple discord bot to play music within a voice channel, written in the rust programming language.

musify-rs musify is a simple discord bot to play music within a voice channel, written in the rust programming language. Features A simple song queue

NV6 5 Aug 14, 2022
🎧 a self-hosted Spotify → Discord music bot

Aoede is a Discord music bot that directly streams from Spotify to Discord. The only interface is Spotify itself. Note: a Spotify Premium account is c

Max Isom 159 Dec 29, 2022
MRVN is a Discord music player bot.

MRVN is a Discord music player bot. It has a few neat features: Supports a wide array of sites, including Youtube, Soundcloud, Twitch and many mo

Tom Barham 17 Jan 1, 2023
A music theory guide written in Rust.

Rust Music Theory A library and executable that provides programmatic implementation of the basis of the music theory. Table of Contents Overview Usag

Ozan Kaşıkçı 551 Dec 21, 2022
Terminal Music Player written in Rust

Terminal Music Player written in Rust Listen to music freely as both in freedom and free of charge! Freedom: As time goes by, online service providers

null 376 Jan 3, 2023
Small music theory library with MIDI capabilities written in Rust

mumuse Small music theory library with MIDI capabilities written in Rust (wip). Examples Creating notes and transpositions // Declare Note from &str l

Alexis LOUIS 4 Jul 27, 2022
A terminal music player written in the Rust language.

A terminal music player written in the Rust language. (Windows) Requirements Configuration file path: C:\Users\xxx\.config\music_player\config.yml # P

xiao hui 162 Nov 12, 2022
Tool for solving music harmonics written in rust.

Harmonized Tool for solving harmonics tasks Installation steps Requirements Make shure you have installed rust cargo If not: Download and run rust ins

Dmitry Miasnenko 0 Jan 28, 2022
Small, compact music player written with Rust.

trill Small, compact music player based on rodio. Usage Run the program with --help to see the available options. To just play a sound file: trill -p

Will 3 Nov 25, 2022
The open source musician's digital music stand

DiNoScore* A digital music stand written with GTK in Rust using WoAB. Includes an editor to import your sheet. Touch-friendly thanks to Libhandy. Ever

null 13 Dec 5, 2022
Your musical pokedex, Plex for music

Musidex Your musical pokedex, Plex for music. Add songs from youtube videos or youtube playlist to your library, or import them from your local files.

Pâris DOUADY 35 Oct 5, 2022
A next-generation music player and manager

ouverture A next-generation music player and manager Very much at Work-In-Planning stage now Planned features GUI (localizable) Backend (something lik

Michael B 9 Nov 17, 2022
Random music in Annil and stream as a radio station.

anni-radio anni-radio is an audio streaming client for Project Anni. Installation cargo install --git https://github.com/project-anni/radio Dependency

Project Anni 2 Dec 16, 2021
The definitive e-book reader music player (Kobo, Kindle)

Introduction E-ink devices have traditionally been only for reading... well no more! Buck is a fully-fledged music player for e-ink devices (tested fu

BillK 11 Oct 28, 2022
Tools for working with MIDI files - written by All the Music LLC for musicians.

Tools for Generating and Working with MIDI Files NOTICE: This repo is under construction and is not ready for use. Once it is ready, and the other rep

null 9 Nov 17, 2022
A discord voice recorder bot

distream distreamは長時間の音声録音Botで、2時間以上の録音が可能です。 音声はwebmで保存され、ユーザーごとにトラックが分離されているので書き出す際にユーザーを選択できます。 how to use !join to join voice channel and start re

virtualCrypto 6 Sep 5, 2022
Rust task runner and build tool.

cargo-make Rust task runner and build tool. Overview Installation Binary Release Usage Simple Example Tasks, Dependencies and Aliases Commands, Script

Sagie Gur-Ari 1.8k Jan 7, 2023
Build custom songs for Pokémon Mystery Dungeon: Explorers of Sky from Soundfonts and MIDI files

skysongbuilder A tool to build custom songs for Pokémon Mystery Dungeon: Explorers of Sky from Soundfonts and MIDI files Features: Optimizations down

Adakite 3 Sep 23, 2023