Engineering/2021/Active
DisBotlist
A Discord bot listing platform — add your bot, track its growth, and discover other bots.
Overview
DisBotlist is a Discord bot directory: developers list their bots, users browse and vote for them, and listed bots get a public API to report their own stats back. The codebase started as a fork of the v-codes botlist template (credited in the project's README) and grew from there — it now also runs a parallel directory for Discord servers, and a Discord-OAuth-gated code-sharing tool for developers.
Under the hood it's an Express + EJS site (server-rendered, no SPA framework) backed by MongoDB, with a companion discord.js bot that mirrors site activity — new listings, votes, uptime — into log channels on the support server. If you're a bot owner, the two things you'll actually touch are the submission form and the stats API, which has its own client wrapper in disbotlist-api.
Key Features
- Bot listing & discovery — submit a bot, browse and search by tag, vote for bots, certified-bot badges (the
certificatefield the API returns) - Server listings — a second, separate directory for Discord servers, with its own vote/bump flow driven by a dedicated "Server List" Discord bot (configured via
servers.token/servers.prefix) - Discord OAuth login — accounts run through
passport-discord; logged-in users get profile pages and role-synced perks (booster, sponsor, supporter, partner roles on the support server) - Code sharing — a hastebin-style paste tool (
hastebin-gen) gated behind Discord roles, with paste activity logged to a dedicated channel; access is tied to server-invite milestones (5/10/15/20 invites) - Public HTTP API —
GET /api/bots/:botID,GET /api/bots/check/:userID,POST /api/bots/stats,POST /api/search,POST /api/search/servers— the same API the disbotlist-api client library wraps - Companion Discord bot — logs votes, uptime, and listing activity to configured channels, plus basic admin commands (
eval,reboot,botinfo)
Setup
git clone https://github.com/chethanyadav456/DisBotlist
cd DisBotlist
npm install
cp config.txt config.js # fill in bot token, MongoDB URL, OAuth secret, role/channel IDs
npm startThe essentials config.js expects:
module.exports = {
bot: {
token: "Your Discord Bot Token",
prefix: "Prefix",
owners: ["UserID"],
mongourl: "Your MongoDB URL",
},
website: {
callback: "https://yourdomain.com/callback",
secret: "Your Discord OAuth Client Secret",
clientID: "Your Bot Client ID",
tags: ["Moderation", "Fun", "Music", "NSFW" /* ... */],
},
server: {
id: "Your Discord Support Server ID",
roles: { /* administrator, moderator, booster, sponsor, ... */ },
channels: { /* codelog, uptimelog, botlog, votes, ... */ },
},
};package.json pins "engines": { "node": "12.x" }, and a Procfile ships alongside the app — both consistent with the project's 2021 origins and a Heroku-style deploy target.
How It Works
The site itself is a fairly standard Express/EJS + MongoDB app — Mongoose models for bots, servers, and votes back the listing pages. What's more specific to a botlist is the API's auth pattern: a bot's own DisBotlist token (not a user session) is sent as the Authorization header on POST /api/bots/stats and GET /api/bots/check/:userID, so a listed bot can push its live server count and check whether a given user has voted for it — without ever touching the site's login flow. The companion discord.js bot watches the same MongoDB collections to mirror that activity (votes, submissions, uptime pings) into log channels on the support server close to real time.