├── Procfile ├── .replit ├── src ├── database │ ├── json │ │ ├── news.json │ │ └── partners.json │ ├── models │ │ ├── analytics-site.js │ │ ├── maintence.js │ │ ├── site-ban.js │ │ ├── botlist │ │ │ ├── report-apps.js │ │ │ ├── vote.js │ │ │ ├── certificate-apps.js │ │ │ └── bots.js │ │ ├── servers │ │ │ ├── user.js │ │ │ └── server.js │ │ ├── uptime.js │ │ ├── codes.js │ │ └── profile.js │ └── connect.js ├── fonts │ └── font.ttf ├── views │ ├── assets │ │ ├── img │ │ │ ├── logo.png │ │ │ ├── disbotblue.png │ │ │ ├── disbotsblue.png │ │ │ ├── undefined_back.png │ │ │ ├── disbots_wallpaper.png │ │ │ ├── undefined_avatar.png │ │ │ └── undefined_backs.png │ │ ├── js │ │ │ └── socket.js │ │ └── css │ │ │ └── admin │ │ │ └── xyz.css │ ├── botlist │ │ ├── tags.ejs │ │ ├── rewards.ejs │ │ ├── apps │ │ │ ├── report.ejs │ │ │ ├── certification.ejs │ │ │ └── certificate-app.ejs │ │ ├── promotion.ejs │ │ ├── bot-rules.ejs │ │ ├── search.ejs │ │ ├── vote.ejs │ │ ├── bots.ejs │ │ └── bots-certified.ejs │ ├── servers │ │ ├── tags.ejs │ │ └── server │ │ │ └── join.ejs │ ├── parts │ │ ├── meta.ejs │ │ └── links.ejs │ ├── admin │ │ ├── decline.ejs │ │ ├── boosted-delete.ejs │ │ ├── promoted-delete.ejs │ │ ├── certificate-delete.ejs │ │ ├── administrator │ │ │ ├── maintence.ejs │ │ │ ├── news.ejs │ │ │ ├── partners.ejs │ │ │ └── user-ban.ejs │ │ ├── static │ │ │ └── foot.ejs │ │ ├── addcode.ejs │ │ ├── report-app.ejs │ │ ├── serverapproved.ejs │ │ ├── uptimes.ejs │ │ ├── premium-server.ejs │ │ ├── premium-servers.ejs │ │ ├── certified-bots.ejs │ │ ├── approved.ejs │ │ ├── boosted-bots.ejs │ │ ├── promoted-bots.ejs │ │ ├── unapproved.ejs │ │ └── certificate-apps.ejs │ ├── codeshare │ │ └── codes │ │ │ └── codelist.ejs │ ├── error.ejs │ ├── partners.ejs │ └── news.ejs ├── commands │ ├── reboot.js │ ├── bots.js │ ├── queue.js │ ├── ping.js │ ├── eval.js │ ├── topvoted.js │ ├── botinfo.js │ └── uptime.js ├── routers │ ├── partners.js │ ├── codeshare │ │ ├── list.js │ │ ├── categories.js │ │ └── view.js │ ├── servers │ │ ├── tags.js │ │ ├── index.js │ │ ├── tag.js │ │ ├── search.js │ │ ├── server │ │ │ ├── join.js │ │ │ ├── delete.js │ │ │ ├── analytics.js │ │ │ └── view.js │ │ └── add.js │ ├── uptime │ │ ├── links.js │ │ ├── delete.js │ │ └── add.js │ ├── index.js │ ├── admin │ │ ├── uptime │ │ │ └── index.js │ │ ├── botlist │ │ │ ├── certificate │ │ │ │ ├── rdelete.js │ │ │ │ ├── decline.js │ │ │ │ └── give.js │ │ │ ├── delete.js │ │ │ ├── decline.js │ │ │ └── confirm.js │ │ ├── codeshare │ │ │ ├── edit.js │ │ │ ├── add.js │ │ │ └── index.js │ │ ├── ban.js │ │ ├── partner.js │ │ └── maintence.js │ ├── botlist │ │ ├── bot │ │ │ ├── analytics.js │ │ │ └── edit.js │ │ ├── apps │ │ │ ├── cerificate-app.js │ │ │ └── report-app.js │ │ └── vote.js │ ├── profile │ │ ├── index.js │ │ └── edit.js │ ├── mini.js │ └── api │ │ └── api.js └── servers │ ├── client.js │ └── commands │ ├── link.js │ └── profile.js ├── run.bat ├── README.md ├── LICENSE └── package.json /Procfile: -------------------------------------------------------------------------------- 1 | worker: node main.js 2 | -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | language = "nodejs" 2 | run = "npm start" -------------------------------------------------------------------------------- /src/database/json/news.json: -------------------------------------------------------------------------------- 1 | { 2 | "news": [] 3 | } -------------------------------------------------------------------------------- /src/database/json/partners.json: -------------------------------------------------------------------------------- 1 | { 2 | "partners": [] 3 | } -------------------------------------------------------------------------------- /run.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | color c 3 | title Disbots.xyz 4 | node index.js -------------------------------------------------------------------------------- /src/fonts/font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/fonts/font.ttf -------------------------------------------------------------------------------- /src/views/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/logo.png -------------------------------------------------------------------------------- /src/views/assets/img/disbotblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/disbotblue.png -------------------------------------------------------------------------------- /src/views/assets/img/disbotsblue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/disbotsblue.png -------------------------------------------------------------------------------- /src/views/assets/img/undefined_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/undefined_back.png -------------------------------------------------------------------------------- /src/views/assets/img/disbots_wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/disbots_wallpaper.png -------------------------------------------------------------------------------- /src/views/assets/img/undefined_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/undefined_avatar.png -------------------------------------------------------------------------------- /src/views/assets/img/undefined_backs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djwalkzz16/Disbots/HEAD/src/views/assets/img/undefined_backs.png -------------------------------------------------------------------------------- /src/database/models/analytics-site.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | id: String, 4 | country: Array, 5 | }); 6 | 7 | module.exports = mongoose.model("analytics", hm); -------------------------------------------------------------------------------- /src/database/models/maintence.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | server: String, 4 | reason: String, 5 | bakimmsg: String 6 | }); 7 | 8 | module.exports = mongoose.model("bakim", hm); -------------------------------------------------------------------------------- /src/database/models/site-ban.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | user: String, 4 | sebep: String, 5 | yetkili: String 6 | }); 7 | 8 | module.exports = mongoose.model("site-bans", hm); -------------------------------------------------------------------------------- /src/database/models/botlist/report-apps.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const schema = new mongoose.Schema({ 3 | botID: String, 4 | hundred: String, 5 | reason: String, 6 | }) 7 | module.exports = mongoose.model('report', schema) -------------------------------------------------------------------------------- /src/database/models/botlist/vote.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const schema = new mongoose.Schema({ 3 | user: String, 4 | bot: String, 5 | ms: Number, 6 | Date: Date 7 | }) 8 | module.exports = mongoose.model('votes', schema) -------------------------------------------------------------------------------- /src/database/models/servers/user.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | module.exports = mongoose.model("user-vote-servers", 3 | new mongoose.Schema({ 4 | id: String, 5 | date: Date, 6 | guild: String 7 | }) 8 | ); 9 | -------------------------------------------------------------------------------- /src/database/models/botlist/certificate-apps.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const schema = new mongoose.Schema({ 3 | botID: String, 4 | hundred: String, 5 | future: String, 6 | }) 7 | module.exports = mongoose.model('certificate-apps', schema) -------------------------------------------------------------------------------- /src/views/assets/js/socket.js: -------------------------------------------------------------------------------- 1 | const socket = io.connect("https://disbots.xyz"); 2 | 3 | socket.on('userCount', userCount => { 4 | let doc = document.getElementById('connectionCount'); 5 | if(doc) { 6 | doc.innerHTML = userCount; 7 | } 8 | }) 9 | -------------------------------------------------------------------------------- /src/database/models/uptime.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | userID: String, 4 | userName: String, 5 | link: String, 6 | code: String, 7 | server: String, 8 | }); 9 | 10 | module.exports = mongoose.model("uptime-links", hm); -------------------------------------------------------------------------------- /src/database/models/codes.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | code: String, 4 | codeName: String, 5 | codeCategory: String, 6 | codeDesc: String, 7 | main: { type: String, default: null }, 8 | commands: { type: String, default: null }, 9 | }); 10 | 11 | module.exports = mongoose.model("codes", hm); -------------------------------------------------------------------------------- /src/database/models/profile.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | userID: String, 4 | biography: {type: String, default: null}, 5 | coins: String, 6 | website: {type: String, default: null}, 7 | github: {type: String, default: null}, 8 | twitter: {type: String, default: null}, 9 | instagram: {type: String, default: null} 10 | }); 11 | 12 | module.exports = mongoose.model("profiles", hm); -------------------------------------------------------------------------------- /src/database/connect.js: -------------------------------------------------------------------------------- 1 | const config = require("../../config.js"); 2 | const mongoose = require("mongoose") 3 | 4 | module.exports = async () => { 5 | mongoose.connect(config.bot.mongourl, { 6 | useNewUrlParser: true, 7 | useUnifiedTopology: true, 8 | useCreateIndex: true, 9 | useFindAndModify: false, 10 | autoIndex: false 11 | }).then(() => { 12 | console.log("[disbots.xyz]: Mongoose successfully connected."); 13 | }).catch(err => console.log("[disbots.xyz]: An error occurred while connecting mongoose.", err)); 14 | } -------------------------------------------------------------------------------- /src/commands/reboot.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const fetch = require("node-fetch"); 3 | exports.run = (client, message, args) => { 4 | if(!global.config.bot.owners.includes(message.author.id)) return message.reply('could not be granted access permission.') 5 | message.channel.send("Disbots: Bot Resarting Please Wait for sometime!.").then(msg => { 6 | console.log(`BOT : Restarting...`); 7 | process.exit(1); 8 | }) 9 | }; 10 | exports.conf = { 11 | enabled: true, 12 | guildOnly: false, 13 | aliases: [] 14 | }; 15 | exports.help = { 16 | name: 'reboot', 17 | description: 'Botu Yeniden Başlatır.', 18 | usage: 'reboot' 19 | }; -------------------------------------------------------------------------------- /src/routers/partners.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const Database = require("void.db"); 3 | const path = require("path") 4 | const db = new Database(path.join(__dirname, '../database/json/partners.json')); 5 | 6 | console.log("[disbots.xyz]: Partners router loaded."); 7 | 8 | app.get("/partners", async (req,res) => { 9 | res.render("partners.ejs", { 10 | bot: global.Client, 11 | path: req.path, 12 | config: global.config, 13 | user: req.isAuthenticated() ? req.user : null, 14 | req: req, 15 | db: db, 16 | roles: global.config.server.roles 17 | }) 18 | }) 19 | 20 | module.exports = app; -------------------------------------------------------------------------------- /src/database/models/servers/server.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | let hm = new mongoose.Schema({ 4 | id: String, 5 | name: String, 6 | icon: String, 7 | ownerID: String, 8 | longDesc: String, 9 | shortDesc: String, 10 | tags: Array, 11 | link: String, 12 | status: String, 13 | premium: String, 14 | createForMe: { type: String, defaults: 'Non-Create' }, 15 | bump: { type: Date, default: null }, 16 | votes: { type: Number, default: 0 }, 17 | bumps: { type: Number, default: 0 }, 18 | analytics: Object, 19 | analytics_visitors: Number, 20 | analytics_joins: Number, 21 | country: Object, 22 | rates: Object 23 | }); 24 | 25 | module.exports = mongoose.model("servers", hm); -------------------------------------------------------------------------------- /src/routers/codeshare/list.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const codesSchema = require("../../database/models/codes.js"); 3 | 4 | console.log("[disbots.xyz]: Code Share/List router loaded."); 5 | 6 | app.get("/list/:type", global.checkAuth, async (req, res) => { 7 | 8 | res.render("codeshare/codes/codelist.ejs", { 9 | bot: global.Client, 10 | path: req.path, 11 | config: global.config, 12 | user: req.isAuthenticated() ? req.user : null, 13 | req: req, 14 | roles:global.config.server.roles, 15 | channels: global.config.server.channels, 16 | data: await codesSchema.find() 17 | }); 18 | }) 19 | 20 | 21 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/servers/tags.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz/servers]: Tags router loaded."); 7 | 8 | app.get("/tags", async (req,res) => { 9 | res.render("servers/tags.ejs", { 10 | bot: global.clientSL, 11 | path: req.path, 12 | config: global.config, 13 | user: req.isAuthenticated() ? req.user : null, 14 | req: req, 15 | roles:global.config.server.roles, 16 | channels: global.config.server.channels 17 | }) 18 | }) 19 | 20 | 21 | module.exports = app; 22 | -------------------------------------------------------------------------------- /src/routers/codeshare/categories.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const codesSchema = require("../../database/models/codes.js"); 3 | 4 | console.log("[disbots.xyz]: Code Share/Categories router loaded."); 5 | 6 | app.get("/categories", global.checkAuth, async (req, res) => { 7 | 8 | res.render("codeshare/codes/categories.ejs", { 9 | bot: global.Client, 10 | path: req.path, 11 | config: global.config, 12 | user: req.isAuthenticated() ? req.user : null, 13 | req: req, 14 | roles:global.config.server.roles, 15 | channels: global.config.server.channels, 16 | data: await codesSchema.find() 17 | }); 18 | }) 19 | 20 | 21 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/servers/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz/servers]: Index router loaded."); 7 | 8 | app.get("/", async (req,res) => { 9 | res.render("servers/index.ejs", { 10 | bot: global.clientSL, 11 | path: req.path, 12 | config: global.config, 13 | user: req.isAuthenticated() ? req.user : null, 14 | req: req, 15 | roles:global.config.server.roles, 16 | channels: global.config.server.channels, 17 | data: await db.find() 18 | }) 19 | }) 20 | 21 | 22 | module.exports = app; 23 | -------------------------------------------------------------------------------- /src/views/botlist/tags.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | 3 |
4 |
5 |

 All Tags

6 |
7 |



8 |
9 |
10 | <% config.website.tags.map(a => {%> 11 | 12 | <%= a %> 13 | 14 | <% }) %> 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 | <%- include('../parts/foot') %> 23 | -------------------------------------------------------------------------------- /src/database/models/botlist/bots.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | ownerID: String, 4 | ownerName: String, 5 | botID: String, 6 | username: String, 7 | discrim: String, 8 | avatar: String, 9 | prefix: String, 10 | longDesc: String, 11 | shortDesc: String, 12 | tags: Array, 13 | coowners: Array, 14 | status: String, 15 | website: String, 16 | github: String, 17 | support: String, 18 | invite: String, 19 | backURL: String, 20 | Date: {type: Date, default: null}, 21 | certificate: String, 22 | votes: {type: Number, default: 0}, 23 | token: String, 24 | serverCount: Number, 25 | shardCount: Number, 26 | analytics: Object, 27 | analytics_visitors: Number, 28 | analytics_invites: Number, 29 | country: Object, 30 | rates: Object, 31 | boosted: String, 32 | promoted: String, 33 | rawld: String, 34 | vanity: String, 35 | }); 36 | 37 | module.exports = mongoose.model("bots", hm); 38 | -------------------------------------------------------------------------------- /src/commands/bots.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const vcodes = require("vcodes.js"); 3 | const botdata = require("../database/models/botlist/bots.js") 4 | module.exports.run = async (client,message,args) => { 5 | let x = await botdata.find(); 6 | let bots = await x.filter(a => a.ownerID == message.author.id || a.coowners.includes(message.author.id)) 7 | const embed = new Discord.MessageEmbed() 8 | .setAuthor(message.author.tag, message.author.avatarURL({dynamic: true})) 9 | .setDescription(`**Total ${bots.length} bots found.**`) 10 | .setColor("#7289da") 11 | .addField("Bots", `${!bots ? "" : bots.map(a => "<@"+a.botID+">").join("\n")}`, true) 12 | message.channel.send(embed) 13 | }; 14 | exports.conf = { 15 | enabled: true, 16 | guildOnly: false, 17 | aliases: [], 18 | }; 19 | 20 | exports.help = { 21 | name: "bots", 22 | description: "", 23 | usage: "" 24 | }; -------------------------------------------------------------------------------- /src/views/servers/tags.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 |
3 |
4 |

 All Tags <%= config.website.servers.tags.length %>

