GithubHelp home page GithubHelp logo

zekrotja / yuri69 Goto Github PK

View Code? Open in Web Editor NEW
10.0 3.0 4.0 5.46 MB

The best soundboard that exists for Discord.

License: MIT License

Go 55.87% HTML 0.12% TypeScript 39.27% JavaScript 0.42% CSS 0.06% Dockerfile 0.58% Shell 1.77% HCL 1.91%
discord discord-bot soundboard discord-soundboard discord-soundbot hacktoebrfest

yuri69's Introduction

~ YURI 69 ~

Even faster, harder, louder!
The best Discord Soundboard you can get.


     

Yuri69 is the next level of Discord Sound Boards. Featuring a fancy web interface where you can manage all your sounds, hotkey control, an open REST API to connect to devices like a Stream Deck, for example, and much more!

Why?

  • You can upload, play, search, manage, favorite and delete sounds via the interactive web interface (which is easy to use on mobile as well).
  • Play and import sounds directly from YouTube.
  • Twitch integrations where viewers can play sounds via the chat or web interface.
  • An open REST API so you can use Yuri with the StreamDeck, for example.
  • Playback statistics.

Why not just use the integrated Discord Soundboard?

  • Discord only allows up to 25 sounds per guild - you can upload as many sounds as you want in yuri!
  • Discord only allows using sounds across guilds with a nitro subscription - you can share as many sounds between guilds as you want (as long as yuri is part of the guilds)!

Features

You can log in to the web interface using your Discord Account (via OAuth2). There you can list, search, filter, upload, edit, favorize and remove sounds as well as managing the player state (join/leave chanel, stop playback, manage volume). Also, you can set personal settings like the hotkey trigger or guild filters for random sound playback.

You can directly upload sounds via the web interface. There you can specify a unique ID, displayname and tags. These tags can be used for filtering and searching sounds. All uploaded files are converted using FFMPEG to be stored in an optimized file state for playback.

When going to the setting page, you can scan the displayed QR code using your mobile device to control the sound board from another device! You can also obtain an API key there to, for exmaple, play sounds from a stream deck or batch-upload sounds you have laying around (see scripts/upload.sh).

There are also some general playback stats like a playback log or a list of most played sounds.

Things like deletings or editing sounds uploaded by other users require admin permissions. These can be set in the admin panel. You need to specify yourself as owner in the config to get initial access to this panel and to add other admins.

Deployment

Yuri requires Lavalink to run. Please refer to the Lavalink Repository to download and run Lavalink. Therefore, you can use the provided lavalink config.

Yuri can be deployed either on bare metal or using the provided docker images. Binaries can be downloaded from the releases page or from the build artifacts from the CI workflow.

You can also use the provided Docker Compose Config to host the required services all together in a Docker Compose stack.

Configuration to Yuri can be provided either via a config file (YAML, JSON or TOML) or via environment variables. See config/config.toml for configuration documentation or docker-compose.yml for environment configuration examples.

API Documentation

Coming soon™️

yuri69's People

Contributors

dermodmaster avatar zekrotja avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

yuri69's Issues

Display Sound Uploaders

Display the User who has uploaded a sound in the sound details view.

Therefore, a new field could be added to the response of the /sounds/:id endpoint containing rich information about the user who has uploaded the sound.

Example:

{
  "uid": "peg",
  "display_name": "",
  "created_date": "2022-05-31T20:51:13.373014Z",
  "creator_id": "221905671296253953",
  "tags": null,
  "creator": {
    "id": "221905671296253953",
    "username": "zekro",
    "discriminator": "0001"
  }
}

Wildcard Search

The search bar in the web interface should allow wildcard searches.

Examples:

  • o* - List every sound starting with o
  • *a - List every sound ending with a
  • h*o - List any sound starting with h and ending with o containing any letters in between.
  • ...

Unexpected Voice Channel Disconnections

After a while in a voice channel, Yuri sometimes randomly disconnects from the voice channel without sending any notification into the event bus so that the internal state still recognizes a voice connection.

The cause or reproduction procedure of this issue is still to be investigated.

Database Migrations

Add a system to automatically migrate new versions of the Postgres Database.

Download All Sounds

There should be an option in the web interface to download all uploaded sounds in one tarball.

This issue is related to #1.

Error trying to login

I have a fresh install using the provided docker-compose.yaml file. When trying to sign in I get this error.

{"redirect_uri": ["Not a well formed URL."]}

I'm sure it has to do with the bot configuration in the discord developer portal but I can't find any information about what to set the Oath settings to.

Frontend validate UIDs on Upload

Validate entered UIDs in the frontend on uploading and importing sounds. Also, update the automatically assigned ID when dropping in sound files.

Autoleave does not work

The autoleave function which disconnects the voice connection of the bot when no one is in the VC with the bot for a specific time does not work sometimes.

Race condition when uploading sounds

Steps to reproduce

  1. Upload a sound (either from file or via youtube import) form two accounts at the exact same time with the same ID
  2. Both sounds will be created with the same ID
  3. One variant will be kept but the creator can differ from the actual creator of the file

Sound Overdriving

In the predecessor of Yuri69, we created "overdriven" sound of some of the existing sounds, which were intentionally loudness-clipping versions of existing sounds for the purpose of entertainment.

Because Yuri69 utilizes FFMPEG to convert and normalize sounds on upload, this layer of processing could also be used for this.

An effect flag is currently implemented - but not enabled yet - to create an additional overdrive version of a sound directly on uplaoding it.

Some implementation questions are still open though:

  1. Which FFMPEG filters are required to create the typical "overdrive" sound?
  2. Is this applicable to a wider range of sounds? (differences in level, codec, bit rate, frequency, ...)
  3. Should there be an option to create overdrive version of existing sounds?

Voice Joined State is not updated after auto leave

The Join/Leave button in the web interface stays on Leave when Yuri auto-leaves the voice channel,

Steps to reproduce

  1. Join a voice channel
  2. Let Yuri join
  3. Leave the voice channel
  4. Wait until Yuri leaves again
  5. Join the voice channel

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.