CLI Commands

Complete reference for every discli command, subcommand, argument, and option.

Global Options

These options apply to all commands and must appear before the subcommand.

OptionEnv VarDescription
--token TEXTDISCORD_BOT_TOKENDiscord bot token
--jsonOutput as JSON
--yes, -ySkip confirmation prompts for destructive actions
--profile CHOICEDISCLI_PROFILEOverride permission profile (full, chat, readonly, moderation)

message

Send, list, edit, and delete messages.

message send

Send a message to a channel.

discli message send <channel> <text> [OPTIONS]
Argument / OptionRequiredDescription
CHANNELyesChannel name or ID
TEXTyesMessage content
--embed-title TEXTnoEmbed title
--embed-desc TEXTnoEmbed description
--file PATHnoFile to attach (repeatable)

message list

List recent messages in a channel.

discli message list <channel> [OPTIONS]
Argument / OptionRequiredDefaultDescription
CHANNELyesChannel name or ID
--limit Nno10Number of messages to fetch
--before DATEnoBefore date (YYYY-MM-DD or ISO)
--after DATEnoAfter date (YYYY-MM-DD or ISO)

message history

Fetch deep message history from a channel.

discli message history <channel> [OPTIONS]
Argument / OptionRequiredDefaultDescription
CHANNELyesChannel name or ID
--days NnoFetch messages from last N days
--hours NnoFetch messages from last N hours
--limit NnounlimitedMax messages to fetch

message get

Fetch a single message by ID.

discli message get <channel> <message_id>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID

message edit

Edit a message.

discli message edit <channel> <message_id> <new_text>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID
NEW_TEXTyesReplacement content

message delete

Delete a message. Requires confirmation (use --yes to skip).

discli message delete <channel> <message_id>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID

message reply

Reply to a specific message.

discli message reply <channel> <message_id> <text> [OPTIONS]
Argument / OptionRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage to reply to
TEXTyesReply content
--file PATHnoFile to attach (repeatable)

Search messages in a channel by content.

discli message search <channel> <query> [OPTIONS]
Argument / OptionRequiredDefaultDescription
CHANNELyesChannel name or ID
QUERYyesSearch string (case-insensitive)
--limit Nno100Number of messages to scan
--author TEXTnoFilter by author name
--before DATEnoBefore date (YYYY-MM-DD or ISO)
--after DATEnoAfter date (YYYY-MM-DD or ISO)

dm

Send and read direct messages.

dm send

Send a direct message to a user.

discli dm send <user> <text> [OPTIONS]
Argument / OptionRequiredDescription
USERyesUser ID or username
TEXTyesMessage content
--file PATHnoFile to attach (repeatable)

dm list

List recent DMs with a user.

discli dm list <user> [OPTIONS]
Argument / OptionRequiredDefaultDescription
USERyesUser ID or username
--limit Nno10Number of messages to fetch

reaction

Add, remove, and list reactions.

reaction add

Add a reaction to a message.

discli reaction add <channel> <message_id> <emoji>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID
EMOJIyesEmoji character or custom emoji string

reaction remove

Remove a reaction from a message.

discli reaction remove <channel> <message_id> <emoji>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID
EMOJIyesEmoji character or custom emoji string

reaction list

List reactions on a message.

discli reaction list <channel> <message_id>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID

channel

List, create, delete, and inspect channels.

channel list

List channels in a server.

discli channel list [OPTIONS]
OptionRequiredDescription
--server TEXTnoServer name or ID (lists all servers if omitted)

channel create

Create a channel in a server.

discli channel create <server> <name> [OPTIONS]
Argument / OptionRequiredDefaultDescription
SERVERyesServer name or ID
NAMEyesChannel name
--type CHOICEnotextChannel type: text, voice, or category

channel delete

Delete a channel. Requires confirmation (use --yes to skip).

discli channel delete <channel>
ArgumentRequiredDescription
CHANNELyesChannel name or ID

channel info

Show channel details.

discli channel info <channel>
ArgumentRequiredDescription
CHANNELyesChannel name or ID

thread

Create, list, and send messages in threads.

thread create

Create a thread from a message.

discli thread create <channel> <message_id> <name>
ArgumentRequiredDescription
CHANNELyesParent channel name or ID
MESSAGE_IDyesMessage to create thread from
NAMEyesThread name

thread list

List active threads in a channel.

discli thread list <channel>
ArgumentRequiredDescription
CHANNELyesChannel name or ID

thread send

Send a message to a thread.

discli thread send <thread> <text> [OPTIONS]
Argument / OptionRequiredDescription
THREADyesThread name or ID
TEXTyesMessage content
--file PATHnoFile to attach (repeatable)

server

List and inspect servers.

server list

List servers the bot is in.

discli server list

No arguments or options.

server info

Show server details.

