Git Product home page Git Product logo

utility-discord-bot's People

Contributors

chazlarson avatar izqcode avatar mikeyaworski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

utility-discord-bot's Issues

Migrate hosting to Google Cloud

Test using GCP for hosting since the free tier + DB costs seem to be cheaper than Heroku.

Keep support for Heroku and instructions on how to host there, but add support and instructions for GCP as well.

Support longer Spotify playlists

Currently capped to 50 since searching can take a while, and the queuing process can't be cancelled.

Think of alternatives. Allow a flag to force it to use more than 50? Add an offset argument so you can queue the same playlist multiple times, but increasing the offset yourself? Or maybe something else.

Improve support for threads

Moving messages and deleting messages within threads don't work. Since the bot is not part of the thread, it seems that it can't find the messages. Perhaps an update to Discord.js is required. Should investigate this.

Add ability to create aliased commands

This will be a command that creates an alias for other commands. For example

!aliases add "moveFoobar" "move #foobar"
// now !moveFoobar some-id
// will invoke !move #foobar some-id

We can create an alias command and a new command for handling "unknown" commands (there is a CommandInfo option for this).

The process for invoking the aliased command is yet to be determined.

Add reaction roles

Look into this more to see if it's worth doing, or if we should just leave it to the existing bots.

Support !delete and !move commands from any channel

Instead of using the message type for start/end args on the delete/move commands, get the IDs as strings and use the findMessageInGuild util to find them. This way, those commands can be used from any channel and not necessarily just the one where the message is in.

Add a !purge command

  • Following #3, this command should be disabled by default and only the owner of a discord should be able to enable purge.

  • Should be able to purge all of your own messages

  • Required to provide a mention of yourself to confirm that you are purging yourself (in addition to the confirmation reaction on the confirmation message)

  • Accept two message arguments that specify a range

  • Accept a channel message argument that specifies a channel to delete (in addition to the message arguments). Only the OWNER should be able to purge a channel.

Add filter option to !reminders ls command

Updating the command to allow !reminders ls [some-filter-string] would be convenient. E.g.

!reminders create "30 mins" "Foo bar"
...
!reminders ls "foo"

This would list only reminders with message strings that include "foo" in them (case-insensitive). Allows you to easily find a particular reminder.

Add !reminder and !timer commands

Something like:

  • !reminder "Dec 21st" "Do this thing"
  • !reminder "5 mins" "Do this thing"
  • !timer 5 mins
  • !timer "5 mins" "Some description of the timer"

Transpile only when running the app

In the npm start script, use the --transpile-only option to ignore type errors and instead run tsc to verify them in the npm test script.

Add !logger command

Add a !logger command which lets you specify certain events which should be logged to some channel. Similar to Dyno, except probably less options and mainly just focus on the ones which cannot be viewed on the Audit log.

Fix streamer rollback roles not being added

The rollback roles functionality for streamers is partially broken. The roles which were added end up being removed during rollback, but not the converse. Removed roles do not get added back.

Will add logging to monitor the reason for this, since testing this manually is quite difficult.

Catch generic errors properly on reaction roles command

For example, there is an error from the Discord API when you have more than 20 reactions on a single message. Instead of manually catching every error, handle this generically by adding the error message text to the "Something is wrong..." reply. Still handle this 20 reactions error manually as a separate condition, but add some error message text to the generic error response as well.

Add the ability to play audio

By providing a link or query, the bot should join VC and play it.
This should support links from Youtube, Spotify and Twitch.

Options for queue, shuffle, skip, pause, loop, etc.

Use ytdl to stream the audio.

Spotify links (e.g. playlists or specific songs) should look up the equivalent music on Youtube and play it from Youtube instead.

Allow adding tracks to front of queue

When queuing a song with /play, add an option that specifies if the track should be inserted at the front of the queue, rather than the end.

/play youtube: ... front: True

Add !poll command

Something like the Simple Poll but, but supports custom emojis for the options / reactions.

!poll "Question" ๐Ÿ‘ "Option 1" ๐Ÿ‘Ž "Option 2"

or maybe

!poll "Question" "๐Ÿ‘ Option 1" "๐Ÿ‘Ž Option 2"

and for a yes/no poll:

!poll "Question" ๐Ÿ‘ ๐Ÿ‘Ž
!poll "Question"

Fix link embedding for moved messages

If you move a message that's a link, like https://twitter.com/..., it won't embed the site content since the link is posted within an embedded message by discord. See if there's a way around that.

Support Spotify episodes

Support Podcast episodes of the form https://open.spotify.com/episode/{episodeId} (or a collection of episodes with https://open.spotify.com/show/{showId}).

These are apparently streamable through youtube-dl, but if not, then this might not be possible.

Add unit tests

Mainly just add in jest and configs for that to run (add them to the npm test script as well). Create some example unit tests on our src/utils file.

Extend message length on reminders

The database column is using a 255 length VARCHAR, but this should be extended to the max length of a discord message, which is around 4000 characters.

Could also use Sequelize.TEXT instead, and send the reminder in multiple messages if it exceeds 4000.

Create an !enable/disable command

!enable <command> or !disable <command> should store a flag in some database table (associated with the guild) that enables some command. For example, !purge should be disabled by default (for safety), but can be enabled by an owner. Each command in our code should specify if the command is able to be toggled and who can toggle it (e.g. owner only, administrator, someone with MANAGE_MESSAGES permission, etc.).

Add !reaction-name command

Similar to reaction roles, but when you react to something, give your nickname some prefix which indicates your activity (or maybe a custom activity).

!reaction-names add [Eating] ๐Ÿ”

And then it turns your nickname from mike to [Eating] mike.

Add !base-roles command

Allow users to add base roles that every member should get upon joining the discord (with optional timeout before getting it assigned).

Something like:

!base-roles <add | remove | list | clear> [role] [timeout in seconds or string form]
!base-roles add @some-role
!base-roles add @some-role "10 minutes"
!base-roles add @some-role 600

Lock player commands behind role

Allow player commands to be locked behind one or more roles, if a guild chooses to configure it that way.

/player-roles add @Role
/player-roles remove @Role
/player-roles clear

Migrate to v13

There are some necessary things in v13 such as endpoints for searching threads, and the ability to use slash commands.

discord.js is not supporting their Commando framework anymore, so we will need to either:

  • Write our own command framework instead
  • Use Sapphire, their future replacement for Commando

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.