A CLI-based client for Discord inspired by SDF's commode.
src | ||
.eslintrc.js | ||
.gitignore | ||
.prettierrc | ||
LICENSE | ||
package.json | ||
pnpm-lock.yaml | ||
README.md |
comcord
A CLI-based client for Discord inspired by SDF's commode.
Why?
- All CLI/TUI Discord clients are outdated/unmaintained or have flaws.
- I've been spending more time in commode on SDF and have been accustomed to the experience.
Usage
pnpm i
node src/index.js <token>
Currently only bot accounts are supported, and that is unlikely to change anytime soon. Eris has a lot of user-only endpoints implemented, but it would require hacking apart Eris to do the things nessicary to spoof being the actual client. I also don't want to give skids an easy point of reference of how to spoof the client. :^)
You MUST grant your bot all Privileged Gateway Intents.
Design Decisions
- Node.js was chosen currently due to familiarity.
- Eris was chosen due to familiarity and the nature of everything not being abstracted out to 200 different classes unlike discord.js.
- "Jank" by design. While I don't expect anyone to actually use comcord on serial terminals or teletypes other than for meme factor, the option is still there.
TODO
- Commands
- Quit (q)
- Switch guilds (G)
- Switch channels (g)
- List online users in guild (w)
- Emote (e)
- Just sends message surrounded in
*
's
- Just sends message surrounded in
- Finger (f)
- Shows presence data if available
- Creation date, join date, ID, etc
- Room history (r)
- Extended room history (R)
- List channels (l)
- List guilds (L)
- Clear (c)
- Surf channels forwards (>)
- Surf channels backwards (<)
- Message Receiving
- Markdown styling
- Common markdown (bold, italic, etc)
- Figure out how spoilers would work
- Emotes?????
- Timestamp parsing
- Embeds in the style of commode's posted links
- Messages wrapped in
*
's or_
's parsed as emotes - Inline DMs to replicate commode's private messages
- Replies
- Markdown styling
- Message sending
- Puts incoming messages into queue whilst in send mode
- Mentions
- Replies
- Configuration
- Default guild/channel
- Threads
- Not have the token just be in argv
- Not have everything in one file