discli server info <server>
ArgumentRequiredDescription
SERVERyesServer name or ID

role

Manage server roles.

role list

List roles in a server.

discli role list <server>
ArgumentRequiredDescription
SERVERyesServer name or ID

role create

Create a role.

discli role create <server> <name> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
NAMEyesRole name
--color HEXnoHex color (e.g. ff0000)
--permissions INTnoPermission integer

role delete

Delete a role. Requires confirmation (use --yes to skip).

discli role delete <server> <role>
ArgumentRequiredDescription
SERVERyesServer name or ID
ROLEyesRole name or ID

role assign

Assign a role to a member.

discli role assign <server> <member> <role>
ArgumentRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID
ROLEyesRole name or ID

role remove

Remove a role from a member.

discli role remove <server> <member> <role>
ArgumentRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID
ROLEyesRole name or ID

member

List, inspect, kick, ban, and unban members.

member list

List members of a server.

discli member list <server> [OPTIONS]
Argument / OptionRequiredDefaultDescription
SERVERyesServer name or ID
--limit Nno50Max members to list

member info

Show member details.

discli member info <server> <member>
ArgumentRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID

member kick

Kick a member from the server. Requires confirmation (use --yes to skip).

discli member kick <server> <member> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID
--reason TEXTnoReason for kick
--triggered-by TEXTnoUser ID who triggered this action (for permission check)

member ban

Ban a member from the server. Requires confirmation (use --yes to skip).

discli member ban <server> <member> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID
--reason TEXTnoReason for ban
--triggered-by TEXTnoUser ID who triggered this action (for permission check)

member unban

Unban a member from the server. Requires confirmation (use --yes to skip).

discli member unban <server> <member> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID (username or user ID)
--triggered-by TEXTnoUser ID who triggered this action (for permission check)

poll

Create and manage polls.

poll create

Create a poll in a channel.

discli poll create <channel> <question> <answers...> [OPTIONS]
Argument / OptionRequiredDefaultDescription
CHANNELyesChannel name or ID
QUESTIONyesPoll question
ANSWERSyesTwo or more poll options (space-separated)
--duration Nno24Poll duration in hours
--multiplenofalseAllow multiple selections
--emoji, -enoEmoji for each answer (in order, repeatable)

Example:

discli poll create #general "Favorite AI?" Claude Gemini ChatGPT
discli poll create #general "Best?" A B C -e a_emoji -e b_emoji -e c_emoji
discli poll create #general "Vote!" Yes No --multiple -e ok -e x

typing

Show typing indicator in a channel.

discli typing <channel> [OPTIONS]
Argument / OptionRequiredDefaultDescription
CHANNELyesChannel name or ID
--duration Nno5Seconds to show typing indicator

listen

Listen for real-time Discord events. Outputs events to stdout. Press Ctrl+C to stop.

discli listen [OPTIONS]
OptionRequiredDefaultDescription
--server TEXTnoFilter by server name or ID
--channel TEXTnoFilter by channel name or ID
--events TEXTnoallComma-separated event types: messages, reactions, members, edits, deletes
--ignore-bots / --include-botsno--ignore-botsIgnore messages from bots

serve

Start a persistent bot process with bidirectional JSONL communication. Events are emitted on stdout; commands are read from stdin.

discli serve [OPTIONS]
OptionRequiredDefaultDescription
--server TEXTnoFilter events by server name or ID
--channel TEXTnoFilter events by channel name or ID
--events TEXTnoallComma-separated event types: messages, reactions, members, edits, deletes
--include-self / --no-include-selfno--include-selfInclude bot’s own messages in events
--slash-commands PATHnoJSON file defining slash commands to register
--status CHOICEnoonlineBot status: online, idle, dnd, invisible
--activity TEXTnoActivity type: playing, watching, listening, competing
--activity-text TEXTnoActivity display text

See Serve Actions and Serve Events for the full JSONL protocol.


config

Manage discli configuration. Configuration is stored in ~/.discli/config.json.

config set

Set a config value.

discli config set <key> <value>
ArgumentRequiredDescription
KEYyesConfig key (e.g. token)
VALUEyesConfig value

config show

Show current configuration. Token values are truncated in plain-text output.

discli config show

permission

Manage permission profiles for command access control.

permission show

Show the active permission profile, including allowed and denied command patterns.

discli permission show

permission set

Set the active permission profile.

discli permission set <profile>
ArgumentRequiredDescription
PROFILEyesOne of full, chat, readonly, moderation

permission profiles

List all available permission profiles.

discli permission profiles

See Permission Profiles for details on each profile.


audit

View the audit log. Destructive actions are logged to ~/.discli/audit.log.

audit show

Show recent audit log entries.

discli audit show [OPTIONS]
OptionRequiredDefaultDescription
--limit Nno20Number of entries to show

audit clear

Clear the audit log.

discli audit clear