Skip to content

Latest commit

 

History

History
145 lines (103 loc) · 7.54 KB

README.md

File metadata and controls

145 lines (103 loc) · 7.54 KB

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