fonzi2
v1.3.0
Published
Discord bot starter kit
Downloads
26
Readme
Fonzi2 - Discord Bot Framework
Fonzi2 is an incredibly simple and blazingly fast Discord bot framework built using TypeScript and Discord.js. It provides a structured architecture with automatic command registration, event handling, and OAuth2 server-side functionality.
Table of Contents
Introduction
Developing a robust and scalable Discord bot can be a daunting task, especially for beginners. Fonzi2 simplifies this process by providing a structured framework that takes care of the essential boilerplate code and common discord bot functionalities.
Features
- Structured bot architecture with automatic command registration and event handling
- TypeScript support for type safety and code maintainability
- Cookie-session management for secure user sessions
- OAuth2 server-side functionality for user authentication and authorization
- Lightweight and extensible framework to adapt to various bot requirements
- Centralized on Discord
Getting Started
Prerequisites
Before you begin, ensure you have the following prerequisites installed:
- Node.js (>=18.12.1)
- npm (>=9.1.1)
For this purpose i reccomend using nvm (Node Version Manager).
Installation
Clone or fork the Fonzi2 repository from GitHub:
Navigate into the project directory:
cd fonzi2
Install the project dependencies:
npm install
Quick Start
Create a new application in the Discord Developer Portal.
Obtain the bot token from the Bot tab of your newly created application.
[Invite link] Generate an OAuth2 URL using the OAuth2 URL Generator in the Discord Developer Portal. Select the
bot
scope and the permissions you need to generate the bot invite link.[ServerSide OAuth2] Generate an OAuth2 URL using the OAuth2 URL Generator in the Discord Developer Portal. Select the "identify" scope and
http://localhost:<port>/login
as your redirect uri for development and CHANGEresponse_type
totoken
.- For production: you will need to create a new OAuth2 url using the hostname of your deployment (ex. https://fonzi2.ljs360d.repl.co/login as the redirect uri), remember to CHANGE
response_type
totoken
.
- For production: you will need to create a new OAuth2 url using the hostname of your deployment (ex. https://fonzi2.ljs360d.repl.co/login as the redirect uri), remember to CHANGE
Rename the
common.env
file to just.env
in the project root directory and fill in at least the required propertiesConfigure the bot intents in the
src\client\options.ts
file. Select only the necessary intents to improve bot efficiency and security.Start the bot in development mode:
npm run dev
This will start the bot and serverside in development mode, allowing you to test and debug your commands and functionalities.
Contributing
I welcome contributions to the project. Feel free to open issues or submit pull requests with improvements or bug fixes.
Todo List
- Database integration with SQL and NoSQL databases
- Discord DB pre-integration (store data in channels)
- Firebase integration instead of replit
- OAuth2 with google trough firebase
- Serverside Frontend improvements
Deployment
Dedicated Server (PM2)
You can host your bot on a dedicated server using the pm2 package.
Set up Node.js and npm on your server.
Install PM2:
If you don't have PM2 installed on your server, install it globally:
npm install pm2 -g
Clone your bot repository onto the server:
git clone https://github.com/your-username/your-bot.git cd fonzi2
Install dependencies:
npm install
Configure .env
TOKEN=your-bot-token LOG_WEBHOOK=optional-webhook-url INVITE_LINK=bot-invite-link # Production OAuth2 url OAUTH2_URL=your-oauth2-url OWNER_IDS=your-user-id,contributors-user-ids
Build the project and start the process
npm run build pm2 start npm --name "fonzi2" -- start
- Replace "fonzi2" with your desired PM2 process name.
Monitor and Manage:
# see pm2 logs pm2 logs fonzi2 # stop the bot pm2 stop fonzi2 # restart the bot pm2 restart fonzi2 # view process information pm2 show fonzi2
Serverless (Replit)
By far the simplest way to host a Discord bot for free, this approach is excellent for small to medium-sized applications with minimal resource requirements, but theres also premium options for more demanding apps.
- Sign in to Replit with GitHub.
- Click on "Create repl" to create a new repl.
- Click on "Import from GitHub" and select your bot repository.
- Setup secrets
- Instead of creating a
.env
file, on replit, you have to specify your environment variables in the Secrets tool - Just like with the
.env
you will need aTOKEN
and aLOG_WEBHOOK
secrets for the bot to work and the OAuth2 Secrets for the serverside dashboard - For this purpose there is an npm script that you should run before deployment:
npm run build:secret
that will parse your .env into a JSON file to be quickly inserted into the replit secrets, but remember to change the serverside OAuth2 url to the production one.
- Instead of creating a
- Start the Bot
- Click on the "Start" button in the toolbar
- Keep the Repl Alive:
- To ensure your bot runs continuously, use a service like UptimeRobot to ping your Repl every few minutes.