5 | 6 |
7 |



8 |
9 |
10 | <% config.website.servers.tags.map(a => {%> 11 | 12 |  <%= a.name %> 13 | 14 | <% }) %> 15 |
16 |
17 |
18 | 19 |
20 | 21 |
22 | <%- include('../parts/foot') %> 23 | -------------------------------------------------------------------------------- /src/routers/uptime/links.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const path = require("path"); 3 | const uptimedata = require("../../database/models/uptime.js"); 4 | const roles = global.config.server.roles, 5 | channels = global.config.server.channels; 6 | const client = global.Client; 7 | const Discord = require("discord.js"); 8 | 9 | console.log("[disbots.xyz]: Uptime/Links router loaded."); 10 | 11 | app.get("/links", global.checkAuth, async (req,res) => { 12 | let uptimes = await uptimedata.find({ userID: req.user.id }) 13 | res.render("uptime/links.ejs", { 14 | bot: global.Client, 15 | path: req.path, 16 | config: global.config, 17 | user: req.isAuthenticated() ? req.user : null, 18 | req: req, 19 | uptimes: uptimes, 20 | roles: global.config.server.roles, 21 | channels: global.config.server.channels, 22 | data: uptimedata 23 | }) 24 | }) 25 | 26 | 27 | module.exports = app; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Disbots.xyz 2 | 3 | disbots 4 | 5 | > # Developers 6 | 👤 G∙MAX
7 | 👤 RoyalDj9730322
8 | 9 |

10 | > # Demo 11 | Disbots.xyz 12 |
13 | 14 | ## 💨 Run the projects 15 | 16 | [![Run on Repl.it](https://repl.it/badge/github/Disbotsxyz/Disbots)](https://replit.com/github/Disbotsxyz/Disbots) 17 | 18 | [![Remix on Glitch](https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button.svg)](https://glitch.com/edit/#!/import/github/Disbotsxyz/Disbots) 19 | 20 | [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Disbotsxyz/Disbots) 21 | 22 | > # Credit 23 | [vcodes](https://vcodes.xyz/) 24 | 25 | -------------------------------------------------------------------------------- /src/routers/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../database/models/botlist/bots.js"); 3 | const db = require("../database/models/servers/server.js"); 4 | const maintenceSchema = require('../database/models/maintence.js'); 5 | const profiledata = require("../database/models/profile.js"); 6 | 7 | console.log("[disbots.xyz]: Index router loaded."); 8 | 9 | 10 | app.get("/", async (req,res) => { 11 | if (req.isAuthenticated()) { 12 | var prodata = await profiledata.findOne({ 13 | userID: req.user.id 14 | }); 15 | } 16 | res.render("index.ejs", { 17 | bots: global.clientSL, 18 | bot: global.Client, 19 | path: req.path, 20 | config: global.config, 21 | user: req.isAuthenticated() ? req.user : null, 22 | req: req, 23 | botdata: await botsdata.find(), 24 | prodata: prodata, 25 | roles:global.config.server.roles, 26 | channels: global.config.server.channels, 27 | data: await db.find() 28 | }) 29 | }) 30 | 31 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/uptime/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const uptimeSchema = require("../../../database/models/uptime.js"); 3 | const channels = global.config.server.channels, 4 | roles = global.config.server.roles; 5 | 6 | console.log("[disbots.xyz]: Admin/Uptime/Index router loaded."); 7 | 8 | app.get("/admin/uptimes", global.checkAuth, async (req, res) => { 9 | let updata = await uptimeSchema.find(); 10 | res.render("admin/uptimes.ejs", { 11 | bot: global.Client, 12 | path: req.path, 13 | config: global.config, 14 | user: req.isAuthenticated() ? req.user : null, 15 | req: req, 16 | roles:global.config.server.roles, 17 | channels: global.config.server.channels, 18 | updata: updata, 19 | }) 20 | }); 21 | 22 | app.get("/admin/deleteuptime/:code", global.checkAuth, async (req, res) => { 23 | await uptimeSchema.deleteOne({ 24 | code: req.params.code 25 | }) 26 | return res.redirect('../admin/uptimes?error=true&message=Link deleted.'); 27 | }); 28 | 29 | module.exports = app; -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Disbots.xyz 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/routers/servers/tag.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | 4 | console.log("[disbots.xyz/server]: Tag router loaded."); 5 | 6 | app.get("/tag/:tag", async (req, res) => { 7 | let page = req.query.page || 1; 8 | let x = await db.find() 9 | let data = x.filter(a => global.clientSL.guilds.cache.get(a.id) && a.tags.includes(req.params.tag)) 10 | if (page < 1) return res.redirect(`/tag/` + req.params.tag); 11 | if (data.length <= 0) return res.redirect("/servers"); 12 | if ((page > Math.ceil(data.length / 6))) return res.redirect(`/tag/` + req.params.tag); 13 | if (Math.ceil(data.length / 6) < 1) { 14 | page = 1; 15 | }; 16 | res.render("servers/tag.ejs", { 17 | bot: global.clientSL, 18 | path: req.path, 19 | config: global.config, 20 | user: req.isAuthenticated() ? req.user : null, 21 | req: req, 22 | roles:global.config.server.roles, 23 | channels: global.config.server.channels, 24 | page: page, 25 | data: data 26 | }) 27 | }) 28 | 29 | 30 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/servers/search.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | 4 | console.log("[disbots.xyz/servers]: Search router loaded."); 5 | 6 | app.get("/search", async (req, res) => { 7 | let page = req.query.page || 1; 8 | let x = await db.find() 9 | let data = x.filter(a => global.clientSL.guilds.cache.get(a.id) && a.name.includes(req.query.q) || a.shortDesc.includes(req.query.q)) 10 | if (page < 1) return res.redirect(`/bots`); 11 | if (data.length <= 0) return res.redirect("/"); 12 | if ((page > Math.ceil(data.length / 6))) return res.redirect(`/bots`); 13 | if (Math.ceil(data.length / 6) < 1) { 14 | page = 1; 15 | }; 16 | res.render("servers/search.ejs", { 17 | bot: global.Client, 18 | path: req.path, 19 | config: global.config, 20 | user: req.isAuthenticated() ? req.user : null, 21 | req: req, 22 | roles:global.config.server.roles, 23 | channels: global.config.server.channels, 24 | data: data, 25 | page: page 26 | }) 27 | }) 28 | 29 | 30 | 31 | 32 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/botlist/bot/analytics.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz]: Botlist/Analytics router loaded."); 7 | 8 | app.get("/bot/:botID/analytics", global.checkAuth, async (req, res) => { 9 | let botdata = await botsdata.findOne({ 10 | botID: req.params.botID 11 | }); 12 | if (!botdata) return res.redirect("/error?code=404&message=You entered an invalid bot id.") 13 | if (req.user.id == botdata.ownerID || botdata.coowners.includes(req.user.id)) { 14 | res.render("botlist/bot/bot-analytics.ejs", { 15 | bot: global.Client, 16 | path: req.path, 17 | config: global.config, 18 | user: req.isAuthenticated() ? req.user : null, 19 | req: req, 20 | roles:global.config.server.roles, 21 | channels: global.config.server.channels, 22 | botdata: botdata 23 | }); 24 | } else { 25 | return res.redirect("/error?code=404&message=You entered an invalid bot id."); 26 | } 27 | }); 28 | 29 | module.exports = app; -------------------------------------------------------------------------------- /src/commands/queue.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const vcodes = require("vcodes.js"); 3 | const botdata = require("../database/models/botlist/bots.js") 4 | module.exports.run = async (client,message,args) => { 5 | if (!message.member.roles.cache.some((role) => role.name === 'Bot Tester')) return message.channel.send("Ah, I think you are not a bot tester"); 6 | let x = await botdata.find(); 7 | let bots = x.filter(x => x.status === "UnApproved") 8 | const embed = new Discord.MessageEmbed() 9 | .setAuthor(message.author.tag, message.author.avatarURL({dynamic: true})) 10 | .setDescription(`**Total ${bots.length || "0"} bots in queue.**`) 11 | .setColor("#7289da") 12 | .addField("Bots in queue", `${!bots ? "" : bots.map(a => "<@"+a.botID+"> \`("+a.botID+")\` Owner: <@"+a.ownerID+"> | [[Invite Bot]](https://discord.com/api/oauth2/authorize?client_id="+a.botID+"&permissions=0&scope=bot&guild_id=853544355184508949)").join("\n") || "there is no bots in queue"}`, true) 13 | message.channel.send(embed) 14 | }; 15 | exports.conf = { 16 | enabled: true, 17 | guildOnly: false, 18 | aliases: [], 19 | }; 20 | 21 | exports.help = { 22 | name: "queue", 23 | description: "", 24 | usage: "" 25 | }; -------------------------------------------------------------------------------- /src/views/parts/meta.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | <%- include('./links.ejs') %> 26 | 27 | -------------------------------------------------------------------------------- /src/routers/admin/botlist/certificate/rdelete.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../../database/models/botlist/bots.js"); 3 | const codesSchema = require("../../../../database/models/codes.js"); 4 | const uptimedata = require("../../../../database/models/uptime.js"); 5 | const appsdata = require("../../../../database/models/botlist/report-apps.js"); 6 | let sitedatalari = require("../../../../database/models/analytics-site.js"); 7 | 8 | console.log("[disbots.xyz]: Admin/Botlist/report Decline router loaded."); 9 | const roles = global.config.server.roles; 10 | const channels = global.config.server.channels; 11 | const client = global.Client; 12 | app.get("/admin/delete/:botID/report", global.checkAuth, async (req, res) => { 13 | let rBody = req.body; 14 | const botdata = await botsdata.findOne({ 15 | botID: req.params.botID 16 | }); 17 | client.channels.cache.get(channels.botlog).send(`<:notcheck:853262343790526495> The report applied on <@${botdata.ownerID}>'s bot has been deleted.`) 18 | await appsdata.deleteOne({ 19 | botID: req.params.botID 20 | }) 21 | return res.redirect(`/admin/report-apps?success=true&message=Report deleted.`) 22 | }); 23 | 24 | module.exports = app; -------------------------------------------------------------------------------- /src/commands/ping.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const client = new Discord.Client(); 3 | const fs = require('fs'); 4 | const vcodes = require("vcodes.js"); 5 | 6 | module.exports.run = async (client, message, args) => { 7 | let totalSeconds = (client.uptime / 1000); 8 | let days = Math.floor(totalSeconds / 86400); 9 | totalSeconds %= 86400; 10 | let hours = Math.floor(totalSeconds / 3600); 11 | totalSeconds %= 3600; 12 | let minutes = Math.floor(totalSeconds / 60); 13 | let seconds = Math.floor(totalSeconds % 60); 14 | let uptime = `**${days}** days, **${hours}** hours, **${minutes}** minutes and **${seconds}** seconds`; 15 | const embedPing = new Discord.MessageEmbed() 16 | .setAuthor(message.author.tag, message.author.avatarURL({ dynamic: true })) 17 | .setDescription("**Uptime:** " + uptime + " \n**Bot Latency:** ``" + Math.floor(Date.now() - message.createdTimestamp) + " ms``\n**API Latency:** ``" + Math.round(message.client.ws.ping) + " ms``") 18 | .setColor("#206694") 19 | await message.channel.send(embedPing) 20 | 21 | }; 22 | exports.conf = { 23 | enabled: true, 24 | guildOnly: false, 25 | aliases: [], 26 | }; 27 | 28 | exports.help = { 29 | name: "ping", 30 | description: "", 31 | usage: "" 32 | }; -------------------------------------------------------------------------------- /src/routers/servers/server/join.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz/servers]: Join router loaded."); 7 | 8 | app.get("/:guildID/join", async (req,res) => { 9 | let data = await db.findOne({ id: req.params.guildID }); 10 | if(!data) return res.redirect('/servers'); 11 | if(!client.guilds.cache.get(data.id)) return res.redirect('/servers'); 12 | let guild = client.guilds.cache.get(data.id); 13 | await db.updateOne({ 14 | id: req.params.guildID 15 | }, { 16 | $inc: { 17 | analytics_joins: 1 18 | } 19 | } 20 | ) 21 | let urlInvite = data.link; 22 | res.render("servers/server/join.ejs", { 23 | bot: global.clientSL, 24 | path: req.path, 25 | config: global.config, 26 | user: req.isAuthenticated() ? req.user : null, 27 | req: req, 28 | roles:global.config.server.roles, 29 | channels: global.config.server.channels, 30 | data: data, 31 | inviteURL: urlInvite 32 | 33 | }) 34 | }) 35 | 36 | 37 | module.exports = app; 38 | -------------------------------------------------------------------------------- /src/views/assets/css/admin/xyz.css: -------------------------------------------------------------------------------- 1 | body { 2 | background: #2c2f33!important; 3 | } 4 | .bg-dark { 5 | background: #2c2f33!important; 6 | border: none!important; 7 | } 8 | #content { 9 | background: #2c2f33!important; 10 | border: none!important; 11 | } 12 | .bg-dark-200 { 13 | background: #23272a!important; 14 | border-color: #23272a; 15 | } 16 | .collapse-item:hover { 17 | background: #2c2f33!important; 18 | color: #fff!important; 19 | } 20 | .dropdown-item:hover { 21 | background: #2c2f33!important; 22 | color: #fff!important; 23 | } 24 | footer { 25 | color: #fff!important; 26 | background: #23272a!important; 27 | } 28 | .page-header { 29 | display: none; 30 | } 31 | .table-responsive { 32 | background: #23272a!important; 33 | color: #fff!important; 34 | border-radius: 10px; 35 | } 36 | .table thead tr { 37 | vertical-align: bottom; 38 | border-bottom: #fff; 39 | } 40 | .table td, .table th { 41 | padding: .75rem; 42 | vertical-align: top; 43 | border-top: #23272a; 44 | color: #fff; 45 | } 46 | tfoot { 47 | display: none; 48 | } 49 | 50 | .page-link { 51 | display: flex; 52 | align-items: center; 53 | border-radius: 10%!important; 54 | margin: 1px; 55 | margin-top: 8px; 56 | } -------------------------------------------------------------------------------- /src/views/parts/links.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/routers/uptime/delete.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const path = require("path"); 3 | const uptimedata = require("../../database/models/uptime.js"); 4 | const roles = global.config.server.roles, 5 | channels = global.config.server.channels; 6 | const client = global.Client; 7 | const Discord = require("discord.js"); 8 | 9 | console.log("[disbots.xyz]: Uptime/Delete router loaded."); 10 | 11 | app.get("/:code/delete", global.checkAuth, async (req, res) => { 12 | const dde = await uptimedata.findOne({ 13 | code: req.params.code 14 | }); 15 | if (!dde) return res.redirect('/uptime/links?error=true&message=There is no such site in the system.') 16 | uptimedata.findOne({ 17 | 'code': req.params.code 18 | }, async function(err, docs) { 19 | if (docs.userID != req.user.id) return res.redirect('/uptime/links?error=true&message=The link you tried to delete does not belong to you.'); 20 | res.redirect('/uptime/links?success=true&message=The link has been successfully deleted from the system.'); 21 | await uptimedata.deleteOne({ 22 | code: req.params.code 23 | }); 24 | }) 25 | }) 26 | 27 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/botlist/delete.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const codesSchema = require("../../../database/models/codes.js"); 4 | const uptimedata = require("../../../database/models/uptime.js"); 5 | const appsdata = require("../../../database/models/botlist/certificate-apps.js"); 6 | let sitedatalari = require("../../../database/models/analytics-site.js"); 7 | 8 | 9 | const roles = global.config.server.roles; 10 | const channels = global.config.server.channels; 11 | const client = global.Client; 12 | 13 | console.log("[disbots.xyz]: Admin/Botlist/Delete Bot router loaded."); 14 | 15 | app.get("/admin/delete/:botID", global.checkAuth, async (req, res) => { 16 | const botdata = await botsdata.findOne({ 17 | botID: req.params.botID 18 | }) 19 | if (!botdata) return res.redirect("/error?code=404&message=You entered an invalid bot id."); 20 | let guild = client.guilds.cache.get(global.config.server.id) 21 | guild.members.cache.get(botdata.botID).roles.remove(global.config.server.roles.bot); 22 | await guild.members.cache.get(botdata.botID).kick(); 23 | await botsdata.deleteOne({ 24 | botID: req.params.botID, 25 | ownerID: botdata.ownerID 26 | }) 27 | return res.redirect(`/admin/approved?success=true&message=Bot deleted.`) 28 | }); 29 | 30 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/profile/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | const servers = require("../../database/models/servers/server.js"); 4 | const client = global.Client; 5 | 6 | console.log("[disbots.xyz]: Profile/Index router loaded."); 7 | 8 | const profiledata = require("../../database/models/profile.js"); 9 | const banSchema = require("../../database/models/site-ban.js"); 10 | app.get("/:userID", async (req, res) => { 11 | client.users.fetch(req.params.userID).then(async a => { 12 | const pdata = await profiledata.findOne({ 13 | userID: a.id 14 | }); 15 | const botdata = await botsdata.find() 16 | let banVerisi = await banSchema.findOne({user: req.params.userID }); 17 | const serverData = await servers.find() 18 | res.render("profile/profile.ejs", { 19 | bot: global.Client, 20 | path: req.path, 21 | config: global.config, 22 | user: req.isAuthenticated() ? req.user : null, 23 | req: req, 24 | botdata: await botsdata.find(), 25 | roles:global.config.server.roles, 26 | channels: global.config.server.channels, 27 | pdata: pdata, 28 | botdata: botdata, 29 | member: a, 30 | serverData: serverData, 31 | bannedCheck: banVerisi 32 | }) 33 | }); 34 | }); 35 | 36 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/codeshare/edit.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const codesSchema = require("../../../database/models/codes.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels, 5 | roles = global.config.server.roles; 6 | 7 | console.log("[disbots.xyz]: Admin/CodeShare/Edit router loaded."); 8 | 9 | app.post("/admin/editcode/:code", global.checkAuth, async (req, res) => { 10 | const rBody = req.body; 11 | let kod = req.params.code; 12 | await codesSchema.findOneAndUpdate({ 13 | code: kod 14 | }, { 15 | $set: { 16 | codeName: rBody['codename'], 17 | codeCategory: rBody['category'], 18 | codeDesc: rBody['codedesc'], 19 | main: rBody['main'], 20 | commands: rBody['commands'], 21 | } 22 | }, function(err, docs) {}) 23 | client.channels.cache.get(global.config.server.channels.codelog).send(new Discord.MessageEmbed() 24 | .setTitle("Code edited!").setColor("GREEN").setFooter(config.footer) 25 | .setDescription(`The user named **[${req.user.username}](https://disbots.xyz/user/${req.user.id})** edited the code named **${rBody['codename']}**.`) 26 | .addField("Code Link", `https://disbots.xyz/code/${kod}`, true) 27 | .addField("Code Description", rBody['codedesc'], true) 28 | .addField("Code Category", rBody['category'], true) 29 | ) 30 | res.redirect('/code/' + kod) 31 | }); 32 | 33 | module.exports = app; -------------------------------------------------------------------------------- /src/views/admin/decline.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 |
6 | 7 |
8 | 9 | 10 |
11 | 12 |
13 |
14 |












