A CLI-based client for Discord inspired by SDF's commode.
Find a file
2023-06-21 13:26:57 -06:00
src add cross-guild peek 2023-06-21 13:26:57 -06:00
.eslintrc.js refactor everything out of one file, add channel rememberance 2022-08-28 16:01:31 -06:00
.gitignore initial commit 2022-08-27 17:27:05 -06:00
.prettierrc add help command 2022-08-27 18:49:02 -06:00
LICENSE Add LICENSE 2022-08-27 22:01:00 +00:00
package.json oceanic -> dysnomia 2023-05-30 21:03:44 -06:00
pnpm-lock.yaml oceanic -> dysnomia 2023-05-30 21:03:44 -06:00
README.md markdown 2023-06-20 22:34:42 -06:00

comcord

A CLI-based client for Discord inspired by SDF's commode.

Why?

  1. All CLI/TUI Discord clients are outdated/unmaintained or have flaws.
  2. I've been spending more time in commode on SDF and have been accustomed to the experience.

Usage

  1. pnpm i
  2. node src/index.js <token>

Your token will be then stored in .comcordrc after the first launch.

User Accounts

User accounts are partially supported via allowUserAccounts=true in your .comcordrc. This is use at your own risk, despite spoofing the official client. I am not responsible for any banned accounts.

Guild members not populating

This is due to most libraries not implementing Lazy Guilds, as bots do not need lazy guilds to function.

If you are willing to implement Lazy Guilds based off of unofficial documentation and my already existing horrible hacks to make user accounts work in the first place, feel free to send a PR (on GitLab, GitHub repo is a read only mirror).

Bot Accounts (prefered)

You MUST grant your bot all Privileged Gateway Intents.

Design Decisions

  • Node.js was chosen currently due to familiarity.
  • Dysnomia 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
    • 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 (<)
    • AFK toggle (A)
    • Send DM (s)
    • Answer DM (a)
    • Peek (p)
  • Message Receiving
    • Markdown styling
      • Common markdown (bold, italic, etc)
      • Figure out how spoilers would work
      • Emotes?????
      • Timestamp parsing
      • Mentions 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
  • Message sending
    • Puts incoming messages into queue whilst in send mode
    • Mentions
    • Replies
  • Configuration
    • Default guild/channel
      • No way to set in client (yet?), defaultChannel= and defaultGuild= in your .comcordrc.
  • Threads
  • Not have the token just be in argv
  • Not have everything in one file

Repository

If you're viewing this on GitHub or GitLab, you are viewing a read only mirror. The main repository is located on Gitdab and is push mirrored to the other two.