Devlog: SlackyssaLiu Went to Space (and I Forgot to Write Any of This Down)
The itch
SlackyssaLiu started as a pretty standard first Slack bot. Slash commands, a few API wrappers, the usual suspects: catfacts, jokes, quotes, echo, ping, some sneeze/wave filler commands for personality. It worked fine. It also looked exactly like every other “my first slackbot” project out there because it basically followed the same recipe everyone does. Integrate a joke API, integrate a weather-adjacent API, call it done.
I wanted to know how to make it stand out so I asked around for ideas. The answer was pretty obvious in hindsight. Stop building the demo everyone builds and build something around an actual theme with actual state instead of a stateless command list wrapped around whatever free API came up first.
I bounced between a few themes.. figure skating (RIP, no usable free API), medieval history (also no API, just Wikipedia scraping, hard pass) and space. Space won because it had exactly what I needed. Solid free APIs with no bureaucracy (Open Notify needs zero auth, NASA’s API just needs a free key) and enough surface area to build something that actually feels alive instead of just answering when poked.
What actually changed
This ended up being a full redesign not a patch job. Rough shape of it (RIP to /skl-achoo, you were doing your best).
Killed the old command set! No more catfact/joke/quote/echo/achoo/wave.
None of it fit the new direction and it was the generic stuff I was trying to get away from in the first place. A moment of silence for the bot that could sneeze but not tell you when a rocket was launching.
New space-themed commands: /skl-iss and /skl-crew (Open Notify, no key needed), /skl-launch (Launch Library 2, with an actual countdown for maximum dramatic tension), /skl-apod and /skl-mars (NASA’s API, APOD + random Curiosity rover photos the rover did not consent to being featured but also cannot complain).
Added actual persistence. SQLite via better-sqlite3. This was the real shift. The old bot had the memory of a goldfish with amnesia. It never remembered anything between requests. Now it tracks mission logs per channel, user callsigns and which launches it’s already announced (so it doesn’t spam the same countdown twice like an overeager intern). Added scheduled behavior. node-cron jobs that post NASA’s picture of the day every morning and ping the channel when a launch is within the hour. This is the part I think actually makes it feel like a running thing instead of a command list. It does stuff without being asked which is more initiative than I show most mornings.
I gave it an actual personality module! pulled every joke/flavor line out of the command handlers and centralized them in personality.js. Went through two tone passes because apparently I couldn’t decide if the bot should sound like a stoic AI from a space movie or like it’s been on Twitter since 2019. It landed somewhere in between and honestly that’s a personality a lot of people have. Having it centralized meant the whole voice-swap was a single-file change instead of hunting through every command like a raccoon going through someone’s trash.
Fixed real bugs from the original file along the way, typos that would’ve crashed the bot. cool, cool, very cool, glad I caught that before it caught me.
Why I forgot to log any of this
Short version, I was moving fast across a lot of files at once. db setup, service wrappers, command rewiring, personality, scheduler and treated it like “just get it working” instead of “document as I go”. I was working on a lot of projects at the same time and this was something I did just after finding about Stardance so I barely remembered to ship it. But I’m doing so now, several weeks late, riding in on a horse made of retroactive commit messages. I barely had any brainpower left for side projects at 1am because of my “awesome” uni.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.