15 | 43 |
44 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/routers/servers/server/delete.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz/servers]: Join router loaded."); 7 | 8 | app.get("/:guildID/delete", global.checkAuth, async (req,res) => { 9 | let serverData = await db.findOne({ 10 | id: req.params.guildID 11 | }); 12 | if (!serverData) return res.redirect("/error?code=404&message=You entered an invalid server id."); 13 | 14 | const guild = client.guilds.cache.get(req.params.guildID); 15 | if (!guild) return res.redirect("/error?code=404&message=You entered an invalid server id."); 16 | const member = guild.members.cache.get(req.user.id); 17 | if (!member) { 18 | try { 19 | await guild.members.fetch(); 20 | member = guild.members.cache.get(req.user.id); 21 | } catch (err) { 22 | res.send({ 23 | error: true, 24 | message: `Couldn't fetch the members of ${guild.id}: ${err}` 25 | }) 26 | } 27 | } 28 | if (!member) return res.redirect("/error?code=403&message=Unauthorized."); 29 | if (!member.permissions.has("ADMINISTRATOR")) return res.redirect("/error?code=403&message=Unauthorized."); 30 | 31 | await db.deleteOne({ id: req.params.guildID }); 32 | return res.redirect('/user/'+req.user.id); 33 | }) 34 | 35 | 36 | module.exports = app; 37 | -------------------------------------------------------------------------------- /src/views/codeshare/codes/codelist.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 | 20 |


21 |
22 |
23 |

  <%= req.params.type %> Codes

24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | <% data.filter(a => a.codeCategory.toLowerCase() === req.params.type.toLowerCase()).map(a => {%> 32 | 33 | 34 | 35 | 36 | 37 | <% }); %> 38 |
Code NameCode DescriptionOperation
<%= a.codeName %><%= a.codeDesc %>View
39 |
40 | 41 | <%- include('../../parts/foot') %> 42 | -------------------------------------------------------------------------------- /src/views/admin/boosted-delete.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 |
6 | 7 | 8 |
9 | 10 | 11 |
12 | 13 |
14 |
15 |












16 | 44 |
45 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/promoted-delete.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 |
6 | 7 | 8 |
9 | 10 | 11 |
12 | 13 |
14 |
15 |












16 | 44 |
45 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/certificate-delete.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 |
6 | 7 | 8 |
9 | 10 | 11 |
12 | 13 |
14 |
15 |












16 | 44 |
45 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/routers/admin/botlist/decline.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const codesSchema = require("../../../database/models/codes.js"); 4 | const uptimedata = require("../../../database/models/uptime.js"); 5 | const appsdata = require("../../../database/models/botlist/certificate-apps.js"); 6 | let sitedatalari = require("../../../database/models/analytics-site.js"); 7 | 8 | const roles = global.config.server.roles; 9 | const channels = global.config.server.channels; 10 | const client = global.Client; 11 | 12 | console.log("[disbots.xyz]: Admin/Botlist/Decline Bot router loaded."); 13 | 14 | app.post("/admin/decline/:botID", global.checkAuth, async (req, res) => { 15 | let rBody = req.body; 16 | let botdata = await botsdata.findOne({ 17 | botID: req.params.botID 18 | }); 19 | client.users.fetch(botdata.ownerID).then(sahip => { 20 | client.channels.cache.get(global.config.server.channels.botlog).send(`<:Decline:853262344876851211> <@${botdata.ownerID}>'s bot named **${botdata.username}** has been declined.\nReason: **${rBody['reason']}** `) 21 | client.users.cache.get(botdata.ownerID).send(`<:Decline:853262344876851211> Your bot named **${botdata.username}** has been declined.\nReason: **${rBody['reason']}**\nAuthorized: **${req.user.username}**`) 22 | }) 23 | await botsdata.deleteOne({ 24 | botID: req.params.botID, 25 | ownerID: botdata.ownerID 26 | }) 27 | return res.redirect(`/admin/unapproved?success=true&message=Bot declined.`) 28 | }); 29 | 30 | module.exports = app; -------------------------------------------------------------------------------- /src/views/error.ejs: -------------------------------------------------------------------------------- 1 | <%- include('parts/head', {bot, user,path}) %> 2 | 3 | 4 | 5 | <% 6 | var url = new URL(`https://disbots.xyz/error?code=${req.query.code}&message=${req.query.message}`); 7 | var params = new URLSearchParams(url.search); 8 | %> 9 | Error <%= params.get('code')%> - DisBots 10 | 11 | 24 |
25 |



26 |
27 |
28 |
29 |
30 |
31 |

32 |
33 |
34 |

<%= params.get('code') %>

35 |

36 | <%= params.get('message') %> 37 |

38 | Go to Home 39 | Join our Discord 40 |
41 |
42 |
43 |
44 | 45 |
46 |
47 |

48 | 49 |
50 | <% if(params.get('code') == "200") {%> 51 |

You are authorized? Login

52 | <% } %> 53 |
54 | 55 | <%- include('parts/foot') %> 56 | -------------------------------------------------------------------------------- /src/routers/profile/edit.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | 4 | console.log("[disbots.xyz]: Profile/Edit router loaded."); 5 | 6 | const profiledata = require("../../database/models/profile.js"); 7 | const client = global.Client; 8 | app.get("/:userID/edit", global.checkAuth, async (req, res) => { 9 | if(req.params.userID != req.user.id) return res.redirect('/user/'+req.user.id+'/edit'); 10 | client.users.fetch(req.user.id).then(async member => { 11 | const pdata = await profiledata.findOne({ 12 | userID: member.id 13 | }); 14 | res.render("profile/profile-edit.ejs", { 15 | bot: global.Client, 16 | path: req.path, 17 | config: global.config, 18 | user: req.isAuthenticated() ? req.user : null, 19 | req: req, 20 | roles:global.config.server.roles, 21 | channels: global.config.server.channels, 22 | pdata: pdata, 23 | member: member 24 | }); 25 | }); 26 | }); 27 | app.post("/:userID/edit", global.checkAuth, async (req, res) => { 28 | let rBody = req.body; 29 | await profiledata.findOneAndUpdate({ 30 | userID: req.user.id 31 | }, { 32 | $set: { 33 | biography: rBody['biography'], 34 | website: rBody['website'], 35 | github: rBody['github'], 36 | twitter: rBody['twitter'], 37 | instagram: rBody['instagram'] 38 | } 39 | }, { 40 | upsert: true 41 | }) 42 | return res.redirect('?success=true&message=Your profile has been successfully edited.'); 43 | }); 44 | 45 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/ban.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const banSchema = require("../../database/models/site-ban.js"); 3 | const channels = global.config.server.channels, 4 | roles = global.config.server.roles; 5 | const client = global.Client; 6 | 7 | console.log("[disbots.xyz]: Admin/Ban router loaded."); 8 | 9 | app.get("/admin/userban", global.checkAuth, async (req, res) => { 10 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 11 | let bandata = await banSchema.find(); 12 | res.render("admin/administrator/user-ban.ejs", { 13 | bot: global.Client, 14 | path: req.path, 15 | config: global.config, 16 | user: req.isAuthenticated() ? req.user : null, 17 | req: req, 18 | roles:global.config.server.roles, 19 | channels: global.config.server.channels, 20 | bandata: bandata 21 | }) 22 | }); 23 | app.post("/admin/userban", global.checkAuth, async (req, res) => { 24 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 25 | new banSchema({ 26 | user: req.body.userID, 27 | sebep: req.body.reason, 28 | yetkili: req.user.id 29 | }).save() 30 | return res.redirect('../admin/userban?success=true&message=User banned.'); 31 | }); 32 | app.post("/admin/userunban", global.checkAuth, async (req, res) => { 33 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 34 | banSchema.deleteOne({ 35 | user: req.body.userID 36 | }, function(error, user) { 37 | if (error) console.log(error) 38 | }) 39 | return res.redirect('../admin/userban?success=true&message=User ban removed.'); 40 | }); 41 | 42 | module.exports = app; -------------------------------------------------------------------------------- /src/views/servers/server/join.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 | Join | <%= data.name %> | Discord Servers 3 | 4 | 5 | onlineᅠᅠᅠᅠ⚫ <%= bot.guilds.cache.get(data.id).memberCount %> members 7 | "> 8 | 9 | 10 |
11 |
12 |
13 |
14 |
15 | 16 |
17 |

Redirecting To

18 |

<%= data.name %>

