esdi
v1.3.1
Published
ES6 Discord bot framework
Downloads
13
Maintainers
Readme
Esdi
ES6 Discord bot framework
Table of Contents :book:
Introduction :rocket:
JOIN THE ESDI COMMUNITY (AND MEET THE OFFICIAL BOT) ON DISCORD!
Esdi is a "plug-and-play" framework for building extensible Discord bots in ES6. Esdi can be added as an npm dependency to your Node.js project and implemented with just a few lines of code. The example below will load up any local extension files for Esdi available in your project, uses a local PouchDB database for all data storage, and connects to your Discord application bot user via the provided token.
// import Esdi package
const Esdi = require('esdi')
// initialize Esdi
const server = new Esdi({
discordToken: 'YOUR-DISCORD-BOT-TOKEN'
})
// load local Commands, Controllers, Events, Hooks, and Models
server.load(__dirname)
// start Esdi
server.start()
Since an Esdi bot is a standalone package, you can seamlessly integrate it into other Node applications or use it on its own. If you have plans to customize your bot, you can use the folder structure below in the root of your project folder to add custom extension files:
your-project-folder/
├── commands/
│ └── ... add your custom commands here
├── controllers/
│ └── ... add your custom controllers here
├── events/
│ └── ... add your custom events here
├── hooks/
│ └── ... add your custom hooks here
└── models/
└── ... add your custom models here
Setup :nut_and_bolt:
To get started with your own Esdi bot instance, please read our setup guide.
If you would like to add the official Esdi bot to a server instead of hosting your own instance, you will need Manage Server permissions on the server before visiting this link.
Documentation :bookmark_tabs:
You can read the latest Esdi documentation here.
There are also tutorials available. For example, you can learn how to add a custom command. There are also resources for handling webhooks from third-party services like GitHub and Ko-fi.
It is recommended to start with the first tutorial and work through each one in the provided order to build your understanding of the framework.
If you have further questions, join the Esdi Community on Discord!
Features :round_pushpin:
- Obeys a multitude of commands
- Listens to Discord events (e.g., someone joining a server)
- Supports local (PouchDB) and remote (CouchDB) databases
- Serves as middleware for webhooks
- Handles regular routines and scheduled processes
- Stands alone or integrates with pre-existing applications
- Usable for any purpose: server management, games, third-party API integration, or something totally unique!
- Extensible with custom commands, controllers, events, hooks, and models
Functionality :toolbox:
New "out-of-the-box" functionality is constantly being added to Esdi. Below is a curated list of Esdi's standout functionality:
github-redeploy
global Hook - redeploys the Esdi server after receiving a GitHub webhook (learn more)ko-fi
channel Hook - converts a Ko-fi webhook into a message embed and posts it in a channel (learn more)process-monitor
global interval Event andstatus
Command - reports the memory and processor usage of the server's Node.js process along with its uptime and Discord stats (learn more about Event) (learn more about Command)
Credits :horse_racing:
Esdi is created and maintained by Andrew Zigler, who can be reached on Twitter and Discord.
Esdi is made possible by discord.js and project supporters.
Contributing :inbox_tray:
Feedback and contributions are encouraged! After reading our Code of Conduct, use the Bug Report and Feature Request issue templates to discuss any bugs or contributions to Esdi. For more information, please read our Contributing Guide.
Roadmap :chart_with_upwards_trend:
- [x] Release
v1.0.0
- [x] Publish npm package
- [x] Enhance GitHub repository
- [x] Set up JSDoc on GitHub Pages
- [x] Configure community Discord server
- [x] Implement global Hooks
- [x] Add
github-redeploy
global Hook - [x] Release
v1.1.0
- [x] Implement channel Hooks and
hook
Command - [x] Add
ko-fi
channel Hook - [x] Write Hook tutorials
- [x] Release
v1.2.0
- [x] Implement interval Events and
event
Command - [x] Add
prefix
Command and improve prefix customization - [x] Add
process-monitor
global interval Event andstatus
Command - [x] Release
v1.3.0
- [ ] Add
stat-cat
guild interval Event - [ ] Add
check-reddit
andcheck-rss
channel interval Events - [ ] Write Event tutorials
- [ ] Add
auto-publish
channel interval Event - [ ] Add
victory-garden
interval Event andvg
Command - [ ] Add
support
,donate
, andinvite
Commands - [ ] Require Command aliases to be unique
- [ ] Expand Command cooldowns
- [ ] Expand Event intervals
- [ ] Expand Command permissions
- [ ] Add
kudos
andme
Commands - [ ] Add more server management functionality