Toby Harradine 476f441c9b [Audio] Refactor internal Lavalink server management (#2495)
* Refactor internal Lavalink server management

Killing many birds with one stone here.
- Made server manager into class-based API with two public methods: `start()` and `shutdown()`. Must be re-instantiated each time it is restarted.
- Using V3 universal Lavalink.jar hosted on Cog-Creators/Lavalink-Jars repository.
- Uses output of `java -jar Lavalink.jar --version` to check if a new jar needs to be downloaded.
- `ServerManager.start()` won't return until server is ready, i.e. when "Started Launcher in X seconds" message is printed to STDOUT.
- `shlex.quote()` is used so spaces in path to Lavalink.jar don't cause issues.
- Enabling external Lavalink will cause internal server to be terminated.
- Disabling internal Lavalink will no longer reset settings in config - instead, hard-coded values will be used when connecting to an internal server.
- Internal server will now run both WS and REST servers on port 2333, meaning one less port will need to be taken up.
- Now using `asyncio.subprocess` module so waiting on and reading from subprocesses can be done asynchronously.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Don't use shlex.quote on Windows

Signed-off-by: Toby <tobyharradine@gmail.com>

* Don't use shlex.quote at all

I misread a note in the python docs and assumed it was best to use it. Turns out the note only applies to `asyncio.create_subprocess_shell`.

Signed-off-by: Toby <tobyharradine@gmail.com>

* Missed the port on the rebase

* Ignore invalid architectures and inform users when commands are used.

* Style fix
2019-04-29 21:31:28 -04:00
2019-04-23 21:40:38 -04:00
2019-03-04 08:55:01 +11:00
2019-03-04 08:55:01 +11:00
2019-03-28 13:41:17 -04:00
2019-04-23 21:40:38 -04:00
2019-04-23 21:40:38 -04:00
2019-01-30 16:52:36 +11:00
2019-04-23 21:40:38 -04:00
2019-04-09 17:01:04 -04:00
2019-04-23 21:40:38 -04:00


Red - Discord Bot
Red Discord Bot

Music, Moderation, Trivia, Stream Alerts and Fully Modular.

Discord Server Support Red on Patreon! Made with Python 3.7 Localized with Crowdin discord.py

Travis CI Red on readthedocs.org Code Style: Black

OverviewInstallationDocumentationPluginsCommunityLicense

Overview

Red is a fully modular bot meaning all features and commands can be enabled/disabled to your liking, making it completely customizable. This is also a self-hosted bot meaning you will need to host and maintain your own instance. You can turn Red into an admin bot, music bot, trivia bot, new best friend or all of these together!

Installation is easy, and you do NOT need to know anything about coding! Aside from installation and updating, every part of the bot can be controlled from within Discord.

The default set of modules includes and is not limited to:

  • Moderation features (kick/ban/softban/hackban, mod-log, filter, chat cleanup)
  • Trivia (lists are included and can be easily added)
  • Music features (YouTube, SoundCloud, local files, playlists, queues)
  • Stream alerts (Twitch, Youtube, Mixer, Hitbox, Picarto)
  • Bank (slot machine, user credits)
  • Custom commands
  • Imgur/gif search
  • Admin automation (self-role assignment, cross-server announcements, mod-mail reports)
  • Customisable command permissions

Additionally, other plugins (cogs) can be easily found and added from our growing community of cog repositories.

Installation

The following platforms are officially supported:

If after reading the guide you are still experiencing issues, feel free to join the Official Discord Server and ask in the #support channel for help.

Plugins

Red is fully modular, allowing you to load and unload plugins of your choice, and install 3rd party plugins directly from Discord! A few examples are:

  • Cleverbot integration (talk to Red and she talks back)
  • Ban sync
  • Welcome messages
  • Casino
  • Reaction roles
  • Slow Mode
  • Anilist
  • And much, much more!

Feel free to take a peek at a list of available 3rd party cogs!

Join the community!

Red is in continuous development, and its supported by an active community which produces new content (cogs/plugins) for everyone to enjoy. New features are constantly added. If you cant find the cog youre looking for, consult our guide on building your own cogs!

Join us on our Official Discord Server!

License

Released under the GNU GPL v3 license.

This project vendors the discord.py library by Rapptz, which is licensed under the MIT License. This amounts to everything within the discord folder of this repository.

Red is named after the main character of "Transistor", a video game by Super Giant Games.

Artwork created by Sinlaire on Deviant Art for the Red Discord Bot Project.

Languages
Python 98.9%
PLpgSQL 0.9%