19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 27 | 41 | <%- include('../../parts/foot') %> 42 | -------------------------------------------------------------------------------- /src/routers/servers/server/analytics.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz/servers]: Analytics router loaded."); 7 | 8 | app.get("/:guildID/analytics", global.checkAuth, async (req, res) => { 9 | let serverData = await db.findOne({ 10 | id: req.params.guildID 11 | }); 12 | if (!serverData) return res.redirect("/error?code=404&message=You entered an invalid server id."); 13 | 14 | const guild = client.guilds.cache.get(req.params.guildID); 15 | if (!guild) return res.redirect("/error?code=404&message=You entered an invalid server id."); 16 | const member = guild.members.cache.get(req.user.id); 17 | if (!member) { 18 | try { 19 | await guild.members.fetch(); 20 | member = guild.members.cache.get(req.user.id); 21 | } catch (err) { 22 | res.send({ 23 | error: true, 24 | message: `Couldn't fetch the members of ${guild.id}: ${err}` 25 | }) 26 | } 27 | } 28 | if (!member) return res.redirect("/error?code=403&message=Unauthorized."); 29 | if (!member.permissions.has("ADMINISTRATOR")) return res.redirect("/error?code=403&message=Unauthorized."); 30 | res.render("servers/server/analytics.ejs", { 31 | bot: global.Client, 32 | path: req.path, 33 | config: global.config, 34 | user: req.isAuthenticated() ? req.user : null, 35 | req: req, 36 | roles:global.config.server.roles, 37 | channels: global.config.server.channels, 38 | data: serverData 39 | }); 40 | }); 41 | 42 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/botlist/apps/cerificate-app.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const apps = require("../../../database/models/botlist/certificate-apps.js"); 4 | const client = global.Client; 5 | 6 | console.log("[disbots.xyz]: Botlist/Certificate Application router loaded."); 7 | 8 | app.get("/certification/apply", global.checkAuth, async (req, res) => { 9 | const userbots = await botsdata.find({ 10 | ownerID: req.user.id 11 | }) 12 | res.render("botlist/apps/certificate-app.ejs", { 13 | bot: global.Client, 14 | path: req.path, 15 | config: global.config, 16 | user: req.isAuthenticated() ? req.user : null, 17 | req: req, 18 | roles:global.config.server.roles, 19 | channels: global.config.server.channels, 20 | userbots: userbots 21 | }) 22 | }); 23 | app.post("/certification/apply", global.checkAuth, async (req, res) => { 24 | const rBody = req.body; 25 | if(botsdata.certificate === "Certified") return res.redirect('/error?code=401&message=This bot already certified.'); 26 | let findBot = await apps.findOne({ botID: rBody['bot'] }); 27 | if(findBot) return res.redirect('/error?code=401&message=This bot application already applied.') 28 | new apps({ 29 | botID: rBody['bot'], 30 | future: rBody['future'], 31 | queue: "queue", 32 | }).save(); 33 | res.redirect("/bots?success=true&message=Certificate application applied.&botID=" + rBody['bot']) 34 | let botdata = await botsdata.findOne({ 35 | botID: rBody['bot'] 36 | }) 37 | client.channels.cache.get(global.config.server.channels.botlog).send(`User **${req.user.username}** requested a certificate for the bot named **${botdata.username}**.`) 38 | }); 39 | 40 | module.exports = app; -------------------------------------------------------------------------------- /src/commands/eval.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const client = new Discord.Client(); 3 | const bot = new Discord.Client(); 4 | const { Client, Util } = require('discord.js'); 5 | exports.run = async (client, message, args) => { 6 | if(!global.config.bot.owners.includes(message.author.id)) return message.reply('could not be granted access permission.') 7 | try { 8 | var code = args.join(" "); 9 | var evaled = eval(code); 10 | 11 | if (typeof evaled !== "string") 12 | evaled = require("util").inspect(evaled); 13 | let Embed = new Discord.MessageEmbed() 14 | .addField("Code","```js\n" + code + "```") 15 | .setDescription("```js\n" + clean(evaled) + "```") 16 | if (Embed.description.length >= 2048) 17 | Embed.description = Embed.description.substr(0, 2042) + "```..."; 18 | return message.channel.send(Embed) 19 | } catch (err) { 20 | message.channel.send(`\`HATA\` \`\`\`xl\n${clean(err)}\n\`\`\``); 21 | } 22 | }; 23 | 24 | exports.conf = { 25 | enabled: true, 26 | guildOnly: false, 27 | aliases: [], 28 | permLevel: 0 29 | }; 30 | 31 | exports.help = { 32 | name: 'eval', 33 | description: 'Kod denemek için kullanılır.', 34 | usage: 'eval [kod]', 35 | category: 'owner' 36 | } 37 | 38 | const clean = text => { 39 | if (typeof(text) === "string") 40 | return text.replace(/`/g, "`" + String.fromCharCode(8203)).replace(/@/g, "@" + String.fromCharCode(8203)); 41 | else 42 | return text; 43 | } 44 | function makeToken(length) { 45 | var result = ''; 46 | var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 47 | var charactersLength = characters.length; 48 | for ( var i = 0; i < length; i++ ) { 49 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 50 | } 51 | return result; 52 | } -------------------------------------------------------------------------------- /src/commands/topvoted.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const vcodes = require('vcodes.js'); 3 | const botdata = require('../database/models/botlist/bots.js'); 4 | const serverdata = require('../database/models/servers/server.js'); 5 | const config = require('../../config.js'); 6 | const serverid = config.server.id; 7 | const roles = config.server.roles; 8 | const channels = config.server.channels; 9 | const owner = config.bot.owners; 10 | 11 | module.exports.run = async (client, message, args) => { 12 | let guild = client.guilds.cache.get(config.server.id) 13 | if (guild.members.cache.has(message.author.id)) { 14 | const botsdata = await botdata.find(); 15 | var botsdata1 = botsdata 16 | .sort((a, b) => b.votes - a.votes) 17 | .slice(0, 6) 18 | .map( 19 | a => `${a.username} **[ \`${a.votes}\` Votes ]**` 20 | ) 21 | .join('\n'); 22 | 23 | const serversdata = await serverdata.find(); 24 | var serversdata1 = serversdata 25 | .sort((a, b) => b.votes - a.votes) 26 | .slice(0, 6) 27 | .map( 28 | a => `${a.name} | ${a.id} **[ \`${a.votes}\` Votes ]**` 29 | ) 30 | .join('\n'); 31 | 32 | if (!serversdata1) { 33 | var serversdata1 = 'no servers'; 34 | } 35 | if (!botsdata1) { 36 | var botsdata1 = 'no bots'; 37 | } 38 | 39 | const embed = new Discord.MessageEmbed() 40 | .setAuthor(message.author.tag, message.author.avatarURL({ dynamic: true })) 41 | .setColor("#7289da") 42 | .setDescription(`**Top 6 voted bots of the week!**\n${botsdata1}\n\n**Top 6 voted servers of the week!**\n${serversdata1}`) 43 | message.channel.send(embed) 44 | } 45 | } 46 | 47 | exports.conf = { 48 | enabled: true, 49 | guildOnly: false, 50 | aliases: [], 51 | }; 52 | 53 | exports.help = { 54 | name: "topvoted", 55 | description: "Get top voted bots/servers", 56 | usage: "" 57 | }; -------------------------------------------------------------------------------- /src/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const client = new Discord.Client(); 3 | const bots = require("../database/models/botlist/bots.js"); 4 | module.exports.run = async (client,message,args) => { 5 | if(!args[0]) return message.channel.send("Error: Please write bot id."); 6 | let b = await bots.findOne({ botID: args[0] }); 7 | if(!b) return message.channel.send("Invalid bot id.") 8 | let website = b.website ? " | [Website]("+b.website+")" : ""; 9 | let github = b.github ? " | [Github]("+b.github+")" : ""; 10 | let discord = b.support ? " | [Support Server]("+b.support+")" : ""; 11 | let coowner; 12 | if(!b.coowners.length <= 0) { 13 | coowner = b.coowners.map(a => "<@"+a+">").join("\n"); 14 | } else { 15 | coowner = ""; 16 | } 17 | const embed = new Discord.MessageEmbed() 18 | .setThumbnail(b.avatar) 19 | .setAuthor(b.username+"#"+b.discrim, b.avatar) 20 | .setDescription("**[Vote for the bot named "+b.username+"#"+b.discrim+" in Disbots.](https://disbots.xyz/bot/"+b.botID+"/vote)**") 21 | .addField("ID", b.botID, true) 22 | .addField("Username", b.username, true) 23 | .addField("Discriminator", b.discrim, true) 24 | .addField("Votes", b.votes, true) 25 | .addField("Certificate", b.certificate, true) 26 | .addField("Short Description", b.shortDesc, true) 27 | .setColor("#7289da") 28 | .addField("Server Count", `${b.serverCount || "N/A"}`, true) 29 | .addField("Owner(s)", `<@${b.ownerID}>\n${coowner.replace("<@>", "")}`, true) 30 | .addField("Links", `[Invite](https://discord.com/oauth2/authorize?client_id=${b.botID}&scope=bot&permissions=8)${website}${discord}${github}`, true) 31 | message.channel.send(embed) 32 | }; 33 | exports.conf = { 34 | enabled: true, 35 | guildOnly: false, 36 | aliases: [], 37 | }; 38 | 39 | exports.help = { 40 | name: "botinfo", 41 | description: "", 42 | usage: "" 43 | }; -------------------------------------------------------------------------------- /src/commands/uptime.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const vcodes = require("vcodes.js"); 3 | const ms = require("parse-ms"); 4 | const db = require("quick.db"); 5 | const botsdata = require("../database/models/botlist/bots.js") 6 | const config = require("../../config.js"); 7 | module.exports.run = async (client, message, args) => { 8 | var bot = message.mentions.users.first() 9 | if(bot) 10 | { 11 | var bot = bot; 12 | } else { 13 | var bot = args[0]; 14 | var bot = client.users.cache.get(bot) 15 | } 16 | if(!bot) 17 | { 18 | return message.channel.send("You have given an invalid bot id or mention") 19 | } 20 | 21 | 22 | const votes = require("../database/models/botlist/vote.js"); 23 | let botdata = await botsdata.findOne({ botID: bot.id }); 24 | if(!botdata) 25 | { 26 | return message.channel.send("Not a bot"); 27 | } 28 | var checking = db.fetch(`rate_${bot.id}`); 29 | if(!checking) 30 | { 31 | var checking = "100"; 32 | } 33 | var check = db.fetch(`presence_${bot.id}`); 34 | if(!check) 35 | { 36 | var check = "Online"; 37 | } 38 | let time = db.fetch(`timefr_${bot.id}`); 39 | var timeleft = await ms(Date.now() - time); 40 | var days = timeleft.days; 41 | var hour = timeleft.hours; 42 | var minutes = timeleft.minutes; 43 | var seconds = timeleft.seconds; 44 | var ochecks = db.fetch(`offlinechecks_${bot.id}`); 45 | let checks = db.fetch(`checks_${bot.id}`); 46 | 47 | 48 | message.channel.send(`Uptime - ${checking}% Checks - ${ochecks || 0}/${checks || 0} \n${check} Time - ${days}d ${hour}h ${minutes}m ${seconds}s`) 49 | } 50 | 51 | exports.conf = { 52 | enabled: true, 53 | guildOnly: false, 54 | aliases: [], 55 | }; 56 | 57 | exports.help = { 58 | name: "uptime", 59 | description: "uptime", 60 | usage: "" 61 | }; -------------------------------------------------------------------------------- /src/routers/botlist/apps/report-app.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const apps = require("../../../database/models/botlist/report-apps.js"); 4 | const client = global.Client; 5 | 6 | console.log("[disbots.xyz]: Botlist/Report router loaded."); 7 | 8 | app.get("/:botID/report", global.checkAuth, async (req, res) => { 9 | const userbots = await botsdata.find({ 10 | botID: req.params.botID 11 | }) 12 | const checkreporter = await apps.find({ 13 | reporterID: req.user.id 14 | }) 15 | if (!userbots) return res.redirect('/error?code=401&message=There is no bot on our website with this id.'); 16 | if (!checkreporter) return res.redirect('/error?code=401&message=You have already reported this bot.'); 17 | res.render("botlist/apps/report.ejs", { 18 | bot: global.Client, 19 | path: req.path, 20 | config: global.config, 21 | user: req.isAuthenticated() ? req.user : null, 22 | req: req, 23 | roles:global.config.server.roles, 24 | channels: global.config.server.channels, 25 | userbots: userbots 26 | }) 27 | }); 28 | app.post("/:botID/report", global.checkAuth, async (req, res) => { 29 | const rBody = req.body; 30 | let findBot = await apps.findOne({ botID: req.params.botID }); 31 | new apps({ 32 | reporterID : req.user.id, 33 | botID: req.params.botID, 34 | reason: rBody['reason'], 35 | report: "applied", 36 | }).save(); 37 | res.redirect("/bots?success=true&message=You have reported the bot.&botID=" + req.params.botID) 38 | let botdata = await botsdata.findOne({ 39 | botID: req.params.botID 40 | }) 41 | client.channels.cache.get(global.config.server.channels.botlog).send(`User **${req.user.username}** has reported <@${req.params.botID}> on website.`) 42 | }); 43 | 44 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/botlist/certificate/decline.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../../database/models/botlist/bots.js"); 3 | const codesSchema = require("../../../../database/models/codes.js"); 4 | const uptimedata = require("../../../../database/models/uptime.js"); 5 | const appsdata = require("../../../../database/models/botlist/certificate-apps.js"); 6 | let sitedatalari = require("../../../../database/models/analytics-site.js"); 7 | 8 | console.log("[disbots.xyz]: Admin/Botlist/Certificate Decline router loaded."); 9 | const roles = global.config.server.roles; 10 | const channels = global.config.server.channels; 11 | const client = global.Client; 12 | app.post("/admin/certificate/delete/:botID", global.checkAuth, async (req, res) => { 13 | let rBody = req.body; 14 | await botsdata.findOneAndUpdate({ 15 | botID: req.params.botID 16 | }, { 17 | $set: { 18 | certificate: "None", 19 | } 20 | }, function(err, docs) {}) 21 | let botdata = await botsdata.findOne({ 22 | botID: req.params.botID 23 | }); 24 | client.users.fetch(botdata.botID).then(bota => { 25 | client.channels.cache.get(channels.botlog).send(`<:notcheck:853262343790526495> <@${botdata.ownerID}>'s bot named **${bota.tag}** has not been granted a certificate.`) 26 | client.users.cache.get(botdata.ownerID).send(`<:notcheck:853262343790526495> Your bot named **${bota.tag}** certificate application has been declined.\nReason: **${rBody['reason']}**`) 27 | }); 28 | await appsdata.deleteOne({ 29 | botID: req.params.botID 30 | }) 31 | let guild = client.guilds.cache.get(config.server.id) 32 | guild.members.cache.get(botdata.botID).roles.remove(roles.botlist.certified_bot); 33 | guild.members.cache.get(botdata.ownerID).roles.remove(roles.botlist.certified_developer); 34 | return res.redirect(`/admin/certificate-apps?success=true&message=Certificate deleted.`) 35 | }); 36 | 37 | module.exports = app; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "disbots", 3 | "version": "1.3.1", 4 | "description": "disbots.xyz", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js" 8 | }, 9 | "dependencies": { 10 | "axios": "^0.21.1", 11 | "body-parser": "^1.19.0", 12 | "canvas": "^2.8.0", 13 | "chalk": "^4.1.0", 14 | "cheerio": "^1.0.0-rc.5", 15 | "child_process": "^1.0.2", 16 | "cookie-parser": "^1.4.5", 17 | "cron": "^1.8.2", 18 | "database": "0.0.2", 19 | "disbots-xyz": "^1.0.0", 20 | "discord-buttons": "^3.2.1", 21 | "discord-canvas": "^1.4.1", 22 | "discord.js": "^12.5.1", 23 | "ejs": "^3.1.6", 24 | "express": "^4.17.1", 25 | "express-minify-html": "^0.12.0", 26 | "express-minify-html-terser": "^1.0.2", 27 | "express-rate-limit": "^5.2.6", 28 | "express-session": "^1.17.1", 29 | "fs": "^0.0.2", 30 | "geoip-lite": "^1.4.2", 31 | "hastebin-gen": "^2.0.5", 32 | "helmet": "^4.4.1", 33 | "http": "0.0.1-security", 34 | "ipware": "^2.0.0", 35 | "jimp": "^0.16.1", 36 | "jquery": "^3.6.0", 37 | "level-session-store": "^2.2.0", 38 | "marked": "^2.0.0", 39 | "memorystore": "^1.6.4", 40 | "moment": "^2.29.1", 41 | "moment-duration-format": "^2.3.2", 42 | "mongoose": "^5.11.17", 43 | "node-fetch": "^2.6.1", 44 | "parse-ms": "^2.1.0", 45 | "passport": "^0.4.1", 46 | "passport-discord": "^0.1.4", 47 | "path": "^0.12.7", 48 | "quick.db": "^7.1.3", 49 | "rate-limit-mongo": "^2.3.1", 50 | "referrer-policy": "^1.2.0", 51 | "request": "^2.88.2", 52 | "socket.io": "^4.0.1", 53 | "sweetalert": "^2.1.2", 54 | "sweetalert2": "10.15.6", 55 | "vcodes.js": "^1.0.5", 56 | "void.db": "^2.0.4", 57 | "void.nsfw": "^1.0.8-beta", 58 | "webhook-discord": "^3.7.7" 59 | }, 60 | "engines": { 61 | "node": "12.x" 62 | }, 63 | "repository": { 64 | "url": "" 65 | }, 66 | "keywords": [ 67 | "disbots.xyz" 68 | ], 69 | "author": "Disbots Team" 70 | } 71 | -------------------------------------------------------------------------------- /src/views/botlist/rewards.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | 3 | Disbots | Discord Bots 4 | 9 |
10 |
11 |
12 |
13 |

14 |
15 |

Disbots Coins 16 |

17 |
18 |

19 | How to get Disbots Coins? 20 |
You can get Disbots Coins by been active in our server. 21 |
What is the use of Disbots Coins? 22 |
You can promote/boost your boost using Disbots Coins. 23 |
You can also promote your server to Premium Server Section! 24 |

25 |
26 |
27 |

Rewards 28 |

29 |
30 |

31 | 50 Coins 32 | 33 | 34 |
You can You can boost/promote your bot for 1 hour. 35 |
100 Coins 36 | 37 | 38 |
You can You can boost/promote your server/bot for 1 day. 39 |
500 Coins 40 | 41 | 42 |
You can You can boost/promote your server/bot for 1 week. 43 |

44 |
45 |
46 |
47 |
48 |
49 | 50 |
51 |
52 | 53 | <%- include('../parts/foot') %> -------------------------------------------------------------------------------- /src/routers/admin/botlist/certificate/give.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../../database/models/botlist/bots.js"); 3 | const codesSchema = require("../../../../database/models/codes.js"); 4 | const uptimedata = require("../../../../database/models/uptime.js"); 5 | const appsdata = require("../../../../database/models/botlist/certificate-apps.js"); 6 | let sitedatalari = require("../../../../database/models/analytics-site.js"); 7 | const client = global.Client; 8 | 9 | console.log("[disbots.xyz]: Admin/Botlist/Certificate Give router loaded."); 10 | 11 | app.get("/admin/certificate/give/:botID", global.checkAuth, async (req, res) => { 12 | await botsdata.findOneAndUpdate({ 13 | botID: req.params.botID 14 | }, { 15 | $set: { 16 | certificate: "Certified", 17 | } 18 | }, function(err, docs) { }) 19 | let botdata = await botsdata.findOne({ 20 | botID: req.params.botID 21 | }); 22 | 23 | client.users.fetch(botdata.botID).then(bota => { 24 | client.channels.cache.get(global.config.server.channels.botlog).send(`<:check:853262343949254696> <@${botdata.ownerID}>'s bot named **${bota.tag}** has been granted a certificate.`) 25 | client.users.cache.get(botdata.ownerID).send(`<:check:853262343949254696> Your bot named **${bota.tag}** has been certified.`) 26 | }); 27 | await appsdata.deleteOne({ 28 | botID: req.params.botID 29 | }) 30 | let guild = client.guilds.cache.get(global.config.server.id) 31 | guild.members.cache.get(botdata.botID).roles.add(global.config.server.roles.botlist.certified_bot); 32 | guild.members.cache.get(botdata.ownerID).roles.add(global.config.server.roles.botlist.certified_developer); 33 | if (botdata.coowners) { 34 | botdata.coowners.map(a => { 35 | if (guild.members.cache.get(a)) { 36 | guild.members.cache.get(a).roles.add(global.config.server.roles.botlist.certified_developer); 37 | } 38 | }) 39 | } 40 | return res.redirect(`/admin/certificate-apps?success=true&message=Certificate gived.&botID=${req.params.botID}`) 41 | }); 42 | 43 | module.exports = app; -------------------------------------------------------------------------------- /src/views/admin/administrator/maintence.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 | 6 |
7 |
8 |

Maintence Mode

9 |
10 | 11 |
12 |
13 | 14 | 15 |
16 |
17 | 18 | 19 |
20 |
21 | 22 | 23 |
24 |
25 |
26 | 27 |












28 | 29 | 57 | <%- include('../static/foot.ejs', { bot,user,path}) %> 58 |
-------------------------------------------------------------------------------- /src/routers/admin/codeshare/add.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const codesSchema = require("../../../database/models/codes.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels, 5 | roles = global.config.server.roles; 6 | 7 | console.log("[disbots.xyz]: Admin/CodeShare/Add router loaded."); 8 | 9 | app.post("/admin/addcode", global.checkAuth, async (req, res) => { 10 | const rBody = req.body; 11 | let kod = makeid(36); 12 | await new codesSchema({ 13 | code: kod, 14 | codeName: rBody['codename'], 15 | codeCategory: rBody['category'], 16 | codeDesc: rBody['codedesc'], 17 | }).save() 18 | if (rBody['main']) { 19 | await codesSchema.updateOne({ 20 | code: kod 21 | }, { 22 | $set: { 23 | main: req.body.main 24 | } 25 | }); 26 | } 27 | if (rBody['commands']) { 28 | await codesSchema.updateOne({ 29 | code: kod 30 | }, { 31 | $set: { 32 | commands: req.body.commands 33 | } 34 | }); 35 | } 36 | client.channels.cache.get(global.config.server.channels.codelog).send(new Discord.MessageEmbed() 37 | .setTitle("New code added!").setColor("GREEN").setFooter(config.footer) 38 | .setDescription(`The user named **[${req.user.username}](https://disbots.xyz/user/${req.user.id})** added the code named **${rBody['codename']}** to the system.`) 39 | .addField("Code Link", `https://disbots.xyz/code/${kod}`, true) 40 | .addField("Code Description", rBody['codedesc'], true) 41 | .addField("Code Category", rBody['category'], true) 42 | ) 43 | res.redirect('/code/' + kod) 44 | }); 45 | function makeid(length) { 46 | var result = ''; 47 | var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 48 | var charactersLength = characters.length; 49 | for (var i = 0; i < length; i++) { 50 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 51 | } 52 | return result; 53 | } 54 | 55 | module.exports = app; 56 | -------------------------------------------------------------------------------- /src/routers/admin/botlist/confirm.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const codesSchema = require("../../../database/models/codes.js"); 4 | const uptimedata = require("../../../database/models/uptime.js"); 5 | const appsdata = require("../../../database/models/botlist/certificate-apps.js"); 6 | let sitedatalari = require("../../../database/models/analytics-site.js"); 7 | 8 | const roles = global.config.server.roles; 9 | const channels = global.config.server.channels; 10 | const client = global.Client; 11 | 12 | console.log("[disbots.xyz]: Admin/Botlist/Confirm Bot router loaded."); 13 | 14 | app.get("/admin/confirm/:botID", global.checkAuth, async (req, res) => { 15 | const botdata = await botsdata.findOne({ 16 | botID: req.params.botID 17 | }) 18 | if (!botdata) return res.redirect("/error?code=404&message=You entered an invalid bot id."); 19 | await botsdata.findOneAndUpdate({ 20 | botID: req.params.botID 21 | }, { 22 | $set: { 23 | status: "Approved", 24 | Date: Date.now(), 25 | } 26 | }, function(err, docs) {}) 27 | client.users.fetch(req.params.botID).then(bota => { 28 | client.channels.cache.get(global.config.server.channels.botlog).send(`<:Approved:853262344636989450> <@${botdata.ownerID}>'s bot named **${bota.tag}** has been approved by <@${req.user.id}>.`) 29 | client.users.cache.get(botdata.ownerID).send(`<:Approved:853262344636989450> Your bot named **${bota.tag}** has been approved by <@${req.user.id}>.`) 30 | }); 31 | let guild = client.guilds.cache.get(config.server.id) 32 | guild.members.cache.get(botdata.botID).roles.add(global.config.server.roles.botlist.bot); 33 | guild.members.cache.get(botdata.ownerID).roles.add(global.config.server.roles.botlist.developer); 34 | if (botdata.coowners) { 35 | botdata.coowners.map(a => { 36 | guild.members.cache.get(a).roles.add(global.config.server.roles.botlist.developer); 37 | }) 38 | } 39 | return res.redirect(`/admin/unapproved?success=true&message=Bot approved.`) 40 | }); 41 | 42 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/codeshare/index.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const codesSchema = require("../../../database/models/codes.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels, 5 | roles = global.config.server.roles; 6 | 7 | console.log("[disbots.xyz]: Admin/CodeShare/Index router loaded."); 8 | 9 | app.get("/admin/codes", global.checkAuth, async (req, res) => { 10 | let koddata = await codesSchema.find(); 11 | res.render("admin/codes.ejs", { 12 | bot: global.Client, 13 | path: req.path, 14 | config: global.config, 15 | user: req.isAuthenticated() ? req.user : null, 16 | req: req, 17 | roles:global.config.server.roles, 18 | channels: global.config.server.channels, 19 | koddata: koddata, 20 | }) 21 | }); 22 | app.get("/admin/addcode", global.checkAuth, async (req, res) => { 23 | res.render("admin/addcode.ejs", { 24 | bot: global.Client, 25 | path: req.path, 26 | config: global.config, 27 | user: req.isAuthenticated() ? req.user : null, 28 | req: req, 29 | roles:global.config.server.roles, 30 | channels: global.config.server.channels 31 | }) 32 | }); 33 | app.get("/admin/editcode/:code", global.checkAuth, async (req, res) => { 34 | let kod = req.params.code; 35 | let koddata = await codesSchema.findOne({ 36 | code: kod 37 | }) 38 | if (!koddata) return res.redirect('/codes?error=true&message=You entered an invalid code.') 39 | res.render("admin/editcode.ejs", { 40 | bot: global.Client, 41 | path: req.path, 42 | config: global.config, 43 | user: req.isAuthenticated() ? req.user : null, 44 | req: req, 45 | roles:global.config.server.roles, 46 | channels: global.config.server.channels, 47 | koddata: koddata, 48 | }) 49 | }); 50 | app.get("/admin/deletecode/:code", global.checkAuth, async (req, res) => { 51 | await codesSchema.deleteOne({ 52 | code: req.params.code 53 | }) 54 | return res.redirect('/admin/codes?success=true&message=Code deleted.'); 55 | }); 56 | 57 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/partner.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const channels = global.config.server.channels, 3 | roles = global.config.server.roles; 4 | const client = global.Client; 5 | const path = require("path"); 6 | 7 | console.log("[disbots.xyz]: Admin/Partner router loaded."); 8 | function createID(length) { 9 | var result = ''; 10 | var characters = '123456789'; 11 | var charactersLength = characters.length; 12 | for (var i = 0; i < length; i++) { 13 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 14 | } 15 | return result; 16 | } 17 | app.get("/admin/partners", global.checkAuth, async (req, res) => { 18 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 19 | const Database = require("void.db"); 20 | const db = new Database(path.join(__dirname, '../../database/json/partners.json')); 21 | res.render("admin/administrator/partners.ejs", { 22 | bot: global.Client, 23 | path: req.path, 24 | config: global.config, 25 | user: req.isAuthenticated() ? req.user : null, 26 | req: req, 27 | roles:global.config.server.roles, 28 | channels: global.config.server.channels, 29 | db: db 30 | }) 31 | }); 32 | app.post("/admin/partners", global.checkAuth, async (req, res) => { 33 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 34 | const Database = require("void.db"); 35 | const db = new Database(path.join(__dirname, '../../database/json/partners.json')); 36 | db.push(`partners`, { 37 | code: createID(12), 38 | icon: req.body.icon, 39 | ownerID: req.body.ownerID, 40 | serverName: req.body.serverName, 41 | website: req.body.Website, 42 | background: req.body.background, 43 | description: req.body.partnerDesc 44 | }) 45 | let x = client.guilds.cache.get(global.config.server.id).members.cache.get(req.body.ownerID) 46 | if (x) { 47 | x.roles.add(global.config.server.roles.profile.partnerRole) 48 | } 49 | return res.redirect('/admin/partners?success=true&message=Partner added.') 50 | }); 51 | 52 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/mini.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../database/models/botlist/bots.js"); 3 | 4 | console.log("[disbots.xyz]: Mini pages router loaded."); 5 | 6 | app.get("/error", async (req,res) => { 7 | res.render("error.ejs", { 8 | bot: global.Client, 9 | path: req.path, 10 | config: global.config, 11 | user: req.isAuthenticated() ? req.user : null, 12 | req: req, 13 | roles:global.config.server.roles, 14 | channels: global.config.server.channels 15 | }) 16 | }) 17 | 18 | app.get("/bot-rules", async (req,res) => { 19 | res.render("botlist/bot-rules.ejs", { 20 | bot: global.Client, 21 | path: req.path, 22 | config: global.config, 23 | user: req.isAuthenticated() ? req.user : null, 24 | req: req, 25 | roles:global.config.server.roles, 26 | channels: global.config.server.channels 27 | }) 28 | }) 29 | 30 | app.get("/dc", async (req,res) => { 31 | res.redirect(global.config.server.invite) 32 | }) 33 | app.get("/vanity/:username", async (req,res) => { 34 | let botdata = await botsdata.findOne({ 35 | vanity: req.params.username 36 | }); 37 | res.redirect('https://disbots.xyz/bot/'+botdata.botID) 38 | }) 39 | app.get("/dsl", async (req,res) => { 40 | res.redirect(global.config.server.dblinvite) 41 | }) 42 | app.get("/discord", async (req,res) => { 43 | res.redirect(global.config.server.dblinvite) 44 | }) 45 | 46 | app.get("/robots.txt", function(req, res) { 47 | res.set('Content-Type', 'text/plain'); 48 | res.send(`Sitemap: https://disbots.xyz/sitemap.xml`); 49 | }); 50 | 51 | app.get("/sitemap.xml", async function(req, res) { 52 | let link = "https://disbots.xyz/"; 53 | let botdataforxml = await botsdata.find() 54 | botdataforxml.forEach(bot => { 55 | link += "\nhttps://disbots.xyz/bot/" + bot.botID + ""; 56 | }) 57 | res.set('Content-Type', 'text/xml'); 58 | res.send(`${link}`); 59 | }); 60 | 61 | module.exports = app; -------------------------------------------------------------------------------- /src/views/botlist/apps/report.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 |

3 |
4 |

5 |
6 |
7 | 8 |
9 |
10 |

11 |
12 |
13 |
14 | 16 |
17 | 21 |
22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 |



30 | 31 |
32 |
33 |
34 |

35 | 63 | <%- include('../../parts/foot') %> 64 | -------------------------------------------------------------------------------- /src/views/admin/static/foot.ejs: -------------------------------------------------------------------------------- 1 |
2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 39 | 44 | 45 | -------------------------------------------------------------------------------- /src/views/admin/addcode.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 | 6 | 7 |
8 | 9 | 10 |
11 |
12 | 13 | 14 |
15 |
16 | 17 | 18 |
19 |
20 | 21 | 31 |
32 |
33 |
34 | 35 | 36 |
37 |
38 | 39 | 40 |
41 | 42 |
43 |
44 |
45 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/botlist/promotion.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | 3 | Disbots | Discord Bots 4 | 9 |
10 |
11 |
12 |
13 |

14 |
15 |

Promotion Packages 16 |

17 |
18 |

19 | Package 1 20 | 5$ - (lifetime) 21 |
Your bot will be on Promoted Bots Page. 22 |
Package 2 10$ - (lifetime) 23 |
Your bot will be on Promoted Bots Page. 24 |
Your server will be on Premium Servers Page. 25 |
Will be added on Partners Page. 26 |

27 |
28 |
29 |
Promotion Benefits 30 |
31 |
32 |

33 |
For bots 34 |
A special role on our Discord server to let people know that it's Promoted. 35 |
A special badge( 36 | 37 | ) on your bot card to let people know that it's Promoted. 38 |

For Promoted users 39 |
A special role on our Discord server to let people know that you have Promoted. 40 |
A special badge( 41 | ) on your profile to let people know that you have Promoted. 42 |
A special role on our Discord server to let people know that you have Premium. 43 |
A special badge( 44 | ) on your profile to let people know that you have Premium. 45 |

46 |
47 |
48 |
49 |
50 |
51 | 52 |
53 |
54 | 55 | <%- include('../parts/foot') %> 56 | -------------------------------------------------------------------------------- /src/views/admin/administrator/news.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 |
6 | 7 |
8 |
9 | 10 | 11 |
12 |
13 | 14 | 15 |
16 |
17 | 18 | 19 |
20 |
21 | 22 |
23 | 24 |
25 | 26 | 27 |












28 | 29 | 57 | <%- include('../static/foot.ejs') %> 58 |
-------------------------------------------------------------------------------- /src/views/partners.ejs: -------------------------------------------------------------------------------- 1 | <%- include('parts/head', {bot, user, path}) %> 2 | 3 | 4 | 13 |
14 |



15 |

 Partners

16 |

Join our discord server to partner with us.

17 |
18 | <% db.get(`partners`).map(a => { %> 19 |
20 |
21 | 39 |
40 |
41 | <% }) %> 42 |
43 |
44 | <%- include('parts/foot') %> -------------------------------------------------------------------------------- /src/routers/uptime/add.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const path = require("path"); 3 | const uptimedata = require("../../database/models/uptime.js"); 4 | const roles = global.config.server.roles, 5 | channels = global.config.server.channels; 6 | const client = global.Client; 7 | const Discord = require("discord.js"); 8 | 9 | console.log("[disbots.xyz]: Uptime/Add router loaded."); 10 | 11 | app.post("/add", global.checkAuth, async (req, res) => { 12 | const rBody = req.body; 13 | if (!rBody['link']) { 14 | res.send({ error: true, message: "Write a any link." }); 15 | } else { 16 | if (!rBody['link'].match('https')) return res.send({ error: true, message: "You must enter a valid link." }) 17 | const updcode = createID(24); 18 | const dde = await uptimedata.findOne({ 19 | link: rBody['link'] 20 | }); 21 | const dd = await uptimedata.find({ 22 | userID: req.user.id 23 | }); 24 | if (dd.length > 9) res.send({ error: true, message: "Your uptime limit has reached." }) 25 | 26 | if (dde) return res.send({ error: true, message: "This link already exists in the system." }); 27 | client.users.fetch(req.user.id).then(a => { 28 | client.channels.cache.get(channels.uptimelog).send(new Discord.MessageEmbed() 29 | .setAuthor(a.username, a.avatarURL({ 30 | dynamic: true 31 | })) 32 | .setDescription("New link added uptime system.") 33 | .setThumbnail(client.user.avatarURL) 34 | .setColor("GREEN") 35 | .addField("User;", `${a.tag} \`(${a.id})\``, true) 36 | .addField("Uptime Limit;", `${dd.length+1}/10`, true) 37 | ) 38 | new uptimedata({ 39 | server: config.serverID, 40 | userName: a.username, 41 | userID: req.user.id, 42 | link: rBody['link'], 43 | code: updcode 44 | }).save(); 45 | }) 46 | res.send({ success: true, message:"Link successfuly added." }); 47 | } 48 | }) 49 | 50 | function createID(length) { 51 | var result = ''; 52 | var characters = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 53 | var charactersLength = characters.length; 54 | for (var i = 0; i < length; i++) { 55 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 56 | } 57 | return result; 58 | } 59 | module.exports = app; -------------------------------------------------------------------------------- /src/servers/client.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const { Client, Collection } = require("discord.js"); 3 | const serverClient = global.clientSL; 4 | const config = global.config; 5 | const fs = require("fs"); 6 | const { createCanvas } = require('canvas') 7 | const { MessageButton } = require("discord-buttons"); 8 | 9 | require('discord-buttons')(serverClient); 10 | serverClient.on('clickButton', async (button) => { 11 | button.defer(true); 12 | }); 13 | 14 | require('events').EventEmitter.prototype._maxListeners = 100; 15 | serverClient.commands = new Discord.Collection(); 16 | serverClient.aliases = new Discord.Collection(); 17 | fs.readdir("./src/servers/commands/", (err, files) => { 18 | if (err) console.error(err); 19 | console.log(`[disbots.xyz/servers]: ${files.length} command loaded.`); 20 | files.forEach(async f => { 21 | let props = require(`./commands/${f}`); 22 | serverClient.commands.set(props.help.name, props); 23 | props.conf.aliases.forEach(alias => { 24 | serverClient.aliases.set(alias, props.help.name); 25 | }); 26 | }); 27 | }); 28 | let serverPrefix = config.bot.servers.prefix; 29 | serverClient.on('message', async message => { 30 | if (message.author.bot) return; 31 | if (message.channel.type === 'dm') return; 32 | if (message.content.startsWith(serverPrefix)) { 33 | let command = message.content.split(' ')[0].slice(serverPrefix.length); 34 | let params = message.content.split(' ').slice(1); 35 | let cmd 36 | if (serverClient.commands.has(command)) { 37 | cmd = serverClient.commands.get(command); 38 | } else if (serverClient.aliases.has(command)) { 39 | cmd = serverClient.commands.get(serverClient.aliases.get(command)); 40 | } 41 | if(cmd) cmd.run(serverClient, message, params); 42 | if(!cmd) return; 43 | } 44 | }) 45 | 46 | 47 | serverClient.on('ready',async () => { 48 | console.log("[disbots.xyz/servers]: Bot successfully connected as "+serverClient.user.tag+"."); 49 | let serversdata = require("../../src/database/models/servers/server.js"); 50 | const servers = await serversdata.find(); 51 | serverClient.user.setPresence({ activity: { type: 'WATCHING', name: + servers.length+' Servers | disbots.xyz/servers' }, status: "dnd" }); 52 | }); 53 | 54 | serverClient.makeid = length => { 55 | let text = ""; 56 | const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 57 | for (let i = 0; i < length; i++) { 58 | text += possible.charAt(Math.floor(Math.random() * possible.length)); 59 | } 60 | return text; 61 | } 62 | 63 | module.exports = serverClient; -------------------------------------------------------------------------------- /src/views/botlist/apps/certification.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 | Certification | Discord Bots 3 |
4 |
5 |
6 |

7 |

»» Certificate Requirements

8 |

9 | » Your bot must have been on our site for at least 5 days. 10 |
» It must be hosted 24/7. Only short downtimes are accepted to perform minor maintenance or fix errors. 11 |
» It must have original features. 12 |
» It must not have been forked from another existing project. 13 |
» It must have a site, or a GitHub repository that provides very clear documentation about the bot's features. 14 |
» It must have more than 100 servers. 15 |

16 |
17 |

»» Certificate Perks

18 |

19 |
»» For bots 20 |
» A special role on our Discord server to let people know that it's certified. 21 |
»A special badge( 22 | 23 | ) on your bot card to let people know that it's certified. 24 | 25 |

»» For bots developers 26 | 27 |
» A special role on our Discord server to let people know that you are certified. 28 |
» A special badge( 29 | 30 | ) on your profile to let people know that you are certified. 31 |

32 |
33 |
34 |
35 |
36 | 37 |
38 |
39 | 40 | <%- include('../../parts/foot') %> -------------------------------------------------------------------------------- /src/servers/commands/link.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | const client = new Discord.Client(); 3 | const bots = require("../../database/models/servers/server.js"); 4 | 5 | module.exports.run = async (client, message, args) => { 6 | if (args[0]) { 7 | let b = await bots.findOne({ 8 | id: args[0] 9 | }); 10 | const targetGuild = client.guilds.cache.get(b.id) 11 | if (!b) return message.channel.send("This server was not added to our website.\nAdd server https://disbots.xyz/server/add") 12 | let invitelink = b.link ? " [Join Server](" + b.link + ")" : ""; 13 | const embed = new Discord.MessageEmbed() 14 | .setThumbnail(b.icon) 15 | .setAuthor(`${b.name} | ${b.id}`) 16 | .setDescription(b.shortDesc) 17 | .addField("ID", b.id, true) 18 | .addField("Server Name", b.name, true) 19 | .addField("Votes", b.votes, true) 20 | .addField("Bumps", b.bumps, true) 21 | .addField("Member Count", client.guilds.cache.get(args[0]).memberCount 22 | , true) 23 | .addField("Emoji Count", client.guilds.cache.get(args[0]).emojis.cache.size 24 | , true) 25 | .setColor("#7289da") 26 | .addField("Owner(s)", `<@${b.ownerID}>\n${coowner.replace("<@>", "")}`, true) 27 | .addField("Invite Link:", `${invitelink || "No Server Invite"}`, true) 28 | 29 | message.channel.send(embed) 30 | } 31 | if (!args[0]) { 32 | let b = await bots.findOne({ 33 | id: message.guild.id 34 | }); 35 | if (!b) return message.channel.send("This server was not added to our website.\nAdd server https://disbots.xyz/server/add") 36 | const targetGuild = client.guilds.cache.get(b.id) 37 | let invitelink = b.link ? " [Join Server](" + b.link + ")" : ""; 38 | const embed = new Discord.MessageEmbed() 39 | .setThumbnail(b.icon) 40 | .setAuthor(`${b.name} | ${b.id}`) 41 | .setDescription(b.shortDesc) 42 | .addField("ID", b.id, true) 43 | .addField("Server Name", b.name, true) 44 | .addField("Votes", b.votes, true) 45 | .addField("Bumps", b.bumps, true) 46 | .addField("Member Count", client.guilds.cache.get(message.guild.id).memberCount 47 | , true) 48 | .addField("Emoji Count", client.guilds.cache.get(message.guild.id).emojis.cache.size 49 | , true) 50 | .setColor("#7289da") 51 | .addField("Owner(s)", `<@${b.ownerID}>`, true) 52 | .addField("Invite Link:", `${invitelink || "No Server Invite"}`, true) 53 | 54 | message.channel.send(embed) 55 | } 56 | }; 57 | exports.conf = { 58 | enabled: true, 59 | guildOnly: false, 60 | aliases: ["l"], 61 | }; 62 | 63 | exports.help = { 64 | name: "link", 65 | description: "Sends the link of server", 66 | usage: "" 67 | }; -------------------------------------------------------------------------------- /src/routers/botlist/bot/edit.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../../database/models/botlist/bots.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz]: Botlist/Edit router loaded."); 7 | 8 | app.get("/bot/:botID/edit", global.checkAuth, async (req, res) => { 9 | let botdata = await botsdata.findOne({ 10 | botID: req.params.botID 11 | }); 12 | if (!botdata) return res.redirect("/error?code=404&message=You entered an invalid bot id.") 13 | if (req.user.id == botdata.ownerID || botdata.coowners.includes(req.user.id)) { 14 | res.render("botlist/bot/bot-edit.ejs", { 15 | bot: global.Client, 16 | path: req.path, 17 | config: global.config, 18 | user: req.isAuthenticated() ? req.user : null, 19 | req: req, 20 | roles:global.config.server.roles, 21 | channels: global.config.server.channels, 22 | botdata: botdata 23 | }) 24 | } else { 25 | res.redirect("/error?code=404&message=To edit this bot, you must be one of its owners."); 26 | } 27 | }); 28 | 29 | 30 | app.post("/bot/:botID/edit", global.checkAuth, async (req, res) => { 31 | let rBody = req.body; 32 | let botdata = await botsdata.findOne({ 33 | botID: req.params.botID 34 | }) 35 | if (String(rBody['coowners']).split(',').length > 3) return res.redirect("?error=true&message=You can add up to 3 CO-Owners..") 36 | if (String(rBody['coowners']).split(',').includes(req.user.id)) return res.redirect("?error=true&message=You cannot add yourself to other CO-Owners."); 37 | await botsdata.findOneAndUpdate({ 38 | botID: req.params.botID 39 | }, { 40 | $set: { 41 | botID: req.params.botID, 42 | ownerID: botdata.ownerID, 43 | prefix: rBody['prefix'], 44 | longDesc: rBody['longDesc'], 45 | shortDesc: rBody['shortDesc'], 46 | tags: rBody['tags'], 47 | github: rBody['github'], 48 | website: rBody['website'], 49 | support: rBody['support'], 50 | invite: rBody['invite'], 51 | coowners: String(rBody['coowners']).split(','), 52 | backURL: rBody['background'], 53 | } 54 | }, function(err, docs) {}) 55 | client.users.fetch(req.params.botID).then(a => { 56 | client.channels.cache.get(channels.botlog).send(`<:edit:853596640710885406> <@${req.user.id}> edited **${a.tag}**`) 57 | res.redirect(`?success=true&message=Your bot has been successfully edited.&botID=${req.params.botID}`) 58 | }) 59 | }) 60 | 61 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/botlist/vote.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[disbots.xyz]: Botlist/Vote router loaded."); 7 | 8 | app.get("/bot/:botID/vote", async (req, res) => { 9 | let botdata = await botsdata.findOne({ 10 | botID: req.params.botID 11 | }); 12 | if (!botdata) return res.redirect("/error?code=404&message=You entered an invalid bot id."); 13 | if (req.user) { 14 | if (!req.user.id === botdata.ownerID || req.user.id.includes(botdata.coowners)) { 15 | if (botdata.status != "Approved") return res.redirect("/error?code=404&message=You entered an invalid bot id."); 16 | } 17 | } 18 | res.render("botlist/vote.ejs", { 19 | bot: global.Client, 20 | path: req.path, 21 | config: global.config, 22 | user: req.isAuthenticated() ? req.user : null, 23 | req: req, 24 | botdata: botdata, 25 | roles:global.config.server.roles, 26 | channels: global.config.server.channels 27 | }) 28 | }) 29 | app.post("/bot/:botID/vote", global.checkAuth, async (req, res) => { 30 | const votes = require("../../database/models/botlist/vote.js"); 31 | let botdata = await botsdata.findOne({ 32 | botID: req.params.botID 33 | }); 34 | let x = await votes.findOne({ 35 | user: req.user.id, 36 | bot: req.params.botID 37 | }) 38 | if (x) return res.redirect("/error?code=400&message=You can vote every 12 hours."); 39 | await votes.findOneAndUpdate({ 40 | bot: req.params.botID, 41 | user: req.user.id 42 | }, { 43 | $set: { 44 | Date: Date.now(), 45 | ms: 43200000 46 | } 47 | }, { 48 | upsert: true 49 | }) 50 | await botsdata.findOneAndUpdate({ 51 | botID: req.params.botID 52 | }, { 53 | $inc: { 54 | votes: 1 55 | } 56 | }) 57 | client.channels.cache.get(channels.votes).send(`**${botdata.username}** just got **+1 Vote** from **${req.user.username}** **\`[Total Votes ${botdata.votes + 1}]\`**`) 58 | if(botdata.votes+1 == 100) { 59 | client.channels.cache.get(channels.votes).send(`Congrats ${botdata.ownerID}! Your bot **${botdata.username}** has reached 100 votes!!`) 60 | } 61 | if(botdata.votes+1 == 52) { 62 | client.channels.cache.get(channels.votes).send(`Congrats <@${botdata.ownerID}>! Your bot **${botdata.username}** has reached 52 votes!!`) 63 | } 64 | return res.redirect(`/bot/${req.params.botID}/vote?success=true&message=You voted successfully. You can vote again after 12 hours.`); 65 | }) 66 | 67 | 68 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/servers/server/view.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../../database/models/servers/server.js"); 3 | const botsdb = require("../../../database/models/botlist/bots.js"); 4 | const client = global.clientSL; 5 | const channels = global.config.server.channels; 6 | const clientTwo = global.Client; 7 | console.log("[disbots.xyz/servers]: View router loaded."); 8 | 9 | app.get("/:guildID", async (req,res) => { 10 | let sdb = await db.findOne({ id: req.params.guildID }); 11 | if(!req.params.guildID) return res.redirect('/servers'); 12 | if(!sdb) return res.redirect('/servers'); 13 | let page = req.query.page || 1; 14 | let data = sdb.rates || []; 15 | if ((page > Math.ceil(data.length / 5))) { 16 | page = 1; 17 | } 18 | if (Math.ceil(data.length / 5) < 1) { 19 | page = 1; 20 | }; 21 | let checkGuild = global.clientSL.guilds.cache.get(req.params.guildID); 22 | if(!checkGuild) return res.redirect('/servers'); 23 | 24 | let sdata = await db.findOne({ id: req.params.guildID }); 25 | let rateAuthors = new Array(); 26 | (sdata.rates || []).map(x => { 27 | rateAuthors.push(client.users.cache.get(x.author)) 28 | }) 29 | /* ANALYTICS */ 30 | let referresURL = String(req.headers.referer).replace("undefined", "Unkown").split('.').join(','); 31 | await db.updateOne({ 32 | id: req.params.guildID 33 | }, { 34 | $inc: { 35 | analytics_visitors: 1 36 | } 37 | }) 38 | 39 | var getIP = require('ipware')().get_ip; 40 | var ipInfo = getIP(req); 41 | var geoip = require('geoip-lite'); 42 | var ip = ipInfo.clientIp; 43 | var geo = geoip.lookup(ip); 44 | 45 | if (geo) { 46 | let CountryCode = geo.country || "TR" 47 | await db.updateOne({ 48 | id: req.params.guildID 49 | }, { 50 | $inc: { 51 | [`country.${CountryCode}`]: 1 52 | } 53 | }) 54 | } 55 | await db.updateOne({ 56 | id: req.params.guildID 57 | }, { 58 | $inc: { 59 | [`analytics.${referresURL}`]: 1 60 | } 61 | }) 62 | 63 | res.render("servers/server/view.ejs", { 64 | bot: global.clientSL, 65 | path: req.path, 66 | config: global.config, 67 | user: req.isAuthenticated() ? req.user : null, 68 | req: req, 69 | roles:global.config.server.roles, 70 | channels: global.config.server.channels, 71 | data: data, 72 | guildGet: checkGuild, 73 | page: page, 74 | sdb: sdb, 75 | rateAuthors: rateAuthors, 76 | moment: require("moment") 77 | }) 78 | }) 79 | 80 | module.exports = app; -------------------------------------------------------------------------------- /src/views/botlist/apps/certificate-app.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 |

3 |
4 |

5 |
6 |
7 | 8 |
9 |
10 |

11 |
12 |
13 |
14 | 16 |
17 | 21 |
22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 | 31 |
32 | 37 |
38 |
39 |
40 |



41 | 42 |
43 |
44 |
45 |

46 | 74 | <%- include('../../parts/foot') %> 75 | -------------------------------------------------------------------------------- /src/servers/commands/profile.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const disbots = require("disbots-xyz"); 3 | const botdata = require("../../database/models/botlist/bots.js") 4 | const serverdata = require("../../database/models/servers/server.js"); 5 | const pdata = require("../../database/models/profile.js"); 6 | 7 | module.exports.run = async (client, message, args) => { 8 | if (args[0]) { 9 | var users = message.mentions.users.first() 10 | let x = await botdata.find(); 11 | let bots = await x.filter(a => a.ownerID ==users.id || a.coowners.includes(users.id)) 12 | let y = await serverdata.find(); 13 | let pd = await serverdata.find({ userID: users.id }) 14 | let servers = await y.filter(b => b.ownerID == users.id) 15 | let pdatas = await pd.filter(ps => ps.userID == users.id) 16 | const embed = new Discord.MessageEmbed() 17 | .setTitle('Profile') 18 | .setAuthor(users.tag, users.avatarURL({ dynamic: true })) 19 | .setDescription(`\n[Click to View your Profile!](https://disbots.xyz/user/${users.id})\n\n**Analytics**\n You own **${bots.length || "0"} Bots** and **${servers.length} Servers**`) 20 | .setColor("#7289da") 21 | .addField("Bots [" + bots.length + "]", `${!bots ? "" : bots.map(a => "<@" + a.botID + "> **[**[View " + a.username + "](https://disbots.xyz/bot/" + a.botID + ")**]**").join("\n")}\n\n **Servers [${servers.length}]** \n${!servers ? "" : servers.map(b => b.name + " **[**[View " + b.name + "](https://disbots.xyz/server/" + b.id + ")**]**").join("\n")}`, true) 22 | .setThumbnail(users.avatarURL({ dynamic: true })) 23 | message.channel.send(embed) 24 | } 25 | if (!args[0]) { 26 | var users = message.author 27 | let x = await botdata.find(); 28 | let bots = await x.filter(a => a.ownerID ==users.id || a.coowners.includes(users.id)) 29 | let y = await serverdata.find(); 30 | let pd = await serverdata.find({ userID: users.id }) 31 | let servers = await y.filter(b => b.ownerID == users.id) 32 | let pdatas = await pd.filter(ps => ps.userID == users.id) 33 | const embed = new Discord.MessageEmbed() 34 | .setTitle('Profile') 35 | .setAuthor(users.tag, users.avatarURL({ dynamic: true })) 36 | .setDescription(`\n[Click to View your Profile!](https://disbots.xyz/user/${users.id})\n\n**Analytics**\n You own **${bots.length || "0"} Bots** and **${servers.length} Servers**`) 37 | .setColor("#7289da") 38 | .addField("Bots [" + bots.length + "]", `${!bots ? "" : bots.map(a => "<@" + a.botID + "> **[**[View " + a.username + "](https://disbots.xyz/bot/" + a.botID + ")**]**").join("\n")}\n\n **Servers [${servers.length}]** \n${!servers ? "" : servers.map(b => b.name + " **[**[View " + b.name + "](https://disbots.xyz/server/" + b.id + ")**]**").join("\n")}`, true) 39 | .setThumbnail(users.avatarURL({ dynamic: true })) 40 | message.channel.send(embed) 41 | }}; 42 | exports.conf = { 43 | enabled: true, 44 | guildOnly: false, 45 | aliases: [], 46 | }; 47 | 48 | exports.help = { 49 | name: "profile", 50 | description: "", 51 | usage: "" 52 | }; -------------------------------------------------------------------------------- /src/views/botlist/bot-rules.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | 3 | Rules | Discord Bots 4 | 9 |
10 |
11 |
12 |

Bot Rules

13 |

14 | » 1. The conditions for adding bots are as follows;
15 |   a. You have to choose a tag.
16 |   b. You have to enter the bot ID correctly.
17 |   c. The opening date of your bot must be 2 weeks before it is added.
18 |   d. Your bot should not be a duplicate of other bots.
19 |   e. Your bot's avatar must not belong to another bot.

20 | » 2. Bot page content that is not allowed;
21 |   a. You should not redirect to any unrelated site.
22 |   b. You should not put another bot list site as an iframe.
23 |   c. You should not post pictures that contain nudity.
24 |   d. You must provide detailed information about your bot.
25 |   e. While giving detailed information about your bot, you should use it in the pictures.
26 |   f. You must write the correct prefix.
27 |   g. You have to put your bot's site as an iframe or write your bot's commands.

28 | » 3. Not allowed in bot commands;
29 |   a. Another bot should not be advertised on your bot.
30 |   b. There should be no emojis in any of your bot's commands that will cause an epilepsy crisis.
31 |   c. Your bot's commands must be unique.
32 |   d. There should be no batch-processing commands on your bot.
33 |   e. Your bot should not have any prohibited commands.
34 |   f. Your bot must have been opened at least 2 weeks ago.
35 |   g. Your bot must be unique. 36 |

37 | » Prohibited Commands;
38 | 1. Give / Get Role For Everyone
39 | 2. Blast the Server
40 | 3. DM Announcement
41 | 4. Spam Message
42 | 5. Send a private message 43 |

44 |
45 |
46 |
47 |
48 | 49 |
50 |
51 | 52 | <%- include('../parts/foot') %> 53 | -------------------------------------------------------------------------------- /src/views/admin/administrator/partners.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 |
6 |
7 |
8 | 9 | 10 |
11 |
12 | 13 | 14 |
15 |
16 | 17 | 18 |
19 |
20 |
21 | 22 | 23 |
24 |
25 | 26 | 27 |
28 |
29 | 30 | 31 |
32 | 33 |
34 | 35 |
36 | 37 | 38 |












39 | 40 | 68 | <%- include('../static/foot.ejs') %> 69 |
-------------------------------------------------------------------------------- /src/routers/codeshare/view.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const codesSchema = require("../../database/models/codes.js"); 3 | const client = global.Client; 4 | 5 | console.log("[disbots.xyz]: Code Share/View router loaded."); 6 | 7 | app.get("/view/:code", global.checkAuth, async (req, res) => { 8 | let kod = req.params.code; 9 | let koddata = await codesSchema.findOne({ 10 | code: kod 11 | }) 12 | if (!koddata) return res.redirect('/codes/list?error=true&message=You entered an invalid code.') 13 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id)) return res.redirect("/error?code=403&message=To do this, you have to join our discord server."); 14 | if (koddata.codeCategory == "javascript") { 15 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.javascript)) return res.redirect("/error?code=403&message=You is not competent to do this."); 16 | } 17 | if (koddata.codeCategory == "html") { 18 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.html)) return res.redirect("/error?code=403&message=You is not competent to do this."); 19 | } 20 | if (koddata.codeCategory == "subs") { 21 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.substructure)) return res.redirect("/error?code=403&message=You is not competent to do this."); 22 | } 23 | if (koddata.codeCategory == "5invites") { 24 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.fiveInvite)) return res.redirect("/error?code=403&message=You is not competent to do this."); 25 | } 26 | if (koddata.codeCategory == "10invites") { 27 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.tenInvite)) return res.redirect("/error?code=403&message=You is not competent to do this."); 28 | } 29 | if (koddata.codeCategory == "15invites") { 30 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.fifteenInvite)) return res.redirect("/error?code=403&message=You is not competent to do this."); 31 | } 32 | if (koddata.codeCategory == "20invites") { 33 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.twentyInvite)) return res.redirect("/error?code=403&message=You is not competent to do this."); 34 | } 35 | if (koddata.codeCategory == "bdfd") { 36 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id).roles.cache.get(config.server.roles.codeshare.bdfd)) return res.redirect("/error?code=403&message=You is not competent to do this."); 37 | } 38 | res.render("codeshare/codeview.ejs", { 39 | bot: global.Client, 40 | path: req.path, 41 | config: global.config, 42 | user: req.isAuthenticated() ? req.user : null, 43 | req: req, 44 | roles:global.config.server.roles, 45 | channels: global.config.server.channels, 46 | koddata: koddata 47 | }); 48 | }) 49 | 50 | 51 | module.exports = app; -------------------------------------------------------------------------------- /src/routers/admin/maintence.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const maintenceSchema = require("../../database/models/maintence.js"); 3 | const client = global.Client; 4 | const channels = global.config.server.channels, 5 | roles = global.config.server.roles; 6 | 7 | console.log("[disbots.xyz]: Admin/Maintence router loaded."); 8 | 9 | app.get("/admin/maintence", global.checkAuth, async (req, res) => { 10 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 11 | res.render("admin/administrator/maintence.ejs", { 12 | bot: global.Client, 13 | path: req.path, 14 | config: global.config, 15 | user: req.isAuthenticated() ? req.user : null, 16 | req: req, 17 | roles:global.config.server.roles, 18 | channels: global.config.server.channels 19 | }) 20 | }); 21 | app.post("/admin/maintence", global.checkAuth, async (req, res) => { 22 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 23 | let bakimdata = await maintenceSchema.findOne({ 24 | server: config.server.id 25 | }); 26 | if (bakimdata) return res.redirect('../admin/maintence?error=true&message=Maintenance mode has already been activated for this site.'); 27 | client.channels.cache.get(global.config.server.channels.webstatus).send(` DisBots has been switched to __Maintenance__ due to **${req.body.reason}** [||<@&861221279080120371>||]`).then(a => { 28 | new maintenceSchema({ 29 | server: config.server.id, 30 | reason: req.body.reason, 31 | bakimmsg: a.id 32 | }).save(); 33 | }) 34 | return res.redirect('../admin/maintence?success=true&message=Maintence opened.'); 35 | }); 36 | app.post("/admin/unmaintence", global.checkAuth, async (req, res) => { 37 | const dc = require("discord.js"); 38 | if (!config.bot.owners.includes(req.user.id)) return res.redirect('../admin'); 39 | let bakimdata = await maintenceSchema.findOne({ 40 | server: config.server.id 41 | }); 42 | if (!bakimdata) return res.redirect('../admin/maintence?error=true&message=The website is not in maintenance mode anyway.'); 43 | const bakimsonaerdikardesDisbots = new dc.MessageEmbed() 44 | .setAuthor("Disbots.xyz", client.user.avatarURL()) 45 | .setThumbnail(client.user.avatarURL()) 46 | .setColor("GREEN") 47 | .setDescription(` DisBots are **active** again!\n[Click to redirect website](https://disbots.xyz)`) 48 | .setFooter("Disbots © All rights reserved."); 49 | await client.channels.cache.get(channels.webstatus).messages.fetch(bakimdata.bakimmsg).then(a => { 50 | a.edit(`~~ Disbots has been switched to __maintance__ due to **${bakimdata.reason}** ~~`, bakimsonaerdikardesDisbots) 51 | }) 52 | client.channels.cache.get(channels.webstatus).send(".").then(b => { 53 | b.delete({ 54 | timeout: 500 55 | }) 56 | }) 57 | await maintenceSchema.deleteOne({ 58 | server: config.server.id 59 | }, function(error, server) { 60 | if (error) console.log(error) 61 | }); 62 | return res.redirect('../admin/maintence?success=true&message=Maintenance mode has been shut down successfully.'); 63 | }); 64 | 65 | module.exports = app; -------------------------------------------------------------------------------- /src/views/botlist/search.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | <%- include('../parts/section') %> 3 | 4 |
5 |
6 |

 Search results for "<%= req.query.q %>"

7 |

They are ranked according to the votes they received.

8 |
9 |
10 | 11 | <% 12 | for (let i = (page - 1) * 6; i < data.length; i++) { 13 | if (i === 6 * page) break; 14 | let a = data.sort((a, b) => b.votes - a.votes)[i] 15 | %> 16 | <% if(a.status === "Approved") { %> 17 | %> 18 |
19 |
20 |
21 |
);">
22 |
23 | Avatar 24 |
25 |
26 |
27 |  <%= a.votes || "0" %> 28 |  <%= a.serverCount || "N/A" %> 29 |
30 |

<%= a.username %> 31 | <% if(a.certificate === "Certified") { %> 32 | 33 | <% } %> 34 |

35 |

<%= a.shortDesc %>

36 |
37 | 41 |
42 |
43 |
44 | <% } %> 45 | <% } %> 46 |
47 |
48 |

49 |
50 | <% 51 | if (page != 1) { 52 | %> 53 | 54 | 55 | 56 | <% } else { %> 57 | 58 | 59 | 60 | <% } %> 61 | 62 | <%= page %> 63 | 64 | <% 65 | if (page != Math.ceil(data.length / 6) && data.length > 0) { 66 | %> 67 | 68 | 69 | 70 | <% } %> 71 |
72 | 73 | <%- include('../parts/foot') %> 74 | -------------------------------------------------------------------------------- /src/views/admin/report-app.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | <% apps.map(b => {%> 28 | 29 | 30 | 31 | 35 | 36 | <% }) %> 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
Bot IDReasonAction
<%= b.botID %><%= b.reason %> 32 | 33 | 34 |
Bot IDReason
46 |
47 |
48 |
49 | 77 |
78 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/serverapproved.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | <% serverdata.filter(a => a.status === "Approved").map(b => {%> 28 | 29 | 30 | 31 | 34 | 35 | <% }) %> 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
Bot NameOwnerAction
<%= b.name %><%= b.ownerID %> 32 | 33 |
Server NameOwnerInvite
46 |
47 |
48 |
49 | 77 |
78 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/botlist/vote.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | 3 | Vote | <%= botdata.username %> | Discord Bots 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 |
12 |
13 |
14 | 15 |
16 |

