Commands And Tools
Slash Command
AIO Agent registers /aio. Access is controlled by
permissions.aio_command.
| Subcommand | Purpose |
|---|---|
/aio toggle | Toggle the agent on or off for the current ticket channel. |
/aio status | Show whether the current ticket session is active, paused, or inactive. |
/aio reset | Reset the current ticket session. |
/aio usage | Show requests, input/output/cache token counts, and estimated base cost. |
/aio resetusage | Reset in-memory usage counters. |
/aio handle channel:<channel> | Manually start handling a ticket/channel. |
/aio modlog user:<user> | Open Athena’s native moderation history for a user. |
/aio remove-warning user:<user> [warning-id] reason:<text> | Revoke an active Athena warning by punishment ID, or the latest active warning when the ID is omitted. |
/aio reputation user:<user> | Legacy alias that opens Athena’s native moderation history. |
/aio reload | Reload local files, built-in AthenaBot docs, and configured channel knowledgebase content. |
/aio summarize [channel] [messages] | Summarize recent messages from a channel. |
/aio scamcheck [message] [channel] | Manually scan a message ID/link, or the latest recent image/link message in a channel. |
/aio kbsearch query:<text> | Preview the knowledgebase chunks that would be retrieved for a query. |
/aio tickethealth [channel] | Summarize active, waiting, ready-to-close, paused, and stale ticket sessions. |
Owner/Admin Mentions
Trusted users can mention the bot and ask for help:
@Athena Dev summarize this ticket
@Athena Dev give @User the Customer role
@Athena Dev delete the last 6 messages in this channel
@Athena Dev where are the Athena docs?AIO Agent resolves the speaker’s tier before the model receives tools. Users
outside owner_id, admin_users, moderator_users, or allowed_users cannot
use the privileged owner-ping flow.
Ticket Customer Messages
When ticket support is active, the ticket creator can talk naturally to the AI.
When tickets.strict_workflow.enabled is true, intake questions, brief
confirmation, staff notify approval, and notify success are handled by
deterministic workflow state before the model is used.
Examples:
How do I install this plugin?
I need a human
close ticket
!tcloseHuman handoff phrases pause the AI and can notify staff. Ticket close phrases
only work when tickets.allow_ai_ticket_close and the close policy allow them.
Strict workflow examples:
what info do you need from me?
Theme/style: dark gaming thumbnail
take your time
500$
looks right yea
yes, notify staffPermission Tiers
| Tier | Can use |
|---|---|
| Owner | Every tool, including sensitive read/delete/bot-identity/Athena command tools. |
| Admin | Most server-management and moderation tools, excluding sensitive owner-only tools. |
| Moderator | Moderation tools, role assignment/removal, lower-risk channel actions, and ticket close when allowed. |
| Allowed | Conversation only, no tools. |
Tool Confirmation
If a tool is listed in require_confirmation_for, or if
confirm_destructive_tools is true and the tool is marked destructive, the bot
posts an approval embed before execution. Only a valid button interaction from
an allowed approver confirms the action.
Common confirmed tools:
ban_userunban_userkick_userdelete_messagesdelete_roleremove_warningset_channel_permissionsdelete_channelclose_ticketrun_athena_command
Plain text such as ok, yes, or confirm does not approve an expired
confirmation. The requester must run a fresh request or click a valid button.
Ticket Close Flow
close_ticket is controlled by the ticket config, not just by the tool tier.
| Config | Behavior |
|---|---|
allow_ai_ticket_close: false | The AI cannot close tickets. |
ticket_close_requires_confirmation: true and ticket_close_allow_creator: true | Creator close intent uses Athena’s native ticket close-request buttons. |
ticket_close_requires_confirmation: true and creator close disabled | Staff/approved users get an AIO action confirmation. |
ticket_close_requires_confirmation: false | The ticket closes directly through the tickets plugin. |
Close intents include close ticket, please close this ticket, and configured
ticket close command aliases such as !tclose.
Delete Messages Behavior
delete_messages deletes messages before the user’s delete request. It does not
count the delete request itself, the AI confirmation/status messages, or other
AIO workflow messages toward the requested amount.
Example:
@Athena Dev delete the last 2 messagesWith confirmation enabled, the user request and confirmation embed stay out of
the count. The result reports requested_count, deleted_count, and skipped
message counts.
Available AI Tools
Roles
| Tool | Tier | What it does |
|---|---|---|
create_role | Admin | Creates a Discord role. |
delete_role | Admin | Deletes a role by name. |
assign_role | Moderator | Adds a role to a user. |
remove_role | Moderator | Removes a role from a user. |
Moderation
| Tool | Tier | What it does |
|---|---|---|
ban_user | Admin | Bans a user. Can optionally delete 0-7 days of messages. |
unban_user | Admin | Unbans a user by ID. |
kick_user | Moderator | Kicks a user. |
timeout_user | Moderator | Times out a member for up to Discord’s limit. |
remove_timeout | Moderator | Removes a timeout. |
warn_user | Moderator | Creates a warning through Athena moderation, including its history, notification, thresholds, and log. |
remove_warning | Moderator | Revokes an active Athena warning. Uses a punishment ID from /history, or the latest active warning when omitted. |
change_nickname | Moderator | Changes or resets a member nickname. |
move_user_voice | Moderator | Moves a member to a voice channel or disconnects them. |
get_user_info | Moderator | Returns join date, account creation date, roles, timeout state, and related member details. |
Channels And Messaging
| Tool | Tier | What it does |
|---|---|---|
send_message | Admin | Sends a plain message to a channel. |
send_embed | Admin | Sends a Discord embed. |
dm_user | Admin | Sends a direct message to a user. |
create_channel | Admin | Creates a text or voice channel, including private channels with atomic user/role visibility overwrites. |
set_channel_topic | Admin | Updates a text channel topic. |
set_slowmode | Moderator | Sets channel slowmode. |
lock_channel | Moderator | Denies @everyone Send Messages in a channel. |
unlock_channel | Moderator | Restores @everyone Send Messages inheritance. |
set_channel_permissions | Admin | Allows, denies, or resets supported permissions for one user, role, or @everyone. Confirmed by default. |
delete_channel | Owner | Permanently deletes one unprotected channel. Confirmed and owner-only. |
Tickets
| Tool | Tier | What it does |
|---|---|---|
close_ticket | Moderator | Closes the current ticket or a ticket channel by ID when ticket-close policy allows it. |
Sensitive Owner-Only Tools
| Tool | What it does |
|---|---|
read_channel_messages | Reads recent messages from a channel. Defaults to the current channel if omitted. |
read_dms | Reads the bot’s DM history with a user. |
delete_messages | Bulk deletes recent messages before the request. Defaults to the current channel if omitted. |
get_server_info | Returns server information, including roles and channels. |
get_role_members | Lists members with a role. |
change_bot_avatar | Changes the bot avatar from a public image URL. |
change_bot_username | Changes the bot username. Subject to Discord rate limits. |
change_bot_nickname | Changes the bot nickname in the server. |
run_athena_command | Executes a registered AthenaBot slash command as the owner. |
Running Athena Commands Through AIO
In v1.4.2, run_athena_command resolves user, member, role, channel, and
mentionable options from Discord IDs or mentions, and validates required options
before execution. Disabled commands and requests from users whose server
membership cannot be resolved are rejected. If an explicitly requested channel
cannot be fetched, the command fails instead of running in the current channel.
Commands with private replies, including /history, need the original requester
to approve the action personally. AIO delivers the private response through that
approval interaction. If another person approves, confirmations are disabled,
or that interaction is unavailable, use the native slash command instead. AIO
does not send private output to a public channel as a fallback.
The runner supports deferred replies, attachments, and edits to its original reply. If response delivery fails, check whether the command already took effect before retrying. Some native commands handle errors internally, so an AIO summary alone is not proof that a server change completed.
Safety Rules Built Into Tooling
- Fake or placeholder Discord IDs are rejected.
delete_messages,read_channel_messages, andclose_ticketuse the current channel when the model omitschannel_id.- Dangerous tools can be gated by confirmation buttons.
- Destructive tools are also confirmed when
confirm_destructive_toolsis true. - Tool availability is filtered before the request is sent to the LLM.
- Role, user, and channel operations return structured success or error results back to the model.
- Channel deletion refuses active tickets, Discord system channels, and channels still referenced by AIO configuration.
- Anti-raid lockdowns go through Athena’s security plugin, while warnings, timeouts, kicks, bans, reversals, and history go through Athena moderation.
- Message output is sanitized to prevent accidental
@everyone,@here, and role pings. - AIO workflow messages are filtered out of conversation history so the model does not treat confirmations or close prompts as user instructions.
Usage Tracking
/aio usage shows:
- Total AI requests
- Input token estimate
- Output token estimate
- Cached input tokens
- Cache write tokens
- Estimated input cost
- Estimated output cost
- Total estimated cost
- Scam scan count
- Vision request count
- Scam flag count
- When tracking started
The estimates use usage_pricing_input_per_million and
usage_pricing_output_per_million, so update those values when changing models.
The estimate does not include provider-specific cache discounts, cache-write
premiums, or managed-cache storage charges.