Skip to content

humaiyun/Keplar

Repository files navigation


Keplar

A multipurpose Discord bot built with discord.js v13

keplar v1.0.0 node.js v16.9.1 discord.js v13.2.0@dev humaiyun

Table of Contents

AboutFeaturesSet UpWork in ProgressShowcaseLicenseLessons Learned

❓ About

Keplar is a personal Discord bot project that is constantly expanding. The purpose of this bot is to be a bot for use by my friends and I in our own private Discord servers. With that in mind, this bot was coded assuming it would only be used for private server use. This means the bot has no formal permission handling (e.g. everyone, administrator, moderators, etc.), or automated commands (e.g. auto roles, command disabling, etc.).

Keplar is an ongoing project of mine and it is still under active development at the moment.

I don't intend to advertise Keplar or get people to add it to their servers, as this is just a project. However, if you want to use Keplar, my recommendation is to download the source code (.zip), or clone the repository to make this a local bot on your computer. Feel free to modify the source code to your liking.

Note: There is a secondary branch, keplar-old-framework, which used to be the original main branch (w/ over 120 commits and featured 12+ commands). I do not recommend downloading that since it is on a roughly designed framework. The current main branch has a much better framework and is where all active development will be committed to.

If you end up downloading, cloning, or you simply like this repository, leaving a star ⭐ is much appreciated!

📃 Features

Every single command is supported with slash commands as well as prefix-based. Note: Some commands will have several options to them to allow for different types of requests.

  • 🎮 Fun: Several fun commands such as 8ball, advice, and coinflip
  • 📷 Images: Commands that return an embedded image include cat, meme, pokemon, and xkcd
  • 🎶 Music: Play tunes and more: play, currentSong, lyrics, shuffle, volume, and 6 more!
  • 💰 Cryptocurrency: Get current crypto market statistics with crypto
  • Info: Commands include info, ping, and stats for general server and bot information
  • 🔧 Utility: For general utility clear, and rng
  • 🪀 Misc: Get the definitions of words with define, and stats

This bot is still in very early development. More commands will be added in the future, with support for both slash, and prefix commands.

⚙ Set Up

To set up Keplar for local host on your computer, you must create a config.json file in the root of the repository's directory. This file should be set up similarly to the example given below. Note: You can change the prefix from ! to whatever you want.

{
    "token": "BOT-TOKEN",
    "prefix": "!",
    "mongooseConnectionString": "MONGODB-CONNECTION-STRING",
    "singleGuildId": "SERVER-ID",
    "apiKeys": 
        {
          "key-1": "API-KEY-1",
          "key-2": "API-KEY-2"
        }
}

In terms of how to acquire a bot token, mongoDB connection string, or external api keys, I recommend searching the internet (Google, or YouTube) for in-depth guides. There are a lot of detailed guides on getting a Discord bot set up either locally or on a host site. Example Guide

Other things to install include:

🏗 Work in Progress

As previously mentioned, Keplar is in active development and will get more updates in the future.

Some ideas in the works include:

  • Database (MongoDB) setup for the collection and storage of information
  • Permissions Handler

🖼 Showcase

/clear /crypto cryptocurrency: List of commands
clear command crypto command full command list

/pokemon /pokemon index: /pokemon name:
pokemon random command pokemon index command pokemon name command

📝 License

This project is released under the GNU GPL v3 license. Official Site.

📚 What I Learned From This Project

Some of the things I learned from this project include:

  • Parsing JSON files and data using built-in JS and NPM Got
  • Understanding GET and POST HTTP methods
  • Reading and understanding documentation for packages and libraries
  • Using and implementing 3rd party API's
  • Securing API tokens, keys, and passwords (using both .env and .json files)
  • Advanced Git: removing specific commits from history, cherry picking, squashing, branches