Skip to content

Instantly share code, notes, and snippets.

@xHyroM
Last active April 18, 2022 13:00
Show Gist options
  • Save xHyroM/0f75dbdeddebb736a2c0253a603e88f3 to your computer and use it in GitHub Desktop.
Save xHyroM/0f75dbdeddebb736a2c0253a603e88f3 to your computer and use it in GitHub Desktop.
GCommands Support

Inspiration from https://github.com/1Computer1/discord.js-frameworks-comparison

General

Only dependencies that are not contained in the discord.js module itself are counted

General GCommands GitHub - GCommands NPM
Library version 0.1.0
Discord.js version ^13.5.0
Node.js version 16.6.0
Typings ✓ +1
Dependencies 3
Documentation Documentation
Guide Guide
VSCode Extension

+1 = Written in TypeScript

Command Parsing

Command parsing is how frameworks parse messages/interaction into commands. This includes prefixes, aliases, etc.

Command Parsing GCommands GitHub - GCommands NPM
Command aliases
Mention as prefix (Message Commands)
Multiple prefixes (Message Commands)
Per-guild prefix customisation
Stores original input

※ = You can do it with plugins

Command Handling

Command handling refers to the behavior of command execution and restrictions. It also includes the monitoring of and the inhibition of messages and commands.

Subcommands are commands that are individual commands with the same base name. Argument parsing within one command does not count towards that criteria.

Command Handling GCommands GitHub - GCommands NPM
Cooldowns (Like 10s, 30s)
Cooldown (Like 2 hours, 1 day) ※ +1
Inhibitors (Restrictions) ✓ +1
Sub Commands ※ +2
Handling edits (Message Commands)
Multiple command types in 1 function. ✓ +2
Run from code

✓ +1 = Many useful inhibitors directly in main library, custom inhibitor support
✓ +2 = You can have message command, context menu command, application command in 1 function. No distinction is needed, just use the functions that are in CommandContext

※ +1 = There is an official plugin repo
※ +2 = Only for application commands

Arguments

Arguments are the data acquired and parsed from user input. This section compares how frameworks can match and parse input.

Arguments GCommands GitHub - GCommands NPM
Optional Arguments
Sub Command Argument
Sub Command Group Argument
String Argument Type
Number Argument Type
Integer Argument Type
Boolean Argument Type
Role Argument Type
User Argument Type
Channel Argument Type
Mentionable Argument Type

※ = Only for application commands

To be clear, you can have arguments to message commands, but GCommands does not check them. So you have to use your own inhibitor, plugin or check the commands in the code. We don't want to add this because every bot should start using Application commands, but we don't want to cut message commands completely.

Listeners

Listeners GCommands GitHub - GCommands NPM
Event name
Name (uniqueId)
Support for WS emitter

Module System

The module system of a framework is how the framework structures its modules. This includes how new modules (e.g. commands) are created and loaded.

Module System GCommands GitHub - GCommands NPM
Classes
Registering (Loading)
Unregistering (Unloading)
Reloading
Plugins support
Databases (Providers) support

Databases / Providers

This section is used to see what the library supports for the database.
First of all though, it should be said that GCommands does not use databases, it just offers a simpler import.

When you want to read more, check out the guide

Databases / Providers GCommands GitHub - GCommands NPM
FireStore
MongoDB
PrismaIO
MSSQL
MySQL
NeDB
Neo4J
PostgreSQL
RethinkDB
Sequelize
Microsoft SQL Server
SQLite ※ +2

※ = Support with PrismaIO
※ +2 = Support with PrismaIO and Keyv

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment