Polyceon Bot V2

me · June 2, 2026

> /badge badge_id:1986638781753490 Badge leaderboard for the CHAOS DEMON badge in Nullscape

background

The Polyceon bot in Roblox Discussion already existed, it’s not brand new. It was a bit of an open secret that the original version of the bot was not very well maintained, though. A lot of features used cookie based authentication to access Roblox API endpoints. While mostly documented, those endpoints were not officially supported, and thus were prone to change at any time. Not ideal.

ok but like what is it

Since the RD server generally was focused on events and general competitveness, a lot (but not all!) of the features were very centered around Roblox. They include:

  • The badge leaderboards, originally used by sending a message formatted like -badge 1986638781753490
  • A few animal commands like -bird that embedded random images from Unsplash
  • Commands that replaced people’s messages with webhooks, which forced them to talk in uwu speak and/or with far too many emojis we did not include these in the rewrite
  • Trackers for game updates and badge owner counts (which also were not included as of writing, but may return)
  • Vanity roles (icons and colors) for players who own specific badges which could be equipped at will
  • Giveaways and “badge bounty” contests which had requirements to enter (that Polyceon validated), picking either random winners or the first n valid entrants to win things such as item codes or Robux

how did it work before

Pretty badly! The old version did not actually control any user account linking, it used the RoVer API to get the Roblox account a user was verified with, and required their Roblox inventory to be fully public to submit badge times or enter giveaways with badge requirements. Also, the badge leaderboard didn’t even use a proper database, it used a persistent Redis volume to store each podium. Near the end, the ratelimits for cookie-authenticated endpoints were lowered a lot, which caused issues whenever many users tried to enter a giveaway or claim a bounty at the same time.

so what did the rewrite do better

For one, it uses Discord.js instead of the fragmented (I think? That’s what glatch told me) Python Discord packages. All the commands were migrated to slash commands since Discord wants bot developers to do that now. (Except for one but you can’t use it anyways) I created an OAuth flow to allow users to actually link their account instead of using a different verification bot. As a bonus, this gave us access to scopes such as inventory-item:read which allowed us to entirely remove the public inventory requirement!!

Using the Open Cloud APIs also increased the ratelimits significantly, as Open Cloud handles ratelimits per-user as opposed to per-ip/per-account depending on if the endpoint required authentication or not. This made giveaway entries WAY more reliable, since it got overloaded quite often!

In addition, we used an actual (postgres) database for everything this time, instead of a persistent Redis volume. I’m not the most experienced with SQL, so glatch did a lot of the heavy lifting there. (read: basic setup)

wait did you actually just delete all the badge leaderboard times dating back to 2018

No, all the podium times were migrated to the new system! The old version only stored the top 3 times instead of every submitted time though, so any entries that weren’t visible on the podium at the time we shut down Polyceon V1 were lost. Old times are even marked with an asterisk to show that they are old. (and also since the timestamps for them are only accurate to the second)

It was weird to migrate them though, since they were stored in a pretty scuffed format. I was given a large JSON file with the podiums for every badge that had a podium entry. Example of the JSON Only one entry exists for this badge, obtained at unix timestamp 1550958919. I removed his discord User ID from the image, but the badge was obtained by Feodoric.

Even with the weird format it still only took like 30 seconds to upload all the entries to the new DB though once the script was ready lmao

so how do i use this

Right now, the contest and vanity role commands are locked to RD only. The badge leaderboards, and other fun stuff aren’t, though, you can use them yourself right now!! If you want to see the quickly thrown together homepage, you can find it here