initial commit
This commit is contained in:
parent
9b8bf162b8
commit
ff0e34f836
5 changed files with 145 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
node_modules/
|
52
README.md
Normal file
52
README.md
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
# comcord
|
||||||
|
A CLI-based client for Discord inspired by [SDF](https://sdf.org)'s [commode](https://sdf.org/?tutorials/comnotirc).
|
||||||
|
|
||||||
|
## 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>`
|
||||||
|
|
||||||
|
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
|
||||||
|
- [ ] Finger (f)
|
||||||
|
- [ ] Shows presence data if available
|
||||||
|
- [ ] Creation date, join date, ID, etc
|
||||||
|
- [ ] Room history (r)
|
||||||
|
- [ ] Extended room history (R)
|
||||||
|
- [ ] 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
|
||||||
|
- [ ] Message sending
|
||||||
|
- [ ] Puts incoming messages into queue whilst in send mode
|
||||||
|
- [ ] Mentions
|
||||||
|
- [ ] Replies
|
||||||
|
- [ ] Configuration
|
||||||
|
- [ ] Default guild/channel
|
||||||
|
- [ ] Threads
|
12
package.json
Normal file
12
package.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"name": "comcord",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"keywords": [],
|
||||||
|
"author": "Cynosphere",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"eris": "github:abalabahaha/eris#dev"
|
||||||
|
}
|
||||||
|
}
|
49
pnpm-lock.yaml
Normal file
49
pnpm-lock.yaml
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
lockfileVersion: 5.4
|
||||||
|
|
||||||
|
specifiers:
|
||||||
|
eris: github:abalabahaha/eris#dev
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
eris: github.com/abalabahaha/eris/eb403730855714eafa36c541dbe2cb84c9979158
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
/opusscript/0.0.8:
|
||||||
|
resolution: {integrity: sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==}
|
||||||
|
requiresBuild: true
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/tweetnacl/1.0.3:
|
||||||
|
resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==}
|
||||||
|
requiresBuild: true
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/ws/8.8.1:
|
||||||
|
resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==}
|
||||||
|
engines: {node: '>=10.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
bufferutil: ^4.0.1
|
||||||
|
utf-8-validate: ^5.0.2
|
||||||
|
peerDependenciesMeta:
|
||||||
|
bufferutil:
|
||||||
|
optional: true
|
||||||
|
utf-8-validate:
|
||||||
|
optional: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
github.com/abalabahaha/eris/eb403730855714eafa36c541dbe2cb84c9979158:
|
||||||
|
resolution: {tarball: https://codeload.github.com/abalabahaha/eris/tar.gz/eb403730855714eafa36c541dbe2cb84c9979158}
|
||||||
|
name: eris
|
||||||
|
version: 0.17.2-dev
|
||||||
|
engines: {node: '>=10.4.0'}
|
||||||
|
dependencies:
|
||||||
|
ws: 8.8.1
|
||||||
|
optionalDependencies:
|
||||||
|
opusscript: 0.0.8
|
||||||
|
tweetnacl: 1.0.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- bufferutil
|
||||||
|
- utf-8-validate
|
||||||
|
dev: false
|
31
src/index.js
Normal file
31
src/index.js
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
const Eris = require("eris");
|
||||||
|
const token = process.argv[2];
|
||||||
|
|
||||||
|
let currentGuild,
|
||||||
|
currentChannel,
|
||||||
|
inSendMode = false;
|
||||||
|
|
||||||
|
const messageQueue = [];
|
||||||
|
|
||||||
|
const client = new Eris("Bot " + token, {
|
||||||
|
defaultImageFormat: "png",
|
||||||
|
defaultImageSize: 1024,
|
||||||
|
intents: Eris.Constants.Intents.all,
|
||||||
|
});
|
||||||
|
|
||||||
|
client.once("ready", function () {
|
||||||
|
console.log(
|
||||||
|
`Logged in as: ${client.user.username}#${client.user.discriminator} (${client.user.id})`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
client.on("messageCreate", function (msg) {
|
||||||
|
if (msg.channel.id == currentChannel) {
|
||||||
|
if (inSendMode) {
|
||||||
|
messageQueue.push(msg);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.connect();
|
Loading…
Reference in a new issue