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
--embed-color HEXnoEmbed color (e.g. 5865F2)
--embed-footer TEXTnoEmbed footer text
--embed-image URLnoEmbed image URL
--embed-thumbnail URLnoEmbed thumbnail URL
--embed-author TEXTnoEmbed author name
--embed-field TEXTnoEmbed field (repeatable, format Name::Value::Inline)
--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 bulk-delete

Delete multiple messages at once. Requires confirmation (use --yes to skip).

discli message bulk-delete <channel> <id1> <id2> ...
ArgumentRequiredDescription
CHANNELyesChannel name or ID
ID1 ID2 ...yesMessage snowflake IDs to delete

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

reaction users

List users who reacted with a specific emoji.

discli reaction users <channel> <message_id> <emoji> [OPTIONS]
Argument / OptionRequiredDefaultDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID
EMOJIyesEmoji character or custom emoji string
--limit Nno100Max users to list

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, category, or forum
--topic TEXTnoChannel topic

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

channel edit

Edit channel settings.

discli channel edit <channel> [OPTIONS]
Argument / OptionRequiredDescription
CHANNELyesChannel name or ID
--name TEXTnoNew channel name
--topic TEXTnoNew channel topic
--slowmode NnoSlowmode delay in seconds (0 to disable)
--nsfw / --no-nsfwnoToggle NSFW setting

channel forum-post

Create a forum post in a forum channel.

discli channel forum-post <channel> <title> <content> [OPTIONS]
Argument / OptionRequiredDescription
CHANNELyesForum channel name or ID
TITLEyesPost title
CONTENTyesPost body content
--file PATHnoFile to attach (repeatable)

channel set-permissions

Set permission overwrites for a channel.

discli channel set-permissions <channel> <target> [OPTIONS]
Argument / OptionRequiredDescription
CHANNELyesChannel name or ID
TARGETyesRole or member name/ID
--allow TEXTnoComma-separated permissions to allow
--deny TEXTnoComma-separated permissions to deny
--target-type CHOICEnoTarget type: role or member (default: role)

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)

thread archive

Archive a thread.

discli thread archive <thread>
ArgumentRequiredDescription
THREADyesThread name or ID

thread unarchive

Unarchive a thread.

discli thread unarchive <thread>
ArgumentRequiredDescription
THREADyesThread name or ID

thread rename

Rename a thread.

discli thread rename <thread> <new_name>
ArgumentRequiredDescription
THREADyesThread name or ID
NEW_NAMEyesNew thread name

thread add-member

Add a member to a thread.

discli thread add-member <thread> <member_id>
ArgumentRequiredDescription
THREADyesThread name or ID
MEMBER_IDyesMember user ID

thread remove-member

Remove a member from a thread.

discli thread remove-member <thread> <member_id>
ArgumentRequiredDescription
THREADyesThread name or ID
MEMBER_IDyesMember user ID

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

role edit

Edit a role’s settings.

discli role edit <server> <role> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
ROLEyesRole name or ID
--name TEXTnoNew role name
--color HEXnoHex color (e.g. ff0000)
--hoist / --no-hoistnoToggle displaying role separately in sidebar
--mentionable / --no-mentionablenoToggle whether role can be @-mentioned

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)

member timeout

Timeout a member, preventing them from sending messages or joining voice. Requires confirmation (use --yes to skip).

discli member timeout <server> <member> <duration> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
MEMBERyesMember name or ID
DURATIONyesTimeout duration in seconds (0 to remove timeout)
--reason TEXTnoReason for timeout
--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

poll results

View results of a poll.

discli poll results <channel> <message_id>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID of the poll

poll end

End a poll early.

discli poll end <channel> <message_id>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
MESSAGE_IDyesMessage snowflake ID of the poll

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, voice
--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, voice
--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.


webhook

Manage channel webhooks.

webhook list

List webhooks for a channel.

discli webhook list <channel>
ArgumentRequiredDescription
CHANNELyesChannel name or ID

webhook create

Create a webhook for a channel.

discli webhook create <channel> <name>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
NAMEyesWebhook name

webhook delete

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

discli webhook delete <channel> <webhook_id>
ArgumentRequiredDescription
CHANNELyesChannel name or ID
WEBHOOK_IDyesWebhook snowflake ID

event

Manage scheduled server events.

event list

List scheduled events for a server.

discli event list <server>
ArgumentRequiredDescription
SERVERyesServer name or ID

event create

Create a scheduled event.

discli event create <server> <name> <start_time> [OPTIONS]
Argument / OptionRequiredDescription
SERVERyesServer name or ID
NAMEyesEvent name
START_TIMEyesStart time (ISO 8601 format)
--end-time TEXTnoEnd time (ISO 8601 format)
--location TEXTnoEvent location (for external events)
--channel TEXTnoVoice/stage channel for the event
--description TEXTnoEvent description

event delete

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

discli event delete <server> <event_id>
ArgumentRequiredDescription
SERVERyesServer name or ID
EVENT_IDyesEvent snowflake ID

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