Giter Club home page Giter Club logo

jermabot's Introduction

Python Typescript is the best programming language ๐Ÿ

and add JermaBot to your Discord server ๐Ÿ˜

jermabot's People

Contributors

benrucker avatar ecfidler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

jermabot's Issues

add general tts interfacing class

in order to improve cross-platform compatibility and ease of installation, the speak logic should be pulled into a robust voice interface. the interface will choose the best tts library to interface with on startup.

  • Windows: sapi5
  • linux: mycroft mimic if found
    • else, espeak ๐Ÿค•

if none are found, it will throw a detailed exception at launch and/or at attempted invocation

join sounds probably broke the snap command

the fix for this might be huge... we need to find a way to disable join sounds when a snap command is invoked, but reenable them once the snap stuff is over.

maybe we should make a new data structure to store specific info about a guild, such as if a snap is currently happening. this way, info can be tracked per guild and not affect other guilds.

maybe make a GuildInfo class that tracks state info using properties (is that the right term?) for a single guild and have a global list of GuildInfo objects.

add command to move people to different voice channels

not like another snap. instead this command should have the option to move everyone in a certain voice channel to another voice channel (eg $move #voicetarget #voicedest) OR move specific people to another channel (eg $move @el jefe$1234 @benjamin#5678 #voicedest). unsure if the syntax should force a notification for the people moved or if it should take in name fragments (ie $move jefe, ben #voicedest would function the same as the previous parenthetical)

Add command 'loop'

Functionally identical to command play but constructs a looping source to keep the audio going. Might want to restrict to admins

Change volume using emoji reactions

Invoked when command volume is sent and the bot responds with the volume. Should update message to reflect change after up or down is hit.

This change also means that an argumentless call of volume should simply tell the user what the current volume is

add generic response to DM

Is your feature request related to a problem? Please describe.
i just DMd notsobot and half-expected for it to reply with a joke

Describe the solution you'd like
jerma should do this

Additional context
sigma

improvement: make a folder specifically for join sounds

this way, instead of relying on the hacky way of just naming the file after someone, the join sounds will be separate from the rest of the sounds. Maybe the sounds should still be listed by $list and played with $play (with the username/nickname of the user). If this is combined with adding sounds through commands, the sounds can be named with user IDs instead of names, thus it can't be broken by a user changing their username and can be divided into guilds by folder.

generalize permissions checking

Is your feature request related to a problem? Please describe.
jerma only fully works in whid. even my own testing server doesn't fully work with jermabot

Describe the solution you'd like
replace permissions logic that relies on specific whid roles with logic that checks a user for specific privileges (e.g. manage users)

make $play sounds guild-specific

Should then also make a way to set another guild as a 'parent' or something to gain their sounds and join sounds. That way, debugging will be easier in test servers.

/play

/play autofills possible sounds

bug: join sounds delayed

jerma was recently moved to a slower hdd; spin up time could be causing the delayed

solution: cache join sounds

possible implementation could get a list of members from connected guilds and preload any matching sound files.

a smarter idea might be to separate join sounds from regular ones, name them by ID, and add a user interface for them. otoh, this may cause confusion if join sounds are no longer playable by using someone's name. computational complexity will balloon if this is implemented poorly.

incorporate jermahelp and list

currently peeking at this for inspo.
expected functionality:

  • $help
    • lists commands, command syntax, command descriptions
    • has a 'next page' button to view the sound list
    • has a 'previous page' button to go back to the help page
  • $list
    • lists all available sounds
    • is a dm

miscellaneous ideas thread

  • #56
    • steal the default discord.py HelpCommand logic for grabbing all the commands
    • rewrite the formatting and sending logic to use embeds and reactions
  • $help <category>
    • splitting into separate issue #35
  • add streaming notification thing
    • maybe incorporate into activity?
  • add jerma joke command
    • download each joke and cut to length
    • OR get start time, end time, and link: store them locally and stream
  • make jerma disconnect from voice when nobody is in the channel with him
    • this idea unashamedly stolen from hackerbot
  • add commands to set your own join sound
    • add support for choosing an existing sound by name
    • add support for uploading a new sound file
    • make it so an admin has to approve of the change
  • unify console output format
  • add more colors to console output because colors are cool
  • from Bertle: make dictionary of jerma word soundclips so he can actually speak in $speak

make automated tests

before sweeping refactors have to happen, start off by bodging this into the system:
https://github.com/DXsmiley/dismock

after that is mostly working, the separation of logic and discord function calls should be separated. Thus, tests can be made that don't rely at all on the discord API

yearly checkup thread

Need to haves:

  • Move to discord-supported interactions
  • Open support server

Nice to haves:

  • Pull functionality into idempotent functions
  • Add tests ๐Ÿ˜“
  • Migrate to a DB model
    • table for ginfo
    • table for guild id to sounds
    • table for guild id to movies
  • Use a .env if it ain't broke
  • Add CI/CD
  • Make beta bot that's always running or easy to run
  • improve TTS voice

extend addsound with name argument

current addsound usage involves sending a file and incorporating it into the list using its filename. proposed addition to the command allows the use of an argument to automatically rename the file after the user uploads it

in effect, it will be identical to uploading a sound, then immediately renaming it

refactor with cogs

Code layout is a mess. Refactor the commands and logic into cogs to separate them into more manageable bits.

Example list:

  • Maintenance:
    • update, perish
  • Scoreboard:
    • reset score, leaderboard (idk about +1)
  • Sound player:
    • play (private), stop, volume
  • TTS:
    • speak, birthday
  • Fun
    • snap, fsmash
    • have this rely on the sounds cog maybe?
  • Guild sounds:
    • play (public), addsound, rename, delete
  • Control:
    • join, leave, help
    • Maybe join this with maint.

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.