Right, so wow. Been a second. To be short, things have been quite busy and development slowed to account for that.
But right now, it’s time for you to have a development update. Where is V18 you ask? Where’s the shiny update that everything is getting pushed to? Well, Ill tell you where. It’s…still being worked on. There’s a hefty amount of stuff going on in V18 and more keeps getting added. So with this post, I’ll try and cover as much of it as I can without killing you with boredom. The gist is to give you a better idea of where V18 is in terms of “the great refactor” and all that mess that’s better than me just saying “it’s on it’s way”. So let’s take a look.
Quick Note: I’m going to be looking at this in terms of what is in the project/has been done, not what necessarily isn’t done yet. So if you know something is supposed to be in V18 but isn’t discussed here; the plans haven’t been lost to the ether, there’s just stuff that’s been done prior to that or is being worked on before I get there.
So let’s start with the GitHub V18 project page. To try and help make it short and sweet, we’ll go through the to-dos, in progresses, and the dones and cover the middle ground when necessary.
New Suggestions/Fixes/To-dos
- Implement CC schedule handler
- Refactor
!echo
message content - Refactor summon handler
- Link screen revision (sort of in-progress but also not really)
- URL Scanner framework
- Remove specific channel listening (places Fishsticks can see)
- Add user specific purge parameter (
!purge
but for a specific persons’ messages) - Build logging system and factor it in (sort of done)
- Add passive “I’ve got time” (by popular demand)
- Permit non-everyone pings in
!echo
- Remove ping requirement for
!userinfo
- Redo the role
!stats
command (includes fixing the mess it already is) - Reconstruct all statistics (Not Fishsticks, this is the full statistics counter for game roles, their divisions, and pings, etc)
- Refactor the passive command handler
- Condense client globals (also an in-progress sort of thing)
- Implement vouch tracking and desync (members that leave the server lose that tracking, as opposed to Fishsticks remembering when they rejoin – prevents the system from thinking they still have that role)
- Implement vouch removals (ditto)
- Implement vouch revokes
- Refactor ENGM to fit TESTMODE global
- So, some explanation for this one: ENGM is the subroutine that Fishsticks started using when I was testing the bot that would disable various systems while I was conducting…tests. That way nothing dumb could happen or necessarily break the test. What is going on here is establishing the same thing, but instead of using a command and state check, Fishsticks now reads command line arguments from the server box console to determine if it’s in development mode. More later.
Onto the suggestions (same section)
- Nuclear launch code hacking feature – I don’t exactly know what to do with this, but I’m sure I’ll think of something neat to fit the bill
- Pull response bug fix – patch the whole poll response validation system. I’ve already got a plan in place for this.
- Random verse command – just haven’t gotten to it
- Shiny – yes, very shiny.
In Progress
- Meeting Minutes
- So, originally, Fishsticks V18 was meant to include a templating system that would let someone add meeting minutes to a list that Fishsticks would then proceed to auto-beautify and make nice and post somewhere so no extra work would be needed. But this has since changed. The same system layout is being used, but for the
!docket
command instead. Changes on the CCGaming website made continued development on the meeting minutes system negligent.
- So, originally, Fishsticks V18 was meant to include a templating system that would let someone add meeting minutes to a list that Fishsticks would then proceed to auto-beautify and make nice and post somewhere so no extra work would be needed. But this has since changed. The same system layout is being used, but for the
- Implement
!docket
(ditto) - Announce game role creation publicly on officialization
- Rebuild role handler (ie, better game name/role name handling)
- Role vote timeout limits (see section on discussing role inactivity)
- Ping role on new member assignment – basically just announce when someone joins the role
Done/Ready for release
- Standardize Parameter Notation
- Command standard is now to use a hyphen (-) between all parameters, easy to remember and use
- UpdateNodeControls
- What
- Dictionary Functionality
- Implement the dictionary
- Possible Integrations for Discord through FS
- Old GitHub issue closed for the sake of organization. Fs integrations are handled on a case by case basis as deemed feasible.
- Remindme Command
- I…added this before V18, why is this in here
- Update links
- Review permissions check function
- Refactor each command with help function
- Refactor active command handler
- Remove MUSI subroutine systems (scrapped)
- Refactor FSO statistics
- Refactor logging method
Now, what’s all this mean?
A lot of stuff is being worked on. To those that may not know all of my short live technical lingo up there, a lot of those points say refactor on them. To refactor something means to reconstruct it or make updating changes. V18 of Fishsticks is a massive refactor of the whole bot. The core code and framework on which Fishsticks operates is being updated to a more efficient, standardized, and organized format. You can read up more on V18 on the V18 update plan post.
The good, the bad, and the why is it so important now
I knew V18 was going to take a dad bern long time when I started. Mainly because Fishsticks is an amalgamation of sandbox code that I’d used on my own Discord Bot LCARS47 as a development hobby. When Fishsticks came into existence, it was much more imperative that I focus on pragmatic and innovative functionality. Fishsticks is now tied into so much of what CC is that his continued functionality is something that I deem to be of utmost priority.
The good news about V18 is that the result will be a very clean, organized, scalable, and maintainable Discord bot. Future deprecation and API changes will be easy fixes in most of the code. The module design of V18 and the layout breakup and even command logging will prove to be invaluable later. To the majority of CC users, none of that makes a difference aside from Fishsticks’ uptime.
The bad news is that this sort of thing takes time to finish. V18 is a huge update refactoring over 2.5 years of development. It’s meant to eliminate spaghetti code and try to make it at the very least organized. A lot of the core functions that Fishsticks V17 runs on have already been eliminated in favor of new handlers, new modular systems and functions and the performance of the changes have already been outstanding in the tests.
The reason for why all of this is happening and crunching now at this specific moment is because of Discord.js API changes that have broken previous functionality. I knew that this day would come once V12 of Discord.js was released. I just…figured I’d have more time to work on it. That was a failed conclusion. So here we are. Fishsticks is mostly busted not because of changes in his code, but because of API interaction changes. Primarily the Oct. 27, 2020 Gateway Intentions update that broke the user caching system and role caching system.
What can we look forward to?
I’m thinking I’m going to be releasing V18 in pieces in order to try and get the release out ASAP. There’s a lot of functions that need to be running that currently (at the time of this post) are not such as vouching, temporary channels, and any other commands that utilize permissions checks. Most of the rest of Fishsticks’ functions work just fine.
The bulk of V18 will be released in the primary update however. But some stuff will be delayed. The bulk changes include the new role handling system, XP messaging system, etc and majority of the aforementioned stuff above. The stuff getting pushed back is the membership applications, discussion den applications, and anything else that might get moved. I’m still doing my best to get everything out in one bulk push. Most of the bug patches for the big update will be merged in with the additions of the applications system, etc.
Conclusion/TL;DR
Big changes. Massive changes. Good changes. Development is moving along at a pace I’m content with whilst staying on top of IRL stuff. I don’t do ETA’s but you’re welcome to follow the project page for the V18 update on Fishsticks’ GitHub Repository.
Cheers.
—
What’s that? You don’t think this is original content? You’re right. It’s a repost from the PlDyn CoreFoundry.
All of your work, and your reports on it, are greatly appreciated!
“I…added this before V18, why is this in here”
Best line. ^_^
So what is the ETA?