Code Monkey home page Code Monkey logo

apophis's People

Contributors

bramz avatar tiksi avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

apophis's Issues

Pagination

Implement pagination for music list with limit of 10 results.

Music remove

Delete a song from a table and its corresponding audio file if it exists.

Fix fallback config

For some of our configuration, we do something like the following:

bot_token = os.environ.get('BOT_TOKEN', config['bot_token'])

This throws an exception if bot_token isn't defined in the dictionary. We should rewrite these to only check config if the environmental variable isn't defined.

Configuration helper

Define a configuration helper that can pull configuration values from environmental variables or files.

Please update README.md

Currently, README.md lacks details about installation, configuration, running, and limitations of the project.
It would be nice to have a updated README.md detailing those steps.

Url shortener

shorten command to communicate with pfurl.me for shortened urls

Preprocess songs to opus

Songs are being saved as mp3 files, so the bot is having to transcode from mp3 to opus on the fly. If we transcode to opus on download, we can avoid that expensive step during playback.

Music random

Play any random song. can be separate from shuffling

Music command

This command will be used to organize our songs and relay them to rythm bot.

Uptime command

Acceptance criteria:

  • When the bot is issued an !uptime command, it should print the amount of time it has been up.

Music queue

Acceptance criteria:

  • Users can enqueue songs to the music queue via a queue or qlucky command
  • Users can view the queue
  • Users can remove songs in the queue at a specified index

It might be a good idea to make this a command with multiple subcommands.

Permissions

Need to setup a permissions module for user access.

Access levels
owner - ability to access all commands
admin - access admin level only commands
normal - all other normal commands for normal users

Music next

Acceptance criteria:

  • The song should play the next queued song, or if one doesn't exist, the next song in the shuffle sequence.
  • When a song finishes playing, automatically start playing the next one.

Music shuffle

Acceptance criteria:

  • When there is no song playing (that was explicitly asked for by a user), start playing a random song.
  • Any song should never repeat until every other song has been played.
  • A user can shuffle via a command.

Should the bot ever implicitly reshuffle?

Message history

Acceptance criteria:

  • Every message should be logged. Relevant information includes: content, author, server, channel, time (both Discord time and receive time could be good)

Should edits and deletions be tracked?

Song playing statistics

Acceptance criteria:

  • The database record for a song should indicate how many times it has been played.

Set a maximum duration for a song

Acceptance criteria:

  • We can set a maximum duration via configuration.
  • Any attempt to download a song longer than the specified maximum duration is rejected.

Use Discord user ID instead of username

In both the songs and permissions tables, we are identifying a Discord user via their username. This can potentially fail in distinguishing two users: it is entirely possible that two Discord users share the same username (remember not pacifico?). It is also insufficient to use both the username and the user number, both these values can be changed at the discretion of a user.

The only field that distinguishes any two users is their Discord user ID, which is accessible in discord.py via message.author.id. It looks something like 327973168934463462. It is a very large number, but its also safe for us to save this as a string in postgres.

We should use the Discord user ID instead of the username/number to identify users.

Music change volume

Loading PCM-encoded audio streams gives us the ability to manipulate volume on the fly

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.