CLICord(pronounced cli(ng)-cord) is a lightweight terminal-based Discord client written in Python.
Instead of launching an entire Chromium-powered apartment complex just to send messages, CLICord runs directly in your terminal with minimal resource usage.
Caution
This project uses Discord's API directly and may violate Discord's TOS depending on how it is used. This client does not attempt to imitate the official Discord client. It does not send many of the extra events and telemetry normally sent by Discord clients(typing indicators, metadata, science/tracking events, etc.).
"I am not responsible for any loss caused by using "self-bots" or CLICord"
- Lightweight terminal interface
- Realtime Gateway connection
- Message sending and receiving
- Friend list fetching
- DM listing
- Status changing
- Session resume support
- Python 3.9+
- Terminal ANSI color support(else you're gonna see a messy .dms output)
- A Discord account
- Some knowledge about json syntax
git clone https://github.com/placeholder2703/CLICord.gitAlternatively, you can also just download this repo as a zip file then extract it.
Inside the cloned repo, run:
pip install -r requirements.txtCreate a users.json file:
{
"nickname":"discord_token_here"
}Optionally, you can add multiple accounts too
Example:
{
"account1":"discord_token_here",
"account2":"still_discord_token",
"accountN":"sacred_token_that_you_should_not_leak_lolololol"
}python main.pyMessages typed are sent to the currently selected channel.
Commands start with a dot (.).
Example:
.changechannel 123456789012345678
yo wsg ma babies
The message yo wsg ma babies will be sent to channel 123456789012345678.
.help
Displays the command list.
.friends
Fetches and displays your friends list.
.dms
Lists available DMs and Group DMs.
Use the printed channel IDs with .changechannel.
.changechannel <id>
Selects a channel for chatting.
After selecting a channel, normal text input will send messages there.
.send <message>
Sends a message to the currently selected channel.
Useful when the message itself starts with a dot.
.status <status> <activities included?>
Changes your Discord status.
Available statuses typically include:
onlineidledndinvisible
Optionally, if <activities included?> is provided, activities will be loaded from activities.json.
Example:
.status dnd True
.info
Displays basic account information including ID, user/display name.
Note
Unicode output is enabled automatically on Windows.
If your terminal doesn't have ANSI color support, you can open colours.py and change every variable in class D to ""
Partially vibe-coded