!command

Minimum Role Required: Moderator

!command add [limiter]<command> <response...>

Create a custom command.

If <command> is in the form of main-sub, it may be run later as either !main-sub or !main sub.

  • limiter signifies the minimum role required to access the command.
    • +: Moderator-Only
    • $: Subscriber-Only

%VARIABLES% may be used to create dynamic responses.

If !<command> already exists, its response is updated.

[Jello] !command add waffle Time to feed %ARGS% some waffles!
[CactusBot] Added command !waffle.
[BreachBreachBreach] !waffle Innectic
[CactusBot] Time to feed Innectic some waffles!

!command remove <command>

Remove a custom command.

[Epicness] !command remove waffle
[CactusBot] Removed command !waffle.
[Innectic] Oh no, my waffles! /cry

!command list

List all custom commands.

[Xyntak] !command list
[CactusBot] Commands: explosions, kittens, potato

!command enable <command>

Enable a custom command.

[artdude543] !command enable typescript
[CactusBot] Command !typescript has been enabled.

!command disable <command>

Disable a custom command.

[Innectic] !command disable typescript
[CactusBot] Command !typescript has been disabled.

!command count <command> [action]

Retrieve or modify the count value for a custom command.

If action is not specified, the count is returned.

[AlphaBravoKilo] !command count derp
[CactusBot] !derp's count is 9001.

Otherwise, the value is modified.

If action is a number (optionally preceded by an =), the count value is set to that exact number.

[Kondrik] !command count derp 9053
[CactusBot] Count updated.

Otherwise, action may begin with either a + or -, to increase or decrease the count value, respectively.

[MindlessPuppetz] !command count derp +12
[CactusBot] Count updated.

Variables

Variables enable dynamic responses based on the message

%USER%

The username of the user who ran the command.

[2Cubed] !command add kittens %USER% likes kittens!
[CactusBot] Added command !kittens.

[ParadigmShift3d] !kittens
[CactusBot] ParadigmShift3d likes kittens!

%ARGN%

The Nth argument passed with the command, where N is a nonnegative integer.

[ParadigmShift3d] !command add throw Hey, %ARG2%, have a %ARG1%!
[CactusBot] Added command !throw.

[Alkali_Metal] !throw potato Innectic
[CactusBot] Hey, Innectic, have a potato!

%ARGS%

All passed arguments, combined. (Excludes the command itself.)

[Innectic] !command add hug %USER% hugs %ARGS%!
[CactusBot] Added command !hug.

[BreachBreachBreach] !hug the whole chat
[CactusBot] BreachBreachBreach hugs the whole chat!

%COUNT%

The number of times the command has been run.

[misterjoker] !command add derp Joker has derped %COUNT% times!
[CactusBot] Added command !derp.

[ripbandit] !derp
[CactusBot] Joker has derped 193 times!

%CHANNEL%

The name of the channel.

[Rival_Laura] !command add welcome Welcome to %CHANNEL%'s stream!
[CactusBot] Added command !welcome.

[Epicness] !welcome
[CactusBot] Welcome to Xyntak's stream!

Modifiers

Change the output of variables. To use a modifier, append | and the modifier to the end of the variable name.

Multiple modifiers may be chained, and will be evaluated from left to right.

upper

Replace all lowercase letters with their uppercase equivalents.

%USER% -> 2Cubed
%USER|upper% -> 2CUBED

lower

Replace all uppercase letters with their lowercase equivalents.

%USER% -> ParadigmShift3d
%USER|lower% -> paradigmshift3d

title

Make the first letter and all letters following non-alphanumeric characters capitalized.

%ARG1% -> potatoes
%ARG1|title% -> Potatoes

reverse

Reverse the text.

%USER% -> Jello
%USER|reverse% -> olleJ

%USER|reverse|title% -> Ollej

tag

Remove the initial @, if it exists.

%ARG1% -> @xCausxn
%ARG1|tag% -> xCausxn

%ARG1% -> UnwrittenFun
%ARG1|tag% -> UnwrittenFun
[artdude543] !command add +raid Let's go raid @%ARG1|tag%! beam.pro/%ARG1|tag%
[CactusBot] Added command !raid.

[Chikachi] !raid @Innectic
[CactusBot] Let's go raid @Innectic! beam.pro/Innectic

[alfw] !raid TransportLayer
[CactusBot] Let's go raid @TransportLayer! beam.pro/TransportLayer

shuffle

Shuffle the text.

%ARG1% -> eenofonn
%ARG1|shuffle% -> fnonneoe

%ARG1% -> @eenofonn
%ARG1|tag|shuffle% -> ononneef

!alias

Minimum Role Required: Moderator

Add and remove aliases for commands.

!alias add <alias> <command> [args...]

Add alias alias for command, with arguments args.

[duke] !command add ip-hypixel mc.hypixel.net
[CactusBot] Added command !ip-hypixel.

[2Cubed] !alias add hypixel ip-hypixel
[CactusBot] Alias !hypixel for !ip-hypixel created.
[TransportLayer] !command add echo %ARGS%
[CactusBot] Added command !echo.

[ParadigmShift3d] !echo Hello, world!
[CactusBot] Hello, world!

[pingpong1109] !alias add cave echo Echoooo!
[CactusBot] Alias !cave for !echo created.

[ParadigmShift3d] !cave Is anyone theeeere?
[CactusBot] Echoooo! Is anyone theeeere?

!alias remove <alias>

Remove alias alias.

[CallMeCyber] !alias remove cave
[CactusBot] Alias !cave removed.

!alias list

List all aliases.

[pylang] !alias list
[CactusBot] Aliases: hypixel (ip-hypixel), meow (kitten).

