Skip to content

Peashooter101/JaredVirtualMachine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JaredVirtualMachine

stability shield usability shield green shield

Why Jared Virtual Machine?

You see, I had a dream... That I could stop abandoning projects as soon as I started them...

While this dream is most certainly still a wild fever dream, I wanted to practice my Java by applying it to a bot. The problem with a previous bot I tried to make (PeaScript) was that I, at least at the time, was fairly new and inexperienced to JavaScript. Made it very hard to develop anything past a bot that enjoyed responding to messages.

By using the Java Discord API, I can build a slightly more complex bot that I'd like to use on my actual Discord server without the navigation, syntax, and just general confusion that comes from being too unfamiliar with a language.

Oh also, the name "Jared Virtual Machine" is a play on Java Virtual Machine so yeah!


Functionality

Warning

This bot exists for personal use! If you take it and use it, use at your own risk.

!ping

  • Pong!

/vc-invite <user>

  • Used for people who have permission to join a voice channel, but their friends don't have the required permission.
  • Both users must be connected to a Voice Channel and then the person with permission can invite the other to the channel.
  • Uses fancy buttons for interactions and handling the invite requests.

/abby

  • We have a friend with a cute dog.
  • The command gives us easy access to Abby pictures.
  • The pictures are saved and pulled from this repository!
  • Supports .mp4 videos, albeit not the way I want it.
    • Sent as a normal message, not as an embed.

/valorant profile <valorantName>

  • Fetches some data about the Valorant account.
  • valorantName should look like Peashooter101#7016.
  • Special Thanks to Henrik for their Valorant API.

Pin Message

  • This was a Feature Request.
  • Accessed through the Context Menu (right-click Message).
  • Works only for individuals with the Administrator Permission.
  • Sends to the top most text channel with a "📌" in its name.

Planned Functionality

/vc <invite/request> <user>

  • Change the format of the command to have two subcommands.
  • /vc request should be the same as /vc invite but they are requesting permission to join.
  • Make it look fancy using Embeds cause Embeds are cooler.

/abby <search/gallery>

  • Need commands to do other additional stuff.

/valorant <profile/rank/history/skins>

  • For the account level, draw the level onto the border rather than using their "Level Tier" for the border.
  • Pull detailed ranked data for the given episode in /valorant rank.
    • Provide an optional argument for Episode / Act.
  • Pull and generate match history data for /valorant history.
  • Consider caching the data locally somehow... 🤔
  • Pull and display weapon skin stuff with /valorant skins <skinName>
    • Might need to use a database for this one chief... There are a lot of skins...
    • Consider using Valorant-API for in-game content for this command.

/<game>

  • Similar to the /valorant command, pull game information depending on the game.
  • Not a priority since most related practice will be done on the /valorant command.

/meme <memeID> <topText> <bottomText>

  • Create a meme format!

<Some text you sent>

  • The bot responds to messages you send sometimes, with somewhat related responses.
    • The Easy Route: Use the Sentiment Analysis or other Microsoft AI services.
    • The Hard Route: Decide to figure out what's "related" on your own.

Pin Message

  • Add functionality to request or vote pin if you do not have permission.
  • Edit so the permissions extend to people who have the ability to pin messages too (duh... but it's late at night right now).
  • Figure out if there is a way to embed videos to these pinned embeds.
  • Allow links that direct to an image to put the image into the Embed Image (Feature Request).

/defenestrate <content>

  • Throw them out a window.

Experimentation

I created a little playground to keep track of some experiments I am conducting in relation to this project. Think of it as a place for me to store my practice runs without having to force the bot to run. Some of the early experimentation may not be present in the Experimentation Package since I made this a few weeks after initially starting the project.

You can find the Experimentation Package here.

Note

This is meant to be a playground and will not be updated for any reason outside of me doing random tests.

It is under the test directory, but it is located within experimentation because I am not trying to test the application.

Some experiments I have conducted...

  • Using HttpRequest, HttpResponse, and HttpClient for GET/POST requests.
  • Using Jackson API to map JSON into Objects.
  • Merging, scaling, and modifying images using BufferedImage and Graphics (OverlayImagesExp.java).
  • Converting a BufferedImage into a Base64 String and sending that info up to Imgur (ImgurUploadTest.java).
  • Pull apart a GIF and overlay text onto it (TextOnGifTest.java).

Some ideas I have...


Demo Images

Wanna see some of the stuff without using the bot? 😄

/abby

Abby Demo

/vc-invite <@user>

Voice Chat Invite Demo

/valorant profile <user>

Valorant Profile Demo

Pin Message

Pin Message Demo

About

JaredVM Discord Bot for Personal Use

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages