Skip to content

Releases: kaesekaiser/zephyrus

The Great Refactor

29 Dec 22:48
Compare
Choose a tag to compare

I've been working on Zephyrus for a long time. So long that a lot of his codebase still reflects misconceptions I had or beginner pitfalls I fell into while first learning Python over 7 years ago. Over the years, I've been steadily cleaning these up, but as a self-taught programmer I'm constantly learning things about the language that I probably should've learned a long time ago.

In particular, I only recently realized that importing the same module multiple times doesn't cause it to be re-initialized multiple times. In retrospect, this is really obvious and I'm not sure why I ever thought it wasn't the case, but it impacted the way I structured this project from the very beginning. Previously, I had the entire main codebase set up as a linear chain of imports from one file to the next, with only some less-used functions sequestered to their own separate files outside the chain. I wanted the Zephyrus bot object to be shared throughout all files containing command info, to make sure nothing was lost along the way, and that there weren't multiple Zephyrus objects trying to initialize themselves at the same time.

To put it plainly, this was ridiculous, messy, and wholly unnecessary. The discord.py module includes an object called a Cog which can contain bot commands without being dependent on a pre-existing bot object. These Cogs are then loaded onto a bot object after initialization, and the bot can use all commands contained therein as normal. I had previously avoided use of Cogs for a variety of reasons, but in light of this discovery, I sat down and refactored essentially the entire codebase to work using Cogs, and reorganized the import hierarchy into something much cleaner and less bloated (commit 1bfe377). This included moving several shared classes and functions into their own dedicated files, as one would expect, rather than lumping them into a file nebulously called startup.py (which no longer exists). The commands themselves are by and large unchanged, but altogether, I think it makes the project feel a lot cleaner.

Most of the other changes since the last release are minor bug fixes or behavioral tweaks. The only other notable change is the addition of z!tcgp, a command which lists information about cards in Pokémon TCG Pocket.

The Cloud Update

02 Nov 02:15
c39c28f
Compare
Choose a tag to compare

This update is less about the software behind Zephyrus and more about the hardware. I'm upgrading from a Raspberry Pi that sits on the corner of my desk to a cloud-based distribution platform! This should come with several notable performance improvements, and it also makes the project feel a lot more legitimate.

I'm also changing Zeph's account! Thanks to Discord's busted verification policy, I can't add Zephyrus to any more servers, ever, so I'm switching him to a fresh account: 2ephyrus (pronounced [ˈtwɛ.fɹ̩.əs]). Granted, I'm almost certainly changing the new account's name back to Zephyrus as soon as this release goes out, but I think 2ephyrus is funny.

Anyway, enough about that. Changes since last release:

  • Added z!pokewalker, a brand new minigame
  • Added z!pk catch
  • Added z!pk raid
  • Added z!pk learnset
  • Stylization tweaks to most z!pk sub-commands
  • Deprecated z!pinyin and z!jyutping due to an error
  • Added command usage stat tracking

It seems like a relatively minor release, but the hardware + account changes are more than enough to merit the start of a brand-new era. It's Zeph 3.0, babey! Happy New, uh... Month.

The Great Version Changeover

09 Dec 07:12
061f952
Compare
Choose a tag to compare

Honestly, at this point, it's been almost two years since the last named Zephyrus release. There have been about 80 commits since, most of which have been minor bugfixes, until recently:

  • Updated Zephyrus to Python 3.9.
  • Switched to v2.1 of the discord.py module, granting access to several of Discord's newer features (including threads).

These two changes merit a named release on their own in my eyes. Fitting that this should be version 2.9. I also had to literally factory reset my Raspberry Pi in order to get the new versions to work, so I think it's a big enough deal.

Other notable changes made in the last two years include:

  • Added the Generation VIII and IX Pokémon to z!pk dex.
  • Changed z!dex to a redirect for z!pk dex.
  • Revamped z!p jobs to include a new self-contained job-loading and plane-launching system.
  • Added month and year inputs to z!remindme.
  • Added a Connie-like X-SAMPA interpretation option to z!sconfig.
  • Added z!hug.
  • Added z!coinflip.
  • Added z!chess.
  • Added z!esearch.
  • Added z!yesno.

Many bugs and additions and changes are likely yet to come, and I'd like to go back and clean up some of my older code to take advantage of Python 3.9's new features (walrus operator my beloved <3), but this is the most picturesque time for a named release. This is the new version of Zephyrus.

2021 Update

01 Jan 08:38
0f60a48
Compare
Choose a tag to compare

Zephyrus, like all of us, has gone through a lot in 2020. In particular, he's now being used by about two thousand more people, so I've a much bigger collection of unintentional beta testers, and I've been making a lot of additions, changes, and removals. It's also just been a while since I put out a named release, and New Year's seemed like a nice time. Some notable changes:

  • Added z!sconfig, which allows for some server configuration options, including welcome messages and custom prefixes
  • Added z!syntaxtest, z!rolemembers, and z!randomword, which were lifted from the now-defunct bot Leonard
  • Added z!selfroles
  • Added z!remindme, which is now probably Zephyrus's most-used command
  • Added z!weather
  • Added z!age
  • Added z!feedback, to lower the number of pings I woke up to in the morning
  • Added z!counter and z!fe3h, which are mostly only useful to me, in specific cases
  • Zephyrus will now H at you if you h.
  • Removed z!translate, z!flagsquare, and the three now-unnecessary Narahlena-related commands
  • Numerous bug fixes, performance improvements, and back-end cleanups

Also, while writing this release, I noticed that I misspelled the name of a deprecated command on version 2.7 as z!hueshit, and I think that's hilarious. It's 2021. Have a good night.

Conversion Update

14 Apr 02:32
82eafe6
Compare
Choose a tag to compare

The main thing contained within this update is a massive (and ongoing) overhaul of z!convert, plus a few minor command changes around the board. It was time for a new version.

  • z!conv now allows for derived units (e.g. m/s^2), and has a much larger selection of built-in units to draw from - mostly SI derived units. I'm also planning to add a way to implement your own custom units, since Zephyrus is present in several conlanging/worldbuilding servers.
  • Temperature conversion has been moved to its own command, z!tconvert.
  • On the back-end, most of the conversion functionality has been moved to its own file, utilities/convert.py.
  • z!hueshit and z!invert have been removed. I didn't like them and they were gross and no one used them.
  • z!base has been added.
  • Zephyrus salutes back when pinged with "o7".

Narahlena Update

15 Oct 03:05
4299469
Compare
Choose a tag to compare

This update brings a bunch of sort of smaller things. It's not a particularly cohesive update, and in fact I'm in no way done with the Narahlena-related commands, but I felt it was about time to mark a new version.

  • The addition of z!nln and z!ndict, which integrate my conlang Narahlena into Zephyrus. z!narahlena was already there to help me input Narahlena text, but these two commands are yet more useful.
  • z!p search has been added, plus a few general bug fixes and quality of life improvements within z!planes.
  • Like last time, z!jyutping, z!yale, z!pinyin, z!simplified, and z!traditional have been changed to return plain text instead of embeds for ease of copying on mobile.
  • z!wordlist has been added to make the word games easier.
  • Zephyrus can hug you now. Ping him with the 🤗 emoji. Do it.

The User-Friendliness Update

01 Aug 09:47
b8d3977
Compare
Choose a tag to compare

A lot of the work recently has revolved around just making the bot easier and more intuitive to use, and I'm still working on it. This felt like a nice point to publish a release, though, and I'm changing the way the bot checks its version, so it's good timing.

  • Several important user-friendliness updates for z!planes, including a lot of shortcuts for the subcommands, z!p new, z!p buy, a reformatting of the help screen, inclusion of minimaps for airports, a few subcommand format changes, and a couple other things I'm probably forgetting.
  • z!help has also been reformatted to be more informative, and a good bit of the code behind it has been rewritten to take advantage of some native attributes of commands.
  • A couple other minor changes have improved the functionality of some already existent commands including z!wiki, z!foreignwiki, and z!epitaph.
  • z!caesar. z!rot13. z!vig, and z!devig have been rewritten to return plain text rather than embeds for ease of copying on mobile.
  • A few "admin" commands have been added to better allow me to take advantage of Zephyrus, and all-in-all a good bit of backend code has just been made nicer.

Eval

21 Jul 07:13
7e02eb7
Compare
Choose a tag to compare

adding the eval command, which just runs the Python eval function on the input.

SAMPA

04 Jul 16:42
34e40c3
Compare
Choose a tag to compare

Adding the ability to translate X-SAMPA into the International Phonetic Alphabet, as well as implementing the new commands traditional, simplified, narahlena, and factors.

Factors

01 Jul 02:22
2204144
Compare
Choose a tag to compare
Factors Pre-release
Pre-release

Adding z!factors, which returns the prime factors of a given integer.