Inspiration from https://github.com/1Computer1/discord.js-frameworks-comparison
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 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 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 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 | GCommands GitHub - GCommands NPM |
---|---|
Event name | ✓ |
Name (uniqueId) | ✓ |
Support for WS emitter | ✓ |
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 | ✓ |
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