Releases: Sidpatchy/RomeBot
v3.0.0 - Java rewrite
Key Changes
- RomeBot is now using Java(cord). This is for a number of reasons covered in #8.
- RomeBot only uses embeds when sending messages. This is for a number of reasons but mostly for consistency.
- RomeBot only uses slash commands. I hate the way Discord has them implemented, I'd much prefer to be able to choose my prefix so every bot doesn't have to fight over the "/", but Discord sees it differently.
- Easily customizable commands using commands.yml.
- Less redundant commands; many were combined or flat out removed.
In other news related not directly to this repo, RomeBot was denied verification an is at 100 servers, as a result, I have lost access to the server members intent on that bot and it no longer functions. From here on out, RomeBot will be switched over to a new bot, temporarily called Rom3Bot.
With that, I'm leaving you with the auto generated notes because I think they're funny.
What's Changed
- RomeBot 3 -> Master by @Sidpatchy in #8
- Bump log4j-core from 2.14.1 to 2.15.0 by @dependabot in #10
- Bump log4j-core from 2.15.0 to 2.16.0 by @dependabot in #12
- Bump com.github.johnrengelman.shadow from 7.1.0 to 7.1.1 by @dependabot in #13
- Bump snakeyaml from 1.29 to 1.30 by @dependabot in #14
- Bump log4j-api from 2.14.1 to 2.17.0 by @dependabot in #15
- Bump log4j-core from 2.16.0 to 2.17.0 by @dependabot in #16
- Bump com.github.johnrengelman.shadow from 7.1.1 to 7.1.2 by @dependabot in #19
- Bump log4j-api from 2.17.0 to 2.17.1 by @dependabot in #18
- Bump log4j-core from 2.17.0 to 2.17.1 by @dependabot in #17
- Bump javacord from 3.3.2 to 3.4.0 by @dependabot in #20
- Bump log4j-api from 2.17.1 to 2.17.2 by @dependabot in #22
- Bump log4j-core from 2.17.1 to 2.17.2 by @dependabot in #21
- Bump log4j-api from 2.17.2 to 2.18.0 by @dependabot in #25
- Bump log4j-core from 2.17.2 to 2.18.0 by @dependabot in #24
- Bump javacord from 3.4.0 to 3.5.0 by @dependabot in #23
- Bump snakeyaml from 1.30 to 1.31 by @dependabot in #26
- Bump log4j-api from 2.18.0 to 2.19.0 by @dependabot in #29
- Bump log4j-core from 2.18.0 to 2.19.0 by @dependabot in #28
- Bump snakeyaml from 1.31 to 1.33 by @dependabot in #30
New Contributors
- @dependabot made their first contribution in #10
Full Changelog: v2.0.3...v3.0.0
v3.0-b.1
RomeBot 3 is finally feature complete. This is one of the final v3.0.0 pre-releases.
Changes:
Eliminated /time
Added /jupiterhates
Added /stab
Added /sack
Updated /info to include /uptime
Updated everything that needs to use commands.yml
Improved /help's backend code.
Full Changelog: v3.0-a.4...v3.0-b.1
v3.0-a.4
Got rid of the nightmare shitfest that was the listener situation. Not sure what went through my head when that started.
Implemented commands.yml via Robin
Fixed carthago-delanda-est somehow.
Moved /servers and /version to /info
Verified standardization of date formats. I.e. any dynamically set dates use Discord's timestamp shiz and anything hard coded uses ISO 8601.
Hope to have this rewrite done soon as the Discord.py version has finally stopped working almost entirely.
v3.0-a.3
v3.0-a.2
v2.0.3
No major changes occurred here, all of these updates consisted of small changes that I forgot to make in the release.
None of the changes require an update if you are hosting RomeBot.
v2.0.1
- Switched the presence from "RomeBot " to "Salting Carthage | !help"
v2.0.2
- Removed some unnecessary startup code
v2.0.3
- Switched the presence back to the presence used in RomeBot v1, but switched out the video.
Complete (mostly) rewrite of RomeBot
RomeBot hasn't received any big updates in well over a year (actually, not since 2019-07-01). It has undergone small changes since then, but no major changes have occurred. Given how long I've been stalling on this update, I may not actually recall what all was changed... I'll try anyway.
One of the most obvious changes to RomeBot is the revamped logging system. It isn't a huge change, but I view it as significantly better than what we had in the past. Literally all this changes is readability, which is useful Here's what the old logging function looked like if you're unfamiliar: https://gist.github.com/Sidpatchy/f5b24002e41477be677dbecd63645c09
The logs now look a lot nicer and closely mirror what shows up in the console. Here's a quick look:
RomeBot Initialized Successfully! | 2020-10-23 02:56:25.503169
--------------RomeBot---------------
Time since startup: 0:00:07.431123
Current Time: 2020-10-23 02:56:32.905283
Done Loading!
--------------RomeBot---------------
Current Time: 2020-10-23 02:56:40.380118
Time to run: 0:00:00.162153
servers was run
Next, over the course of the past half year, I've made what is basically a compilation of all the functions I use on a regular basis. I called it sLOUT which stands for "Sidpatchy's Library of Useful Things", I included the 'o' in the acronym, you wouldn't normally. You can remove it from the acronym to see why. When used inside RomeBot it is referenced as lout.
Uses of sLOUT in RomeBot:
- Writing the confirmation of startup in the log file
- Replaced consoleOutput() with log().
- Used to grab the bot token from config.yml (more on that later)
Why use sLOUT for logging instead of updating the old method? It's simple, I maintain several bots, all of which use the same syntax for the logging function. If, in the future, I wanted to update the logging function, all I would have to do is update sLOUT instead of going in and modifying the code for each of my bots. Basically, sLOUT makes my job of maintaining this bot moderately easier.
Next, I changed nearly (if not all) every command. Most of the changes focus on reducing spam and prevents issues with rate limiting. Most RomeBot commands used to send multiple messages which needlessly clustered the chat. Every instance of that has been removed and combined into one message. This, in my opinion, improves the user experience quite a bit. Further, I started using embeds much more frequently. This makes the messages look nicer and further separates the bot from users, reducing confusion and improving user experience.
During the rewrite process I decided to make some of the commands more PG. I feel as though some of the commands could be taken in the wrong way so I eliminated any possibility of that happening.
Small behind the scenes thing: RomeBot now uploads images from the server rather than posting a link to Imgur. This solves an issue that happened on a few occasions which caused external images to not be displayed. While it'll cost me a few more megabytes of bandwidth each month, its a worthwhile sacrifice. If you want to host RomeBot and continue to use Imgur, it's not very hard to swap out image upload with an Imgur link.
One of the most notable changes I've made if you'd like to host this bot is the addition of config.yml. It went through several iterations throughout the process of writing the update, however, this is by far the most proper. The history of me being dumb isn't super important to go through here though, so lets talk about why I added it and what it is used for. This is one of the most needless changes I could possibly make however, why I made it is the interesting part. Over the course of the last six months, I've been slowly working on a Discord bot maker. It's not super great in its current state, however, it does exist. It's also the original reason for the creation of sLOUT. This is a really nerdy thing if I'm honest, but I wanted to have code that looked identical between the bot maker and my bots written by hand. Not only does manually developing this bot in such a way create nicer-looking code, it also allows me to better develop the bot maker.
This is the biggest update to RomeBot thus far. It future-proofs it and makes maintenance easier. Most of what changed should've been in v1 from the start. I've been using Python less in my personal projects so knowing me I made some dumb error I'm gonna have to fix in a week. That being said, I'm not ruling out moving the bot over to Java or C++ (probably not C++, because AHHHHH). Enjoy the update, I'm gonna go back to neglecting this bot now.
Added a logging function and took action to reduce clutter in high-density servers
RomeBot has been neglected for a while if we're honest, I didn't even bother to write one of these for 1.1.2, but that's fine we're here now with RomeBot 1.2.0. The main changes are not going to be spotted by any of the users however, they are pretty cool and kept me busy for about 25 minutes during quarantine :(
The main change you ask? I have FINALLY added a logging function. I have tried in the past but for some reason I couldn't figure out how to use the tools for that in Python. Believe it or not, the biggest factor in me understanding them this time was my excursion to C++. What does it look like you ask? Well, most of the time it looks just like RomeBot's console output, infact, most of the writing that will be done is contained within my consoleOutput function. Here's an example of what it looks like when the bot is started:
RomeBot ready! | 2020-03-23 11:02:58.276685
RomeBot connected! | 2020-03-23 11:03:00.863378
Time to connect: 0:00:02.593493
After it is started, RomeBot will only write when the consoleOutput function is called. As I said it looks identical to the text posted in the console but here's an example of what that will look like anyway.
---------RomeBot----------
Time to Run: 0:00:00.155868
Current Time: 2020-03-23 10:58:45.786098
test has been run
--------------------------
That's it for the big changes. Now, onto the smaller things that will hopefully lead to less clutter, especially if you have a high-volume (I don't know if this is actually a thing, what I mean is, a server with literal shit tonnes of messages being sent) Discord server, this will also benefit servers with multiple of my bots in them. Previously, when the uptime command was run, RomeBot would send two messages
I have been online for:
23 days, 20:56:22.700950
this was fine until RomeBot met other bots of mine, and servers that have a lot of messages being sent. Because of this messages would be split up into separate groupings,
RomeBot: I have been online for:
TeaBot: I have been online for:
RomeBot: 23 days, 20:56:22.700950
TeaBot: 2 days, 22:20:10.339671
which I don't think looks great. So, the solution? Send it as one message. This way, we entirely avoid the problem created by this. Now, the messages look like this:
I have been online for: 0:01:35.754866
Update to Python 3.8 and added !version command
Hey! It's been a while, here's what I've done to RomeBot since I last posted one of these:
Updated to Python 3.8 the change only broke a couple lines of code, time.sleep(), and that was only because of a misunderstanding, on my part, which was... refreshing.
My GitHub username has changed to Sidpatchy, mentions of Rainverm38 have been removed from RomeBot and replaced with Sidpatchy.
As usual, I changed the last update time, along with the update.
Additionally, I fixed an error on my behalf where I was using user.nick rather than user.name, causing users without nicknames to be called none when mentioned by RomeBot. I have plans to change it to prioritize user.nick and then if that returns none it will use user.name, though, I haven't found a reliable way to do it as of yet.
Each command unintentionally runs like 2ms faster, if that's interesting to you.
And just today I added a new command !version. This currently requires manual updating on my part, however, it simplifies my job of updating RomeBot on my server. Previously, I had forgotten to update it since ~July, now it is running the current version.
Version 1.0
I finally feel safe calling this a complete enough project to deserve a patch with version 1.0 written on it. I have worked on RomeBot for nearly a year now and it is still really bad. I have finally written some documentation, though, it is far from "good" it should be better than nothing. The wiki is more complete than the included instructions!