Skip to main content

HalpyBOT Dev Update #4

So much for "Monthly", eh?

So yeah, it's been two months since the last HalpyBOT Dev Update... sorry about that! I'll also apologize for not a whole lot of progress being made in these past two months - the prior 3 were hotbeds of activity and sped by, and are proving themselves to be the exception, not the rule. Generally speaking, you're not going to see an update here until it's passed its initial review and is packaged in the latest mainline Dev version of the bot. This may lead to some code being done for quite a while before we actually write about it here. Thankfully, we had a few things pass review this month, So let's jump right into it!

Responder Management

Last few blogs, we discussed Case Creation and how HalpyBOT will handle loading all the fancy details about a case. This included allowing trained seals to update certain case details, such as System, IRC Name, or even the CMDR name itself. That was an important step, but we were missing visualization on a couple more critical, blubbery, fish-smelling details - YOU! How do we know who has responded to a case, if the Client has been welcomed by Dispatch, or who is in charge?

Enter Responder Management.

Now, Dispatchers can actively add or remove responders from a case, or even add or remove other dispatchers! Welcoming a case adds you as a current Dispatcher, but we also have a number of key commands including !addresp, !adddisp, !remdisp, and !remresp. These commands (as well as !go and !welcome) can be used to track exactly who's doing what in a case. In the future, this means you won't have to manually enter all of this in paperwork.




Requirement Cleanup

HalpyBOT uses a very strictly-defined system to determine different permission and restriction levels on commands and users. From who can run a command to where it can be run, to what systems have to be in the green for it to operate, it's been our bread and butter. However, recently we found out that some things we were doing were a little over-complicated. This has allowed us to break apart the overarching "Require" system into its component parts, namely Permissions, Locations, and Systems. This allowed us to streamline our code process, and only import what we truly need. This results in less overhead, and a better coding experience for our devs. We also took the time to streamline and remove a LOT of redundant code in these sections. Yay!

Is This Thing On?

Sometimes, we all just need that little push. Now, if nobody welcomes a case within a 5-minute window, the Bot will send a reminder to all Seals, make a note of the event in the logs, and also send the Client a short little message asking them to hold on. This can be disabled by using the !welcome command or updating any aspect of the case in the system.


Just The Little Things

Of course, there are always little bugs and other fixes we're working on as we go, trying to build the best possible product. Here are a few small ones that made it into this window:

  • Fixed a bug with the Dice Roller function
  • Updated the argument checks at various places throughout the bot to be more accurate
  • Removed some useless duplicate code in the whois section
  • Updated some of the exception types to be more specific
  • Fixed a bug that could occur if the bot tried to update a case with some special characters
  • Fixed an issue with a case printout that could result in a weird-looking name for some statuses
  • Added a missing await on one function
  • Updated a command mapper to use dict.items()
  • Updated a number of type annotations
  • Fixed and wrote a bunch of new tests

Why so little these last months?

Admittedly, this isn't as cool or flashy of an update as we've had in updates past. It's only fair to ask why that is. Our team consists of a bunch of volunteers, and as volunteers, our ethos has always been that real life comes first. We all have our own careers, education, life, and futures to think about. I know for just myself alone that the last two months have seen 3 cross-time-zone trips, my final exams, graduation from uni, moving to a new city, and starting a new job. Others have had their own plans and situations change, and really, we've just been super busy trying to keep up with life. Unfortunately, this cut into gaming and coding time significantly. Not to mention, we've had to deal with a number of... let's call them incidents... regarding our site and abuse of services that have required our prompt attention. Unfortunately, these resources took away from our bot development, as well as a number of years off our collective lives from stress.

We're also limited by our review capability - writing a new feature requires (obviously) someone to write it, but it also requires a second level of validation from an uninvolved coder to review and make sure the changes are sound. This helps prevent stupid mistakes from making it into the production-bound pipeline, and also fosters discussion, and allows us all to learn. However, there's really only one or two folks who fit the bill for this "senior dev" in the Cybers, and their free time is always at a premium. And remember, the reviewer has to have been someone who didn't write a large chunk of the feature. This has resulted in a small backlog of things that are ready to go pending review, which we simply haven't had the time to kick forward. As I write this, one feature is awaiting review, and another is going to be ready to go in just a few days, but we don't have a solid timeline to get those approvals in.

So, what can we do about this? Simply put, we need more folks. If you know code or want to expand your knowledge, reach out! We're always willing to take on new folks with a drive to jump in and learn. It may look scary, but you'd be surprised how quickly someone can pick up the reigns. Just ask our very own Phoebe, who was where many of you are now just a few months ago, interested and wanting to get your feet wet.

The Future

We're starting work on our Hull Seals API, and a few more features for HalpyBOT. One of those features in progress is a feature requested by one of you! We're super excited to see how it turns out and are always interested in hearing your thoughts on tools you wish were in the bot. While 2.0 is taking a significant amount of time, we are sure it will be well worth it once it is ready. Until then, stay tuned and stay in touch. If you're interested in looking at the code yourself, feel free to here:

Bye for now!