<%= botdata.username %>#<%= botdata.discrim %>

17 | <% if(user) { %> 18 |

You can support the bot by voting this bot.

19 |

You can vote every 12 hours.

20 |
21 | 22 | 23 |
24 | <% } else { %> 25 | 46 | <% } %> 47 |
48 |
49 |
50 |
51 | 52 |
53 |
54 | 55 | 87 | <%- include('../parts/foot') %> 88 | -------------------------------------------------------------------------------- /src/views/admin/uptimes.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | <% updata.map(b => {%> 29 | 30 | 31 | 32 | 33 | 36 | 37 | <% }) %> 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
UsernameLinkUptime CodeAction
<%= b.userName %><%= b.link %><%= b.code %> 34 | 35 |
UsernameLinkUptime Code
48 |
49 |
50 |
51 | 79 |
80 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/premium-server.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | <% serverdata.filter(a => a.status == "Approved").map(row => {%> 28 | 29 | 30 | 31 | 35 | 36 | <% }) %> 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
Bot NameOwnerAction
<%= row.name %><%= row.ownerID %> 32 | 33 | 34 |
Bot NameOwnerPrefixInvite
48 |
49 |
50 |
51 | 79 |
80 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/premium-servers.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% serverdata.filter(a => a.status == "Approved").map(row => {%> 30 | 31 | 32 | 33 | 34 | 38 | 39 | <% }) %> 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
Bot NameOwnerPrefixInviteAction
<%= row.username %><%= row.ownerName %><%= row.prefix %> 35 | 36 | 37 |
Bot NameOwnerPrefixInvite
51 |
52 |
53 |
54 | 82 |
83 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/news.ejs: -------------------------------------------------------------------------------- 1 | <%- include('parts/head', {bot, user, path}) %> 2 | 3 | 4 | 5 | 6 | 7 | Official Disbots News 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 35 |
36 |