!repeat

Minimum Role Required: Moderator

Send the contents of a command at a set interval.

!repeat add <interval> <command>

Add a repeat for a specific command.

  • interval is the amount of time between messages, in seconds. The minimum is 60.
  • command is the command response to send at the interval.
[misterjoker] !repeat add 1200 waffle
[CactusBot] Repeat !waffle added on interval 1200.
[ParadigmShift3d] Yay! Time to eat all the waffles. :D

!repeat remove <command>

Remove a repeat.

[AlphaBravoKilo] !repeat remove waffle
[CactusBot] Repeat for command !waffle has been removed.
[Innectic] Aww... no more waffles.

!repeat list

List all repeats.

[impulseSV] !repeat list
[CactusBot] Active repeats: waffle, kittens.

!quote

!quote [id]

Minimum Role Required: User

Retrieve a quote. If a numeric id is supplied, return the quote with the specific identifier. Otherwise, choose a random quote.

[cass3rz] !quote
[CactusBot] "Someone stole my waffles!" -Innectic
[TransportLayer] !quote 12
[CactusBot] "Potato!" -2Cubed

!quote add <quote...>

Minimum Role Required: Moderator

Add a quote.

[Daegda] !quote add "Python 3.6 is out!" -pylang
[CactusBot] Added quote #37.

!quote edit <id> <quote...>

Minimum Role Required: Moderator

Edit the contents of a quote.

[alfw] !quote edit 12 "Potato salad!" -2Cubed
[CactusBot] Edited quote #12.

!quote remove <id>

Minimum Role Required: Moderator

Remove a quote.

[QueenOfArt] !quote remove 4
[CactusBot] Removed quote #4.

!social

Store and retrieve social data.

!social [services...]

Retrieve the URL for social services.

If any services are provided, the data for only those will be returned. Otherwise, all social URLs will be returned.

[cass3rz] !social
[CactusBot] Twitter: https://twitter.com/Innectic, Github: https://github.com/Innectic
[innectic] !social github
[CactusBot] Github: https://github.com/Innectic

!social add <service> <url>

Minimum Role Required: Moderator

Store a social URL.

[eenofonn] !social add twitter https://twitter.com/eenofonn
[CactusBot] Added social service twitter.

[duke] !social twitter
[CactusBot] Twitter: https://twitter.com/eenofonn

!social remove <service>

Minimum Role Required: Moderator

Remove a social URL.

[Daegda] !social remove twitch
[CactusBot] Removed social service twitch.

!config

Minimum Role Required: Moderator

Set a configuration option.

!config <follow|subscribe|host>

Edit the announcement messages for events.

!config <follow|subscribe|host> message

Get the response for the event announcement.

[acg1000] !config follow message
[CactusBot] Current Response: `Thanks for following, %USER%!`

!config <follow|subscribe|host> message <response...>

Update the response for an event announcement. The %USER% variable may be used for username substitution.

[misterjoker] !config announce follow Thanks for following the channel, %USER%!
[CactusBot] Updated announcement.

*ParadigmShift3d follows*
[CactusBot] Thanks for following the channel, ParadigmShift3d!

!config announce <follow|subscribe|host> [on|off]

Toggle a specific type of event announcement. Either on or off may be used to set the exact state.

[Jello] !config announce follow toggle
[CactusBot] Follow announcements are now disabled.

*Innectic follows*
*CactusBot does not respond*

!config spam <urls|emoji|caps> <value>

Change the configuration value for a spam filter.

Running the command without the value will return the current value in the config.

  • urls accepts either on or off, which allows or disallows URLs, respectively.
  • emoji accepts a number, which is the maximum amount of emoji which one message may contain.
  • caps accepts a number, which is the maximum “score” which a message may have before being considered spam.
    • The “score” is calculated by subtracting the total number of lowercase letters from the total number of uppercase letters.
[DnatorGames] !config spam urls off
[CactusBot] URLs are now disallowed.

[QuirkySquid] Whoa, check out google.com!
*CactusBot times out QuirkySquid*
[QueenofArt] !config emoji 5
[CactusBot] Maximum number of emoji is now 5.

[LordOfTheUndead] !config emoji
[CactusBot] Maximum amount of emojis allowed is 5

[pingpong1109] Wow! :O :O :O :D :D :D
*CactusBot times out pingpong1109*

!trust

Minimum Role Required: Moderator

Add and remove trusts.

Trusted users can bypass spam filters.

!trust <user>

Toggle user‘s trusted status.

[alfw] !trust Innectic
[CactusBot] @Innectic is now trusted.

[alfw] !trust Innectic
[CactusBot] @Innectic is no longer trusted.

!trust add <user>

Trust user.

[Rival_Laura] !trust add 2Cubed
[CactusBot] @2Cubed has been trusted.
[2Cubed] twitter.com/2Cubed

!trust remove <user>

Remove user‘s trust.

[CallMeCyber] !trust remove 2Cubed
[CactusBot] Removed trust for @2Cubed.
[2Cubed] Noooo! /cry

!trust list

List all trusted users.

[DnatorGames] !trust list
[CactusBot] Trusted users: Innectic, eenofonn, duke.

!multi

Generate a multistream link.

!multi [service]:[channel]

service can be one of the following:

  • b (Beam)
  • t (Twitch)
  • h (Hitbox)
  • y (Youtube)

channel represents the name of the channel on that platform

[ParadigmShift3d] !multi b:neat t:stream h:to y:watch
[CactusBot] https://multistream.me/b:neat/t:stream/h:to/y:watch/

Packets

Base Packet

Message Packet

Ban Packet

Event Packet

Magic Commands

Handlers

Base Handler

Handler Controller