When a cat is caught, the bot randomly picks a new time according to the channel's timing settings, saves this target time to the database and then creates a task which waits until that time hits to spawn a cat.
When the time comes, the bot randomly picks a cat type (based on the spawn chances) and sends it to the channel. If it fails due to missing permissions or deleted channel it will unsetup the channel to prevent further errors.
It will choose the default if there is no custom spawn message.
The default spawn message looks like this:
{emoji} {type} cat has appeared! Type '"cat" to catch it!
The default catch message looks like this for most cats:
{username} cought {emoji} {type} cat!!!!1!
You now have {number} cats of dat type!!!
this fella was cought in {time}!!!!
For special catch messages (by default), please refer to Cat Types.
Starting a rain pauses the normal spawn cycle and forcibly spawns cats randomly every 2.5-3 seconds. Unlike normal spawning, the timer starts ticking right after a spawn is done, so if a cat is not caught within the ~2.5 seconds the next one will be lost.
There is a set amount of cats spawned in each rain, calculated as rain duration in seconds / 2.75
.
When Cat Bot finishes starting up, it goes through every channel which has its target time in the past and spawns a cat in them. This covers spawns which should have occurred during the restart. Additionally, every 5 minutes a loop is run to check for any channels which are past due, either due to their tasks getting killed by the restart or something going wrong somewhere in the process. Cat Bot also keeps track of active channels to ensure that no duplicate spawns occur, maintaining a smooth and balanced spawning cycle across servers. If a cat remains uncaught for too long, Cat Bot automatically despawns it and resets the timer for that channel. The bot also logs spawn and catch events to improve performance tracking and help identify any bugs or timing issues. Over time, Cat Bot’s system adapts based on user activity, ensuring that more active servers experience more frequent cat appearances, while less active ones maintain a slower and more stable spawn rate.
This loop also handles saving cookies, updating status, posting stats to Top.gg, sending vote, quest, and timed reminders, as well as database backups.
/setup
, as well as settings up the bot, spawns the first cat to bootstrap the above infinite loop. /forget
also makes the bot forget about any spawned cats as well as mark channel as deleted to prevent any on-going spawn tasks.
/forcespawn
forces a cat to spawn, overriding any on-going spawn tasks.
Due to how spawning works, /changetimings
will only take effect after the next catch.
Spawn and catching messages can be modified with the /changemessage
command.
/setup
in the channel where you want cats to appear./forcespawn
to force the cat to spawn./forget
and then /setup
again in the channel where you want cats to spawn.Here is a brief overview of what happens when you send cat
:
/preventcatch
mode.
/changemessage
./rain
" (changes during sales)There's a special message added on April 29th 2025 for a 0 second catch: "this fella was cought in 0.000 seconds (woah)".
The new rain system was added on August 11th 2025.
The "should end" formula is calculated like this: floor(rain time + 600 * 1.3)
from floor(rain time + 600 * 1.2)
since August 24th 2025.