37 |
38 |

 News

39 | 40 |
41 |
42 | <% db.get(`news`).map(a => { %> 43 |
44 |
45 |
46 |
47 |
48 | Avatar 49 |
50 |
51 |
52 | written by: <%= bot.users.cache.get(a.ownerID) ? bot.users.cache.get(a.ownerID).username : "undefined" %>#<%= bot.users.cache.get(a.ownerID) ? bot.users.cache.get(a.ownerID).discriminator : "0000" %> 53 |
54 |
55 |
56 | publish date: <%= a.date %> 57 |
58 |

<%= a.serverName %> 59 | 60 |

61 |

<%= a.description %>

62 |
63 |
64 |
65 |
66 | <% }) %> 67 |
68 |
69 | 70 | 75 | 79 | <%- include('parts/foot') %> 80 | -------------------------------------------------------------------------------- /src/views/admin/administrator/user-ban.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../static/head.ejs', { bot,user,path}) %> 2 |
3 |





4 |
5 | 6 |
7 |
8 |

Ban

9 |
10 | 11 |
12 |
13 | 14 | 15 |
16 |
17 | 18 | 19 |
20 |
21 | 22 | 23 |
24 |
25 |
26 |

Unban

27 |
28 | 29 |
30 |
31 | 32 | 33 |
34 | 35 |
36 | 37 | 38 |
39 |
40 |
41 | 42 |
43 | 44 |
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | <% bandata.map(a => { %> 57 | 58 | 59 | 60 | 61 | 62 | <% }) %> 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
UserReasonAuthorized
<%= a.user %><%= a.sebep %><%= a.yetkili %>
UserReasonAuthorized
71 |
72 |
73 |












