Global Commands

Kabukibot offers a range of commands to control its behaviour. These commands are always available in every channel Kabukibot has joined. In most cases, they are only allowed to be used by the channel owner and the bot operator.

It is not possible to grant permissions for global commands to anyone. Their permissions are fixed.

In order to not conflict with other bots, all global commands are prefixed with !k_, like in !k_join.

The following sections list all global commands and their syntax.

Joining / Parting

First things first, the commands to make Kabukibot join or leave a channel. Apart from these two, never are no commands that have any special meaning in #kabukibot.

Command Syntax Description
!k_join

Important: This command must be given in #kabukibot.

This command tells the bot to join the sender's channel (i.e. you cannot make Kabukibot join foreign channels).

#kabukibottester_man: !k_join
kabukibot: tester_man, I've joined your channel.

From there on, nothing special happens. Before enabling any of the plugins, you will have no useful commands (except the global ones to control the plugins).

!k_leave

This command tells the bot to leave the channel.

Important: This command can either by given by the channel owner in his or her own channel …

#tester_mantester_man: !k_leave
kabukibot: bye bye.

… or in #kabukibot by anyone, as long as Kabukibot has joined their channel earlier.

#kabukibottester_man: !k_leave
kabukibot: tester_man, I've left your channel.

Note that this will not delete the plugin and permissions you've set on your channel. So you can make Kabukibot join your channel again at a later time and everything will still be there.

Operator-only additions

The bot operator is allowed to give explicit channels to the two commands above. That way the op can make Kabukibot join or leave arbitrary channels.

#somewherebot_operator: !k_join #channelx
kabukibot: bot_operator, I've joined #channelx.
Note that the hash sign is optional, so !k_join channelx is identical to the example above.

Plugin management

The following commands are available to control the plugins in a channel. Read the Getting started guide to learn more about the basic structure of Kabukibot, if you haven't done so already.

These commands are only granted to the channel owner and the bot operator.

Command Syntax Description
!k_plugins
!k_plugins enabled

This command will give you the list of available plugins.

#tester_mantester_man: !k_plugins
kabukibot: tester_man, available plugins are: domain_ban (enabled), emote_counter (enabled), highlights (disabled)

You can optionally also just ask for your enabled plugins by adding "enabled" to the command:

#tester_mantester_man: !k_plugins enabled
kabukibot: tester_man, enabled plugins are: domain_ban, emote_counter
!k_enable <plugin>

This command will enable a single plugin in the current channel. If the plugin is already enabled, a warning will be shown.

#tester_mantester_man: !k_enable domain_ban
kabukibot: tester_man, the plugin "domain_ban" has been enabled.

tester_man: !k_enable domain_ban
kabukibot: tester_man, the plugin "domain_ban" is already enabled in this channel.

In most cases, the plugin is now in a state where only the channel owner and the bot operator can use it. To broaden access, the global commands to manage permissions have to be used.

!k_disable <plugin>

Similar to !k_enable, this will disable a previously enabled plugin.

#tester_mantester_man: !k_disable domain_ban
kabukibot: tester_man, the plugin "domain_ban" has been disabled.

tester_man: !k_disable domain_ban
kabukibot: tester_man, the plugin "domain_ban" is not enabled in this channel.

Note that all plugin settings and permissions are retained and will be restored once the plugin is re-enabled again.

Permission management

The following commands manage the ACL. Read the chapter on permissions to learn more about how the access control works in Kabukibot.

These commands are only granted to the channel owner and the bot operator.

Command Syntax Description
!k_permissions

This command will give you the list of available permissions, regardless whether they have actually been granted to someone or not. Most (if not all) permissions are defined by plugins, so do not be alarmed if there are no permissions in your channel when you also have no plugins enabled yet.

#tester_mantester_man: !k_permissions
kabukibot: tester_man, available permissions are: configure_domain_bans

There can be any number of permissions, since plugins are not restricted to providing only one each.

!k_allow <perm> <users>

This command will grant a certain permission (perm) to a single user or multiple users.

users can be a single username (e.g. tester_man) or a comma-separated list of usernames (e.g. tester_man,another_user). Instead of giving usernames, you can also give group names (e.g. $mods,another_chatter,$admins).

All user identifiers Kabukibot cannot recognize will be silently ignored. If there are actual changes to the permission, Kabukibot will tell you about it.

#tester_mantester_man: !k_allow configure_domain_bans a_username
kabukibot: tester_man, granted permission for configure_domain_bans to a_username.
#tester_mantester_man: !k_allow configure_domain_bans $mods
kabukibot: tester_man, granted permission for configure_domain_bans to $mods.
#tester_mantester_man: !k_allow configure_domain_bans $subs,another_user
kabukibot: tester_man, granted permission for configure_domain_bans to $subs, another_user.

Multiple uses of this command will add up, so after the sequence above, moderators ($mods), subscribers ($subs) and two users (a_username and another_user) have been granted the permission. If you try to grant again, nothing will happen:

#tester_mantester_man: !k_allow configure_domain_bans $mods
kabukibot: tester_man, no changes needed.
!k_deny <perm> <users>

This command will revoke a previously granted permission (perm) from a single user or multiple users. Its syntax is the same as for !k_allow and works the same.

#tester_mantester_man: !k_deny configure_domain_bans a_username,$mods
kabukibot: tester_man, revoked permission for configure_domain_bans from a_username, $mods.
!k_allowed <perm>

This command can be used to check the currently set status of a permission (perm).

#tester_mantester_man: !k_allowed configure_domain_bans
kabukibot: tester_man, "configure_domain_bans" is granted to: $subs, another_user

Ping & Echo

These commands are only granted to the bot operator.

Command Syntax Description
!k_ping

Will make Kabukibot respond with "Pong!". This command is only used to check if the bot is still up and running.

(somewhere)bot_operator: !k_ping
kabukibot: bot_operator, Pong!
!k_echo <message>

This command will make Kabukibot say exactly (and only) message in the channel the command has been given in (i.e. it's not a broadcast).

(somewhere)bot_operator: !k_echo This is a test.
kabukibot: This is a test.

Dictionary Control

Kabukibot contains an internal, global dictionary, that can be administered using the following commands. The dictionary is feeding amongst other things the commands in the ESA, GTA and SDA plugins.

In each command, the key will automatically be lowercased and may only contain alphanumeric characters and the underscore.

These commands are only granted to the bot operator.

Command Syntax Description
!k_dict_keys

This command returns all currently existing keys in the dictionary in alphabetical order.

(somewhere)bot_operator: !k_dict_keys
kabukibot: bot_operator, keys are: agdq_info, esa_info, sqgd_info
!k_dict_get <key>

Returns the current value for the given key. You will get a warning if the key does not exist. The key will automatically be lowercased and may only contain alphanumeric characters and the underscore.

(somewhere)bot_operator: !k_dict_get sgdq_info
kabukibot: bot_operator, sgdq_info = SGDQ stands for Summer Games Done Quick, the …
(somewhere)bot_operator: !k_dict_get invalid_key
kabukibot: bot_operator, unknown key "invalid_key" given.
!k_dict_set <key> <value>

This command will set a new value for key. If the given key does not yet exist, it will be created and set to the given value.

(somewhere)bot_operator: !k_dict_set sgdq_info An updated description.
kabukibot: bot_operator, replaced "sgdq_info" with "An updated description.".
(somewhere)bot_operator: !k_dict_get moo_info Mooooooooo!
kabukibot: bot_operator, added "moo_info" with "Mooooooooo!".