Skip to Content
Haven Documentation is the shared home for product guides, plugin setup, and release docs.
PluginsAIO AgentCommands & Tools

Commands And Tools

Slash Command

AIO Agent registers /aio. Access is controlled by permissions.aio_command.

SubcommandPurpose
/aio toggleToggle the agent on or off for the current ticket channel.
/aio statusShow whether the current ticket session is active, paused, or inactive.
/aio resetReset the current ticket session.
/aio usageShow requests, input/output/cache token counts, and estimated base cost.
/aio resetusageReset 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 reloadReload 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 !tclose

Human 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 staff

Permission Tiers

TierCan use
OwnerEvery tool, including sensitive read/delete/bot-identity/Athena command tools.
AdminMost server-management and moderation tools, excluding sensitive owner-only tools.
ModeratorModeration tools, role assignment/removal, lower-risk channel actions, and ticket close when allowed.
AllowedConversation 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_user
  • unban_user
  • kick_user
  • delete_messages
  • delete_role
  • remove_warning
  • set_channel_permissions
  • delete_channel
  • close_ticket
  • run_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.

ConfigBehavior
allow_ai_ticket_close: falseThe AI cannot close tickets.
ticket_close_requires_confirmation: true and ticket_close_allow_creator: trueCreator close intent uses Athena’s native ticket close-request buttons.
ticket_close_requires_confirmation: true and creator close disabledStaff/approved users get an AIO action confirmation.
ticket_close_requires_confirmation: falseThe 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 messages

With 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

ToolTierWhat it does
create_roleAdminCreates a Discord role.
delete_roleAdminDeletes a role by name.
assign_roleModeratorAdds a role to a user.
remove_roleModeratorRemoves a role from a user.

Moderation

ToolTierWhat it does
ban_userAdminBans a user. Can optionally delete 0-7 days of messages.
unban_userAdminUnbans a user by ID.
kick_userModeratorKicks a user.
timeout_userModeratorTimes out a member for up to Discord’s limit.
remove_timeoutModeratorRemoves a timeout.
warn_userModeratorCreates a warning through Athena moderation, including its history, notification, thresholds, and log.
remove_warningModeratorRevokes an active Athena warning. Uses a punishment ID from /history, or the latest active warning when omitted.
change_nicknameModeratorChanges or resets a member nickname.
move_user_voiceModeratorMoves a member to a voice channel or disconnects them.
get_user_infoModeratorReturns join date, account creation date, roles, timeout state, and related member details.

Channels And Messaging

ToolTierWhat it does
send_messageAdminSends a plain message to a channel.
send_embedAdminSends a Discord embed.
dm_userAdminSends a direct message to a user.
create_channelAdminCreates a text or voice channel, including private channels with atomic user/role visibility overwrites.
set_channel_topicAdminUpdates a text channel topic.
set_slowmodeModeratorSets channel slowmode.
lock_channelModeratorDenies @everyone Send Messages in a channel.
unlock_channelModeratorRestores @everyone Send Messages inheritance.
set_channel_permissionsAdminAllows, denies, or resets supported permissions for one user, role, or @everyone. Confirmed by default.
delete_channelOwnerPermanently deletes one unprotected channel. Confirmed and owner-only.

Tickets

ToolTierWhat it does
close_ticketModeratorCloses the current ticket or a ticket channel by ID when ticket-close policy allows it.

Sensitive Owner-Only Tools

ToolWhat it does
read_channel_messagesReads recent messages from a channel. Defaults to the current channel if omitted.
read_dmsReads the bot’s DM history with a user.
delete_messagesBulk deletes recent messages before the request. Defaults to the current channel if omitted.
get_server_infoReturns server information, including roles and channels.
get_role_membersLists members with a role.
change_bot_avatarChanges the bot avatar from a public image URL.
change_bot_usernameChanges the bot username. Subject to Discord rate limits.
change_bot_nicknameChanges the bot nickname in the server.
run_athena_commandExecutes 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, and close_ticket use the current channel when the model omits channel_id.
  • Dangerous tools can be gated by confirmation buttons.
  • Destructive tools are also confirmed when confirm_destructive_tools is 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.