74 | 75 | 103 |
104 | <%- include('../static/foot.ejs') %> -------------------------------------------------------------------------------- /src/views/admin/certified-bots.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% botdata.filter(a => a.certificate == "Certified").map(row => {%> 30 | 31 | 32 | 33 | 34 | 36 | 39 | 40 | <% }) %> 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
Bot NameOwnerPrefixInviteAction
<%= row.username %><%= row.ownerName %><%= row.prefix %> 35 | 37 | 38 |
Bot NameOwnerPrefixInvite
52 |
53 |
54 |
55 | 83 |
84 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/approved.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% botdata.filter(a => a.status === "Approved").map(b => {%> 30 | 31 | 32 | 33 | 34 | 36 | 39 | 40 | <% }) %> 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 |
Bot NameOwnerPrefixInviteAction
<%= b.username %><%= b.ownerName %><%= b.prefix %> 35 | 37 | 38 |
Bot NameOwnerPrefixInvite
52 |
53 |
54 |
55 | 83 |
84 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/routers/servers/add.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const roles = global.config.server.roles; 5 | const channels = global.config.server.channels; 6 | 7 | console.log("[disbots.xyz/servers]: Add Server router loaded."); 8 | 9 | app.get("/add", global.checkAuth, async (req,res) => { 10 | if(!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id)) return res.redirect("/error?code=403&message=To do this, you have to join our discord server."); 11 | res.render("servers/add.ejs", { 12 | bot: global.clientSL, 13 | path: req.path, 14 | config: global.config, 15 | user: req.isAuthenticated() ? req.user : null, 16 | req: req, 17 | roles:global.config.server.roles, 18 | channels: global.config.server.channels 19 | }) 20 | }) 21 | app.post("/add", global.checkAuth, async (req,res) => { 22 | let { guildID, link, autoCreate, shortDesc, longDesc, tags } = req.body; 23 | const guild = client.guilds.cache.get(req.body.guildID); 24 | let checkGuild = await db.findOne({ id: guildID }); 25 | if(checkGuild) return res.send({ error: true, message: "This server already exist system." }); 26 | if(!guildID || !longDesc || !shortDesc || !tags) return res.send({ error: true, message: "Fill the must any blanks."}); 27 | if(!link && !autoCreate) return res.send({ error: true, message: "Fill the must any blanks."}); 28 | if (!guild) return res.send({ error: true, message: "You have to add me to that server first." }); 29 | const member = guild.members.cache.get(req.user.id); 30 | if(!member){ 31 | try{ await guild.members.fetch(); 32 | member = guild.members.cache.get(req.user.id); 33 | } catch (err) { 34 | res.send({ error: true, message: `Couldn't fetch the members of ${guild.id}: ${err}`}) 35 | } 36 | } 37 | if (!member) return res.send({ error: true, message: "You can only add servers with ADMINISTRATOR authorization." }); 38 | if (!member.permissions.has("ADMINISTRATOR")) return res.send({ error: true, message: "You can only add servers with ADMINISTRATOR authorization." }); 39 | await db.updateOne({ 40 | id: guildID 41 | }, { 42 | $set: 43 | { 44 | id: guildID, 45 | name: guild.name, 46 | icon: guild.iconURL({ dynamic: true }), 47 | status: "Approved", 48 | premium: "None", 49 | ownerID: guild.owner.id ? guild.owner.id : req.user.id, 50 | longDesc: req.body.longDesc, 51 | shortDesc: req.body.shortDesc, 52 | tags: req.body.tags, 53 | votes: 0 54 | } 55 | }, { upsert: true }) 56 | 57 | if(autoCreate === "true") { 58 | guild.fetchInvites().then(async fetchinvite => { 59 | fetchinvite.array().find(a => a.inviter.id === client.user.id) 60 | ? fetchinvite.array().find(a => a.inviter.id === client.user.id).code 61 | : await guild.channels.cache.random().createInvite({ maxAge: 0 }); 62 | }); 63 | guild.fetchInvites().then(async fetchinvite => { 64 | let inviteURL = fetchinvite 65 | .array() 66 | .find(a => a.inviter.id === client.user.id).url; 67 | await db.updateOne({ 68 | id: req.params.guildID 69 | }, { 70 | $set: { 71 | link: inviteURL 72 | } 73 | }, { upsert: true }) 74 | }) 75 | 76 | } else { 77 | await db.updateOne({ 78 | id: req.params.guildID 79 | }, { 80 | $set: { 81 | link: req.body.link 82 | } 83 | }, { upsert: true }) 84 | } 85 | let checkGuilds = await db.findOne({ id: guildID }); 86 | let guilda = client.guilds.cache.get(global.config.server.id) 87 | guilda.members.cache.get(checkGuilds.ownerID).roles.add(global.config.server.roles.botlist.ownerserver); 88 | client.channels.cache.get(global.config.server.channels.botlog).send(`<:add:853596640824655872> <@${checkGuilds.ownerID}> added **${guild.name}** \n https://disbots.xyz/server/${checkGuilds.id}/`) 89 | return res.send({ success: true, message: "Server succesfuly added." }); 90 | }) 91 | 92 | module.exports = app; -------------------------------------------------------------------------------- /src/views/admin/boosted-bots.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% botdata.filter(a => a.status == "Approved").map(row => {%> 30 | 31 | 32 | 33 | 34 | 36 | 40 | 41 | <% }) %> 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
Bot NameOwnerPrefixInviteAction
<%= row.username %><%= row.ownerName %><%= row.prefix %> 35 | 37 | 38 | 39 |
Bot NameOwnerPrefixInvite
53 |
54 |
55 |
56 | 84 |
85 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/promoted-bots.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% botdata.filter(a => a.status == "Approved").map(row => {%> 30 | 31 | 32 | 33 | 34 | 36 | 40 | 41 | <% }) %> 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
Bot NameOwnerPrefixInviteAction
<%= row.username %><%= row.ownerName %><%= row.prefix %> 35 | 37 | 38 | 39 |
Bot NameOwnerPrefixInvite
53 |
54 |
55 |
56 | 84 |
85 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/unapproved.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% botdata.filter(a => a.status === "UnApproved").map(b => {%> 30 | 31 | 32 | 33 | 34 | 36 | 40 | 41 | <% }) %> 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
Bot NameOwnerPrefixInviteAction
<%= b.username %><%= b.ownerName %><%= b.prefix %> 35 | 37 | 38 | 39 |
Bot NameOwnerPrefixInvite
53 |
54 |
55 |
56 | 84 |
85 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/views/admin/certificate-apps.ejs: -------------------------------------------------------------------------------- 1 | <%- include('static/head.ejs', { bot,user,path}) %> 2 |
3 |
4 | 5 | 13 | 14 |
15 | 16 |
17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | <% apps.map(b => {%> 30 | 31 | 32 | 33 | 34 | 36 | 37 | 41 | 42 | <% }) %> 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |
Bot IDFuture100+ servers?InviteAction
<%= b.botID %><%= b.future %>Yes 35 | 38 | 39 | 40 |
Bot IDFuture100+ servers?Invite
54 |
55 |
56 |
57 | 85 |
86 | <%- include('static/foot.ejs', { bot,user,path}) %> -------------------------------------------------------------------------------- /src/routers/api/api.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | const channels = global.config.server.channels, 4 | roles = global.config.server.roles; 5 | 6 | console.log("[disbots.xyz]: Api router loaded."); 7 | 8 | app.get("/api", async (req, res) => { 9 | res.json({ 10 | "Hello": "World", 11 | "Template By": "disbots.xyz" 12 | }); 13 | }); 14 | app.get("/api/bots/:botID", async (req, res) => { 15 | const botinfo = await botsdata.findOne({ 16 | botID: req.params.botID 17 | }) 18 | if (!botinfo) return res.json({ 19 | "error": "You entered invalid bot id." 20 | }) 21 | res.json({ 22 | avatar: botinfo.avatar, 23 | botID: botinfo.botID, 24 | username: botinfo.username, 25 | discrim: botinfo.discrim, 26 | shortDesc: botinfo.shortDesc, 27 | prefix: botinfo.prefix, 28 | votes: botinfo.votes, 29 | ownerID: botinfo.ownerID, 30 | owner: botinfo.ownerName, 31 | coowners: botinfo.coowners, 32 | tags: botinfo.tags, 33 | longDesc: botinfo.longDesc, 34 | certificate: botinfo.certificate, 35 | github: botinfo.github, 36 | support: botinfo.support, 37 | website: botinfo.website, 38 | }); 39 | }); 40 | app.get("/api/bots/check/:userID", async (req, res) => { 41 | let token = req.header('Authorization'); 42 | if (!token) return res.json({ 43 | "error": "You must enter a bot token." 44 | }) 45 | if (!req.params.userID) return res.json({ 46 | "error": "You must enter a user id." 47 | }) 48 | const botdata = await botsdata.findOne({ 49 | token: token 50 | }) 51 | if (!botdata) return res.json({ 52 | "error": "You entered an invalid bot token." 53 | }) 54 | const vote = await voteSchema.findOne({ 55 | bot: botdata.botID, 56 | user: req.params.userID 57 | }) 58 | if (vote) { 59 | res.json({ 60 | voted: true 61 | }); 62 | } else { 63 | res.json({ 64 | voted: false 65 | }); 66 | } 67 | }); 68 | app.post("/api/bots/stats", async (req, res) => { 69 | let token = req.header('Authorization'); 70 | if (!token) return res.json({ 71 | "error": "You must enter a bot token." 72 | }) 73 | const botdata = await botsdata.findOne({ 74 | token: token 75 | }) 76 | if (!botdata) return res.json({ 77 | "error": "You entered an invalid bot token." 78 | }) 79 | if (botdata) { 80 | await botsdata.updateOne({ 81 | botID: botdata.botID 82 | }, { 83 | $set: { 84 | serverCount: req.header('serverCount') 85 | } 86 | }) 87 | if (req.header('shardCount')) { 88 | await botsdata.updateOne({ 89 | botID: botdata.botID 90 | }, { 91 | $set: { 92 | shardCount: req.header('shardCount') 93 | } 94 | }) 95 | } 96 | } 97 | }); 98 | 99 | app.post("/api/search", async (req, res) => { 100 | let key = req.body.key; 101 | if (key.length <= 0) return res.json({ 102 | status: true, 103 | data: [] 104 | }); 105 | let bots = require("../../database/models/botlist/bots.js") 106 | let bot = await bots.find(); 107 | let data = await bot.filter(d => d.status == "Approved" && d.username.toLowerCase().includes(key.toLowerCase())).sort((a,b) => b.votes - a.votes); 108 | res.json({ 109 | status: true, 110 | data: data 111 | }); 112 | }); 113 | app.post("/api/search/servers", async (req, res) => { 114 | let key = req.body.key; 115 | if (key.length <= 0) return res.json({ 116 | status: true, 117 | data: [] 118 | }); 119 | let servers = require("../../database/models/servers/server.js") 120 | let server = await servers.find(); 121 | let data = await server.filter(d => global.clientSL.guilds.cache.get(d.id) && d.name.toLowerCase().includes(key.toLowerCase())).sort((a,b) => global.clientSL.guilds.cache.get(b).memberCount - global.clientSL.guilds.cache.get(a).memberCount); 122 | res.json({ 123 | status: true, 124 | data: data 125 | }); 126 | }); 127 | 128 | module.exports = app; -------------------------------------------------------------------------------- /src/views/botlist/bots.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | <%- include('../parts/section') %> 3 | 4 |
5 |
6 |

 All Bots

7 |

They are ranked according to the votes they received.

8 |
9 |
10 | 11 | <% 12 | for (let i = (page - 1) * 6; i < data.length; i++) { 13 | if (i === 6 * page) break; 14 | let a = data.sort((a, b) => b.votes - a.votes)[i] 15 | %> 16 | <% if(a.status === "Approved") { %> 17 | %> 18 |
19 |
20 |
21 |
);">
22 |
23 | Avatar 24 |
25 |
26 |
27 |  <%= a.votes || "0" %> 28 |  <%= a.serverCount || "N/A" %> 29 |
30 |

<%= a.username %> 31 | <% if(a.certificate === "Certified") { %> 32 | 33 | <% } %> 34 |

35 |

<%= a.shortDesc %>

36 |
37 | 41 |
42 |
43 |
44 | 45 | <% } %> 46 | <% } %> 47 |
48 |
49 | 50 |

51 |
52 | <% 53 | if (page != 1) { 54 | %> 55 | 56 | 57 | 58 | <% } else { %> 59 | 60 | 61 | 62 | <% } %> 63 | 64 | <%= page %> 65 | 66 | <% 67 | if (page != Math.ceil(data.length / 6) && data.length > 0) { 68 | %> 69 | 70 | 71 | 72 | <% } %> 73 |
74 | 75 | 103 | <%- include('../parts/foot') %> 104 | -------------------------------------------------------------------------------- /src/views/botlist/bots-certified.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | <%- include('../parts/section') %> 3 | 4 |
5 |
6 |

 Certified Bots

7 |

They are ranked according to the votes they received.

8 |
9 |
10 | 11 | <% 12 | for (let i = (page - 1) * 6; i < data.length; i++) { 13 | if (i === 6 * page) break; 14 | let a = data.filter(a => a.certificate === "Certified").sort((a, b) => b.votes - a.votes)[i] 15 | %> 16 |
17 |
18 |
);">
19 |
20 | Avatar 21 |
22 |
23 |
24 |  <%= a.votes || "0" %> 25 |  <%= a.serverCount || "N/A" %> 26 |
27 |

<%= a.username %> 28 | <% if(a.certificate === "Certified") { %> 29 | 30 | <% } %> 31 |

32 |

<%= a.shortDesc %>

33 |
34 | 38 |
39 |
40 | <% } %> 41 |
42 |
43 | 44 |

45 |
46 | <% 47 | if (page != 1) { 48 | %> 49 | 50 | 51 | 52 | <% } else { %> 53 | 54 | 55 | 56 | <% } %> 57 | 58 | <%= page %> 59 | 60 | <% 61 | if (page != Math.ceil(data.length / 6) && data.length > 0) { 62 | %> 63 | 64 | 65 | 66 | <% } %> 67 |
68 | 69 | 97 | <%- include('../parts/foot') %> 98 | --------------------------------------------------------------------------------