Skip to content

azigler/esdi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

98 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Esdi

ES6 Discord bot framework

Discord Twitter

GitHub npm

License Documentation ES6 Powered

Contributing Guide Code of Conduct Security Policy

Ko-fi

Table of Contents πŸ“–

Introduction πŸš€

JOIN THE ESDI COMMUNITY 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 πŸ”©

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 πŸ“‘

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 πŸ“

  • 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 🧰

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 and status 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 πŸ‡

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 πŸ“₯

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 πŸ“ˆ

  • Release v1.0.0
  • Publish npm package
  • Enhance GitHub repository
  • Set up JSDoc on GitHub Pages
  • Configure community Discord server
  • Implement global Hooks
  • Add github-redeploy global Hook
  • Release v1.1.0
  • Implement channel Hooks and hook Command
  • Add ko-fi channel Hook
  • Write Hook tutorials
  • Release v1.2.0
  • Implement interval Events and event Command
  • Add prefix Command and improve prefix customization
  • Add process-monitor global interval Event and status Command
  • Release v1.3.0
  • Add stat-cat guild interval Event
  • Add check-reddit and check-rss channel interval Events
  • Write Event tutorials
  • Add auto-publish channel interval Event
  • Add victory-garden interval Event and vg Command
  • Add support, donate, and invite Commands
  • Require Command aliases to be unique
  • Expand Command cooldowns
  • Expand Event intervals
  • Expand Command permissions
  • Add kudos and me Commands
  • Add more server management functionality