├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── custom.md │ └── feature_request.md ├── .gitignore ├── .gitpod.yml ├── .replit ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── Procfile ├── README.md ├── example.config.js ├── index.js ├── package-lock.json ├── package.json ├── run.bat └── src ├── commands ├── botinfo.js ├── bots.js ├── queue.js └── reboot.js ├── database ├── connect.js └── models │ ├── analytics-site.js │ ├── botlist │ ├── bots.js │ ├── certificate-apps.js │ ├── report-apps.js │ └── vote.js │ ├── codes.js │ ├── partners.js │ ├── profile.js │ ├── servers │ ├── server.js │ └── user.js │ ├── site-ban.js │ └── uptime.js ├── fonts └── font.ttf ├── routers ├── admin │ ├── ban.js │ ├── botlist │ │ ├── certificate │ │ │ ├── decline.js │ │ │ └── give.js │ │ ├── confirm.js │ │ ├── decline.js │ │ └── delete.js │ ├── codeshare │ │ ├── add.js │ │ ├── delete.js │ │ ├── edit.js │ │ └── index.js │ ├── index.js │ ├── partner.js │ └── uptime │ │ └── index.js ├── api │ └── api.js ├── botlist │ ├── addbot.js │ ├── apps │ │ ├── cerificate-app.js │ │ └── report-app.js │ ├── bot │ │ ├── analytics.js │ │ ├── edit.js │ │ └── view.js │ ├── mini.js │ └── vote.js ├── codeshare │ ├── categories.js │ ├── list.js │ └── view.js ├── index.js ├── mini.js ├── partners.js ├── profile │ ├── edit.js │ └── index.js ├── servers │ ├── add.js │ ├── apps │ │ └── report-app.js │ ├── index.js │ ├── search.js │ ├── server │ │ ├── analytics.js │ │ ├── delete.js │ │ ├── edit.js │ │ ├── join.js │ │ └── view.js │ ├── tag.js │ └── tags.js └── uptime │ ├── add.js │ ├── delete.js │ └── links.js ├── server.js ├── servers ├── client.js └── commands │ ├── bump.js │ └── vote.js └── views ├── admin ├── addcode.ejs ├── administrator │ ├── maintence.ejs │ ├── partners.ejs │ └── user-ban.ejs ├── approved.ejs ├── certificate-apps.ejs ├── certificate-delete.ejs ├── certified-bots.ejs ├── codes.ejs ├── decline.ejs ├── editcode.ejs ├── index.ejs ├── static │ ├── foot.ejs │ └── head.ejs ├── unapproved.ejs └── uptimes.ejs ├── assets ├── css │ ├── admin │ │ ├── vcodes.css │ │ └── xyz.css │ ├── bootstrap.css │ ├── bulma.css │ └── style.css ├── img │ ├── logo.png │ ├── section.svg │ ├── undefined_avatar.png │ ├── undefined_back.png │ └── vcodes_wallpaper.png └── js │ ├── popper.js │ ├── query.js │ ├── socket.js │ └── style.js ├── botlist ├── addbot.ejs ├── apps │ ├── certificate-app.ejs │ ├── certification.ejs │ └── report.ejs ├── bot-rules.ejs ├── bot │ ├── announcement.ejs │ ├── bot-analytics.ejs │ ├── bot-edit.ejs │ └── bot.ejs ├── bots-certified.ejs ├── bots.ejs ├── search.ejs ├── tag.ejs ├── tags.ejs └── vote.ejs ├── codeshare ├── codes │ ├── categories.ejs │ └── codelist.ejs └── codeview.ejs ├── error.ejs ├── index.ejs ├── partners.ejs ├── parts ├── edit-head.ejs ├── foot.ejs ├── head.ejs ├── links.ejs ├── meta.ejs └── section.ejs ├── profile ├── profile-edit.ejs └── profile.ejs ├── servers ├── add.ejs ├── apps │ └── report.ejs ├── index.ejs ├── search.ejs ├── server │ ├── analytics.ejs │ ├── edit.ejs │ ├── join.ejs │ └── view.ejs ├── tag.ejs └── tags.ejs └── uptime └── links.ejs /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | 28 | - OS: [e.g. iOS] 29 | - Browser [e.g. chrome, safari] 30 | - Version [e.g. 22] 31 | 32 | **Smartphone (please complete the following information):** 33 | 34 | - Device: [e.g. iPhone6] 35 | - OS: [e.g. iOS8.1] 36 | - Browser [e.g. stock browser, safari] 37 | - Version [e.g. 22] 38 | 39 | **Additional context** 40 | Add any other context about the problem here. 41 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | json.sqlite 3 | config.js -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | tasks: 2 | - init: npm install 3 | command: npm run start 4 | -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | language = "nodejs" 2 | run = "node index.js" 3 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | ## Contributors ✨ 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: node main.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Discord Bot List 2 | 3 | **Discord Server:** [https://discord.gg/27Fs46hHX3](https://discord.gg/27Fs46hHX3)
4 | **NPM Module:** [npmjs.com/package/vcodes.js](https://www.npmjs.com/package/vcodes.js)
5 |
6 | 7 | ## Developers 8 | 9 | 10 | 11 | 16 | 21 | 22 |
12 | 13 |
14 | clqu

15 |
17 | 18 |
19 | Tunar

20 |
23 | 24 |

25 | 26 | ## Terms of Use 27 | 28 | - You have the permission to shoot and share videos, but you have to mention us and our server in the video.
29 | - You cannot use our branding anywhere on your site & claim it as your own.
30 | - You have the permission to share in writing, but you have to mention us, our server, in the article.
31 | - You can't speak in a "we did it" way.
32 | - You cannot sell this
33 | - Don't touch this part on footer;
34 | 35 | ``` 36 | Developed by Void Development 37 | ``` 38 | 39 | - Don't remove this part from `src/views/parts/meta.ejs`;
40 | 41 | 42 |

43 | 44 | ## 💨 Quick Setup 45 | 46 | [![Remix on Glitch](https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button.svg)](https://glitch.com/edit/#!/import/github/vcodes-xyz/benedict)
47 | [![Run on Replit](https://repl.it/badge/github/vcodes-xyz/bot-list)](https://repl.it/github/vcodes-xyz/benedict)
48 | [![Deploy on Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/vcodes-xyz/benedict) 49 | 50 |

51 | 52 | ## Contributors ✨ 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /example.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bot: { 3 | token: "", // Bot List Bot Token from https://discord.com/developers/applications 4 | owners: [""], 5 | mongourl: "", //https://mongodb.com/cloud/atlas/register 6 | servers: { 7 | token: "" // Server List Bot Token 8 | }, 9 | }, 10 | 11 | website: { 12 | callback: "", //example : https://vcodes.xyz/callback avoid / at last. 13 | secret: "", 14 | clientID: "", // Bot client id. 15 | tags: [ 16 | "Moderation", 17 | "Fun", 18 | "Minecraft", 19 | "Economy", 20 | "Guard", 21 | "NSFW", 22 | "Anime", 23 | "Invite", 24 | "Music", 25 | "Logging", 26 | "Web Dashboard", 27 | "Reddit", 28 | "Youtube", 29 | "Twitch", 30 | "Crypto", 31 | "Leveling", 32 | "Game", 33 | "Roleplay", 34 | "Utility", 35 | "Turkish", 36 | ], 37 | languages: [ 38 | { flag: "gb", code: "en", name: "English" }, 39 | { flag: "tr", code: "tr", name: "Türkçe" }, 40 | { flag: "de", code: "de", name: "Deutsch" }, 41 | ], 42 | servers: { 43 | tags: [ 44 | { 45 | icon: "fal fa-code", 46 | name: "Development", 47 | }, 48 | { 49 | icon: "fal fa-play", 50 | name: "Stream", 51 | }, 52 | { 53 | icon: "fal fa-camera", 54 | name: "Media", 55 | }, 56 | { 57 | icon: "fal fa-building", 58 | name: "Company", 59 | }, 60 | { 61 | icon: "fal fa-gamepad", 62 | name: "Game", 63 | }, 64 | { 65 | icon: "fal fa-icons", 66 | name: "Emoji", 67 | }, 68 | { 69 | icon: "fal fa-robot", 70 | name: "Bot List", 71 | }, 72 | { 73 | icon: "fal fa-server", 74 | name: "Server List", 75 | }, 76 | { 77 | icon: "fal fa-moon-stars", 78 | name: "Turkish", 79 | }, 80 | { 81 | icon: "fab fa-discord", 82 | name: "Support", 83 | }, 84 | { 85 | icon: "fal fa-volume", 86 | name: "Sound", 87 | }, 88 | { 89 | icon: "fal fa-comments", 90 | name: "Chatting", 91 | }, 92 | { 93 | icon: "fal fa-lips", 94 | name: "NSFW", 95 | }, 96 | { 97 | icon: "fal fa-comment-slash", 98 | name: "Challange", 99 | }, 100 | { 101 | icon: "fal fa-hand-rock", 102 | name: "Protest", 103 | }, 104 | { 105 | icon: "fal fa-headphones-alt", 106 | name: "Roleplay", 107 | }, 108 | { 109 | icon: "fal fa-grin-alt", 110 | name: "Meme", 111 | }, 112 | { 113 | icon: "fal fa-shopping-cart", 114 | name: "Shop", 115 | }, 116 | { 117 | icon: "fal fa-desktop", 118 | name: "Technology", 119 | }, 120 | { 121 | icon: "fal fa-laugh", 122 | name: "Fun", 123 | }, 124 | { 125 | icon: "fal fa-share-alt", 126 | name: "Social", 127 | }, 128 | { 129 | icon: "fal fa-laptop", 130 | name: "E-Spor", 131 | }, 132 | { 133 | icon: "fal fa-palette", 134 | name: "Design", 135 | }, 136 | { 137 | icon: "fal fa-users", 138 | name: "Community", 139 | }, 140 | ], 141 | }, 142 | }, 143 | 144 | server: { 145 | id: "", 146 | invite: "", 147 | roles: { 148 | administrator: "", 149 | moderator: "", 150 | profile: { 151 | sitecreator: "", 152 | booster: "", 153 | sponsor: "", 154 | supporter: "", 155 | partnerRole: "", 156 | }, 157 | codeshare: { 158 | javascript: "", 159 | html: "", 160 | substructure: "", 161 | bdfd: "", // Bot Designer For Discord 162 | fiveInvite: "", 163 | tenInvite: "", 164 | fifteenInvite: "", 165 | twentyInvite: "", 166 | }, 167 | botlist: { 168 | developer: "", 169 | certified_developer: "", 170 | bot: "", // This is not your Bot ID, This is the Role ID Approved Bots get when they join your server 171 | certified_bot: "", 172 | }, 173 | }, 174 | channels: { 175 | codelog: "", 176 | login: "", 177 | webstatus: "", 178 | uptimelog: "", 179 | botlog: "", 180 | votes: "", 181 | reportlog: "" 182 | }, 183 | }, 184 | }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vcodes", 3 | "version": "1.3.2", 4 | "description": "vcodes.xyz", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "dev": "nodemon index.js", 9 | "format": "prettier . --write", 10 | "pretest": "prettier . --check" 11 | }, 12 | "dependencies": { 13 | "@discordjs/rest": "^1.7.1", 14 | "axios": "^0.21.1", 15 | "body-parser": "^1.19.0", 16 | "canvas": "^2.8.0", 17 | "chalk": "^4.1.0", 18 | "cheerio": "^1.0.0-rc.5", 19 | "child_process": "^1.0.2", 20 | "cookie-parser": "^1.4.5", 21 | "cron": "^1.8.2", 22 | "discord-api-types": "^0.37.42", 23 | "discord.js": "^14.11.0", 24 | "ejs": "^3.1.6", 25 | "express": "^4.17.1", 26 | "express-minify-html": "^0.12.0", 27 | "express-minify-html-terser": "^1.0.2", 28 | "express-rate-limit": "^5.2.6", 29 | "express-session": "^1.17.1", 30 | "fs": "^0.0.2", 31 | "geoip-lite": "^1.4.2", 32 | "hastebin-gen": "^2.0.5", 33 | "helmet": "^4.4.1", 34 | "http": "0.0.1-security", 35 | "ipware": "^2.0.0", 36 | "jimp": "^0.16.1", 37 | "jquery": "^3.6.0", 38 | "level-session-store": "^2.2.0", 39 | "marked": "^2.0.0", 40 | "memorystore": "^1.6.4", 41 | "moment": "^2.29.1", 42 | "moment-duration-format": "^2.3.2", 43 | "mongoose": "^5.11.17", 44 | "node-fetch": "^2.6.1", 45 | "parse-ms": "^2.1.0", 46 | "passport": "^0.4.1", 47 | "passport-discord": "^0.1.4", 48 | "path": "^0.12.7", 49 | "quick.db": "7.1.3", 50 | "rate-limit-mongo": "^2.3.1", 51 | "referrer-policy": "^1.2.0", 52 | "request": "^2.88.2", 53 | "socket.io": "^4.0.1", 54 | "sweetalert": "^2.1.2", 55 | "sweetalert2": "10.15.6", 56 | "vcodes.js": "1.0.1-renewed" 57 | }, 58 | "engines": { 59 | "node": "18.x" 60 | }, 61 | "repository": { 62 | "url": "https://github.com/vcodes-xyz/benedict" 63 | }, 64 | "keywords": [ 65 | "vcodes.xyz" 66 | ], 67 | "author": "clqu.live & voiddevs.org", 68 | "devDependencies": { 69 | "nodemon": "^2.0.20", 70 | "prettier": "^2.8.7" 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /run.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | color c 3 | title vCodes.xyz 4 | node index.js -------------------------------------------------------------------------------- /src/commands/botinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const bots = require("../database/models/botlist/bots.js"); 3 | 4 | module.exports = { 5 | name: "botinfo", 6 | description: "Shows the bot information of a bot added to this botlist.", 7 | options: [ 8 | { 9 | name: "id", 10 | description: "The id of the bot you want to see information about.", 11 | type: 3, 12 | required: true 13 | } 14 | ], 15 | 16 | run: async (client, interaction) => { 17 | try { 18 | let id = interaction.options.getString("id"); 19 | const bot = await bots.findOne({ botID: id }); 20 | 21 | if (!bot) return interaction.reply({ 22 | content: "No bot found with this id.", 23 | ephemeral: true 24 | }); 25 | 26 | const embed = new Discord.EmbedBuilder() 27 | .setThumbnail() 28 | .setAuthor({ name: bot.username, iconURL: bot.avatar }) 29 | .setColor("#7289da") 30 | .setDescription( 31 | "**[Vote for " + 32 | bot.username + 33 | "#" + 34 | bot.discrim + 35 | " on the vCodes website](https://vcodes.xyz/bot/" + 36 | bot.botID + 37 | "/vote)**" 38 | ) 39 | .addFields([ 40 | { name: "ID", value: `${bot ? bot.botID : "undefined"}`, inline: true }, 41 | { name: "Username", value: `${bot ? bot.username : "undefined"}`, inline: true }, 42 | { name: "Discriminator", value: `${bot ? bot.discrim : "undefined"}`, inline: true }, 43 | { name: "Votes", value: `${bot ? bot.votes : "0"}`, inline: true }, 44 | { name: "Certificate", value: `${bot ? bot.certificate : "undefined"}`, inline: true }, 45 | { name: "Short Description", value: `${bot ? bot.shortDesc : "undefined"}`, inline: true }, 46 | { name: "Server Count", value: `${bot ? bot.serverCount : "undefined"}`, inline: true }, 47 | { name: "Owner", value: `${bot ? `<@${bot.ownerID}>` : "undefined"}`, inline: true }, 48 | { name: "Co-Owner(s)", value: `${bot ? `${ 49 | bot.coowners.map((x) => `<@${x}>`).join(", ") || "N/A" 50 | }` : "undefined"}`, inline: true }, 51 | { name: "Links", value: `${bot ? `[Invite](https://discord.com/oauth2/authorize?client_id=${bot.botID}&scope=bot applications.commands&permissions=8)${bot.website ? `\n[Website](${bot.website})` : ""}${bot.discord ? `\n[Discord](${bot.discord})` : ""}${bot.github ? `\n[Github](${bot.github})` : ""}` : "undefined"}`, inline: true }, 52 | ]) 53 | 54 | interaction.reply({ embeds: [embed] }); 55 | } catch (error) { 56 | console.log(error) 57 | interaction.reply({ 58 | content: "An error occured while running this command.", 59 | ephemeral: true 60 | }) 61 | } 62 | } 63 | }; -------------------------------------------------------------------------------- /src/commands/bots.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botdata = require("../database/models/botlist/bots.js"); 3 | 4 | module.exports = { 5 | name: "bots", 6 | description: "Shows the bots you have added to this botlist.", 7 | 8 | run: async (client, interaction) => { 9 | try { 10 | let x = await botdata.find(); 11 | 12 | let bots = await x.filter( 13 | (a) => 14 | a.ownerID == interaction.user.id || a.coowners.includes(interaction.user.id) 15 | ); 16 | 17 | if (!bots) return interaction.reply({ 18 | content: "You haven't added any bots to this botlist.", 19 | ephemeral: true 20 | }); 21 | 22 | const embed = new Discord.EmbedBuilder() 23 | .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.avatarURL({ dynamic: true }) }) 24 | .setDescription(`**Total ${bots.length} bots found.**`) 25 | .setColor("#7289da") 26 | .addFields([ 27 | { name: "Bots", value: `${!bots ? "" : bots.map((a) => "<@" + a.botID + ">").join("\n") || "No Bots Found."}`, inline: true } 28 | ]) 29 | 30 | interaction.reply({ embeds: [embed] }); 31 | } catch (error) { 32 | console.log(error) 33 | interaction.reply({ 34 | content: "An error occured while running this command.", 35 | ephemeral: true 36 | }) 37 | } 38 | } 39 | }; -------------------------------------------------------------------------------- /src/commands/queue.js: -------------------------------------------------------------------------------- 1 | const botsdata = require("../database/models/botlist/bots.js"); 2 | const Discord = require('discord.js'); 3 | const roles = global.config.server.roles; 4 | 5 | module.exports = { 6 | name: "queue", 7 | description: "Shows the bots queue.", 8 | 9 | run: async (client, interaction) => { 10 | try { 11 | if (!global.config.bot.owners.includes(interaction.user.id)) return interaction.reply("You are not a member of the staff team.") 12 | 13 | let x = await botsdata.find(); 14 | let bots = await x.filter(a => a.status === "UnApproved") 15 | 16 | const embed = new Discord.EmbedBuilder() 17 | .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.avatarURL({ dynamic: true }) }) 18 | .setDescription(`**Total ${bots.length} bots in queue.**`) 19 | .setColor("#7289da") 20 | .addFields([ 21 | { name: "Bots", value: `${!bots ? "" : bots.map((a) => `bot:${a.username}\nbot invite link (default url): [CLICK Here](https://vcodes.xyz/bot/${a.botID}/invite)\nperm 0 link: [PERM 0](https://discord.com/api/oauth2/authorize?client_id=${a.botID}&permissions=0&scope=bot%20applications.commands)`).join("\n") || "No Bots currently in queue."}`, inline: true } 22 | ]) 23 | 24 | interaction.reply({ embeds: [embed] }); 25 | } catch (error) { 26 | console.log(error) 27 | interaction.reply({ 28 | content: "An error occured while running this command.", 29 | ephemeral: true 30 | }) 31 | } 32 | } 33 | }; -------------------------------------------------------------------------------- /src/commands/reboot.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const fetch = require("node-fetch"); 3 | const { spawn } = require("child_process"); 4 | 5 | module.exports = { 6 | name: "reboot", 7 | description: "Reboots the botlist.", 8 | 9 | run: async (client, interaction) => { 10 | try { 11 | if (!global.config.bot.owners.includes(interaction.user.id)) return interaction.reply("You are not a member of the staff team."); 12 | 13 | const embed = new Discord.EmbedBuilder() 14 | .setAuthor({ name: interaction.user.tag, iconURL: interaction.user.avatarURL({ dynamic: true }) }) 15 | .setDescription(`**Rebooting the botlist.**`) 16 | .setColor("#7289da"); 17 | 18 | const message = await interaction.reply({ embeds: [embed] }); 19 | 20 | setTimeout(() => { 21 | const child = spawn("npm", ["start"], { detached: true, stdio: "inherit" }); 22 | child.unref(); 23 | process.exit(); 24 | }, 1000); 25 | 26 | } catch (error) { 27 | console.log(error); 28 | interaction.reply({ 29 | content: "An error occurred while running this command.", 30 | ephemeral: true 31 | }); 32 | } 33 | } 34 | }; -------------------------------------------------------------------------------- /src/database/connect.js: -------------------------------------------------------------------------------- 1 | const config = require("../../config.js"); 2 | const mongoose = require("mongoose"); 3 | 4 | module.exports = async () => { 5 | mongoose 6 | .connect(config.bot.mongourl, { 7 | useNewUrlParser: true, 8 | useUnifiedTopology: true, 9 | useCreateIndex: true, 10 | useFindAndModify: false, 11 | autoIndex: false, 12 | }) 13 | .then(() => { 14 | console.log("[vcodes.xyz]: Mongoose successfully connected."); 15 | }) 16 | .catch((err) => 17 | console.log( 18 | "[vcodes.xyz]: An error occurred while connecting mongoose.", 19 | err 20 | ) 21 | ); 22 | }; 23 | -------------------------------------------------------------------------------- /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); 8 | -------------------------------------------------------------------------------- /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 | backURL: String, 19 | Date: { type: Date, default: null }, 20 | certificate: String, 21 | votes: { type: Number, default: 0 }, 22 | token: String, 23 | serverCount: Number, 24 | shardCount: Number, 25 | analytics: Object, 26 | analytics_visitors: Number, 27 | analytics_invites: Number, 28 | country: Object, 29 | rates: Object, 30 | webhook: String, 31 | dcwebhook: String, 32 | }); 33 | 34 | module.exports = mongoose.model("bots", hm); 35 | -------------------------------------------------------------------------------- /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); 8 | -------------------------------------------------------------------------------- /src/database/models/botlist/report-apps.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose') 2 | const schema = new mongoose.Schema({ 3 | id: 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); 9 | -------------------------------------------------------------------------------- /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); 12 | -------------------------------------------------------------------------------- /src/database/models/partners.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | let hm = new mongoose.Schema({ 3 | code: { type: String, default: null }, 4 | icon: { type: String, default: null }, 5 | ownerID: { type: String, default: null }, 6 | serverName: { type: String, default: null }, 7 | website: { type: String, default: null }, 8 | description: { type: String, default: null }, 9 | }); 10 | 11 | module.exports = mongoose.model("partners", hm); 12 | -------------------------------------------------------------------------------- /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 | website: { type: String, default: null }, 6 | github: { type: String, default: null }, 7 | twitter: { type: String, default: null }, 8 | instagram: { type: String, default: null }, 9 | }); 10 | 11 | module.exports = mongoose.model("profiles", hm); 12 | -------------------------------------------------------------------------------- /src/database/models/servers/server.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | module.exports = mongoose.model( 3 | "servers", 4 | new mongoose.Schema({ 5 | id: String, 6 | name: String, 7 | icon: String, 8 | ownerID: String, 9 | longDesc: String, 10 | shortDesc: String, 11 | tags: Array, 12 | link: String, 13 | bump: { type: Date, default: null }, 14 | votes: { type: Number, default: 0 }, 15 | bumps: { type: Number, default: 0 }, 16 | analytics: Object, 17 | analytics_visitors: Number, 18 | analytics_joins: Number, 19 | country: Object, 20 | rates: Object, 21 | }) 22 | ); 23 | -------------------------------------------------------------------------------- /src/database/models/servers/user.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | module.exports = mongoose.model( 3 | "user-vote-servers", 4 | new mongoose.Schema({ 5 | id: String, 6 | date: Date, 7 | guild: String, 8 | }) 9 | ); 10 | -------------------------------------------------------------------------------- /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); 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); 11 | -------------------------------------------------------------------------------- /src/fonts/font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoidDevsorg/discord-bot-list/fc3893cd4aa86c77dd760f53ab6dd0c67d396969/src/fonts/font.ttf -------------------------------------------------------------------------------- /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 | 6 | console.log("[vcodes.xyz]: Admin/Ban router loaded."); 7 | 8 | app.get("/admin/userban", global.checkAuth, async (req, res) => { 9 | if (!config.bot.owners.includes(req.user.id)) return res.redirect("../admin"); 10 | let bandata = await banSchema.find(); 11 | res.render("admin/administrator/user-ban.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 | bandata: bandata, 20 | }); 21 | }); 22 | app.post("/admin/userban", global.checkAuth, async (req, res) => { 23 | if (!config.bot.owners.includes(req.user.id)) return res.redirect("../admin"); 24 | new banSchema({ 25 | user: req.body.userID, 26 | sebep: req.body.reason, 27 | yetkili: req.user.id, 28 | }).save(); 29 | return res.redirect("../admin/userban?success=true&message=User banned."); 30 | }); 31 | app.post("/admin/userunban", global.checkAuth, async (req, res) => { 32 | if (!config.bot.owners.includes(req.user.id)) return res.redirect("../admin"); 33 | banSchema.deleteOne( 34 | { 35 | user: req.body.userID, 36 | }, 37 | function (error, user) { 38 | if (error) console.log(error); 39 | } 40 | ); 41 | return res.redirect( 42 | "../admin/userban?success=true&message=User ban removed." 43 | ); 44 | }); 45 | 46 | module.exports = app; 47 | -------------------------------------------------------------------------------- /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("[vcodes.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( 13 | "/admin/certificate/delete/:botID", 14 | global.checkAuth, 15 | async (req, res) => { 16 | let rBody = req.body; 17 | await botsdata.findOneAndUpdate( 18 | { 19 | botID: req.params.botID, 20 | }, 21 | { 22 | $set: { 23 | certificate: "None", 24 | }, 25 | }, 26 | function (err, docs) {} 27 | ); 28 | let botdata = await botsdata.findOne({ 29 | botID: req.params.botID, 30 | }); 31 | client.users.fetch(botdata.botID).then((bota) => { 32 | client.channels.cache 33 | .get(channels.botlog) 34 | .send({ 35 | content: `<@${botdata.ownerID}>'s bot named **${bota.tag}** has not been granted a certificate.` 36 | } 37 | ); 38 | client.users.cache 39 | .get(botdata.ownerID) 40 | .send({ 41 | content: `Your bot named **${bota.tag}** certificate application has been declined.\nReason: **${rBody["reason"]}**` 42 | }); 43 | }); 44 | await appsdata.deleteOne({ 45 | botID: req.params.botID, 46 | }); 47 | let guild = client.guilds.cache.get(config.server.id); 48 | guild.members.cache 49 | .get(botdata.botID) 50 | .roles.remove(roles.botlist.certified_bot); 51 | guild.members.cache 52 | .get(botdata.ownerID) 53 | .roles.remove(roles.botlist.certified_developer); 54 | return res.redirect( 55 | `/admin/certificate-apps?success=true&message=Certificate deleted.` 56 | ); 57 | } 58 | ); 59 | 60 | module.exports = app; 61 | -------------------------------------------------------------------------------- /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 | 8 | console.log("[vcodes.xyz]: Admin/Botlist/Certificate Give router loaded."); 9 | const roles = global.config.server.roles; 10 | const channels = global.config.server.channels; 11 | const client = global.Client; 12 | 13 | app.get( 14 | "/admin/certificate/give/:botID", 15 | global.checkAuth, 16 | async (req, res) => { 17 | await botsdata.findOneAndUpdate( 18 | { 19 | botID: req.params.botID, 20 | }, 21 | { 22 | $set: { 23 | certificate: "Certified", 24 | }, 25 | }, 26 | function (err, docs) {} 27 | ); 28 | let botdata = await botsdata.findOne({ 29 | botID: req.params.botID, 30 | }); 31 | 32 | client.users.fetch(botdata.botID).then((bota) => { 33 | client.channels.cache 34 | .get(channels.botlog) 35 | .send({ 36 | content: `<@${botdata.ownerID}>'s bot named **${bota.tag}** has been granted a certificate.` 37 | }); 38 | client.users.cache 39 | .get(botdata.ownerID) 40 | .send({ 41 | content: `Your bot named **${bota.tag}** has been certified.` 42 | }); 43 | }); 44 | await appsdata.deleteOne({ 45 | botID: req.params.botID, 46 | }); 47 | let guild = client.guilds.cache.get(config.server.id); 48 | guild.members.cache 49 | .get(botdata.botID) 50 | .roles.add(roles.botlist.certified_bot); 51 | guild.members.cache 52 | .get(botdata.ownerID) 53 | .roles.add(roles.botlist.certified_developer); 54 | if (botdata.coowners) { 55 | botdata.coowners.map((a) => { 56 | if (guild.members.cache.get(a)) { 57 | guild.members.cache 58 | .get(a) 59 | .roles.add(roles.botlist.certified_developer); 60 | } 61 | }); 62 | } 63 | return res.redirect( 64 | `/admin/certificate-apps?success=true&message=Certificate gived.&botID=${req.params.botID}` 65 | ); 66 | } 67 | ); 68 | 69 | module.exports = app; 70 | -------------------------------------------------------------------------------- /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("[vcodes.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) 19 | return res.redirect( 20 | "/error?code=404&message=You entered an invalid bot id." 21 | ); 22 | await botsdata.findOneAndUpdate( 23 | { 24 | botID: req.params.botID, 25 | }, 26 | { 27 | $set: { 28 | status: "Approved", 29 | Date: Date.now(), 30 | }, 31 | }, 32 | function (err, docs) {} 33 | ); 34 | client.users.fetch(req.params.botID).then((bota) => { 35 | client.channels.cache 36 | .get(channels.botlog) 37 | .send({ 38 | content: `<@${botdata.ownerID}>'s bot named **${bota.tag}** has been approved. ` 39 | }); 40 | client.users.cache 41 | .get(botdata.ownerID) 42 | .send({ 43 | content: `Your bot named **${bota.tag}** has been approved.` 44 | }); 45 | }); 46 | let guild = client.guilds.cache.get(config.server.id); 47 | guild.members.cache.get(botdata.botID).roles.add(roles.botlist.bot); 48 | guild.members.cache.get(botdata.ownerID).roles.add(roles.botlist.developer); 49 | if (botdata.coowners) { 50 | botdata.coowners.map((a) => { 51 | guild.members.cache.get(a).roles.add(roles.botlist.developer); 52 | }); 53 | } 54 | return res.redirect(`/admin/unapproved?success=true&message=Bot approved.`); 55 | }); 56 | 57 | module.exports = app; 58 | -------------------------------------------------------------------------------- /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("[vcodes.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 21 | .get(channels.botlog) 22 | .send({ 23 | content: `<@${botdata.ownerID}>'s bot named **${botdata.username}** has been declined. ` 24 | }); 25 | client.users.cache 26 | .get(botdata.ownerID) 27 | .send({ 28 | content: `Your bot named **${botdata.username}** has been declined.\nReason: **${rBody["reason"]}**\nAuthorized: **${req.user.username}**` 29 | }); 30 | }); 31 | await botsdata.deleteOne({ 32 | botID: req.params.botID, 33 | ownerID: botdata.ownerID, 34 | }); 35 | return res.redirect(`/admin/unapproved?success=true&message=Bot declined.`); 36 | }); 37 | 38 | module.exports = app; 39 | -------------------------------------------------------------------------------- /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 | const roles = global.config.server.roles; 9 | const channels = global.config.server.channels; 10 | const client = global.Client; 11 | 12 | console.log("[vcodes.xyz]: Admin/Botlist/Delete Bot router loaded."); 13 | 14 | app.get("/admin/delete/:botID", global.checkAuth, async (req, res) => { 15 | const botdata = await botsdata.findOne({ 16 | botID: req.params.botID, 17 | }); 18 | if (!botdata) 19 | return res.redirect( 20 | "/error?code=404&message=You entered an invalid bot id." 21 | ); 22 | let guild = client.guilds.cache.get(config.server.id); 23 | guild.members.cache.get(botdata.botID).roles.remove(roles.bot); 24 | await guild.members.cache.get(botdata.botID).kick(); 25 | await botsdata.deleteOne({ 26 | botID: req.params.botID, 27 | ownerID: botdata.ownerID, 28 | }); 29 | return res.redirect(`/admin/approved?success=true&message=Bot deleted.`); 30 | }); 31 | 32 | module.exports = app; 33 | -------------------------------------------------------------------------------- /src/routers/admin/codeshare/add.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const app = require("express").Router(); 3 | const codesSchema = require("../../../database/models/codes.js"); 4 | const client = global.Client; 5 | const channels = global.config.server.channels, 6 | roles = global.config.server.roles; 7 | function makeid(length) { 8 | var result = ""; 9 | var characters = 10 | "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 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 | console.log("[vcodes.xyz]: Admin/CodeShare/Add router loaded."); 18 | 19 | app.post("/admin/addcode", global.checkAuth, async (req, res) => { 20 | const rBody = req.body; 21 | let kod = makeid(36); 22 | await new codesSchema({ 23 | code: kod, 24 | codeName: rBody["codename"], 25 | codeCategory: rBody["category"], 26 | codeDesc: rBody["codedesc"], 27 | }).save(); 28 | if (rBody["main"]) { 29 | await codesSchema.updateOne( 30 | { 31 | code: kod, 32 | }, 33 | { 34 | $set: { 35 | main: req.body.main, 36 | }, 37 | } 38 | ); 39 | } 40 | if (rBody["commands"]) { 41 | await codesSchema.updateOne( 42 | { 43 | code: kod, 44 | }, 45 | { 46 | $set: { 47 | commands: req.body.commands, 48 | }, 49 | } 50 | ); 51 | } 52 | client.channels.cache 53 | .get(channels.codelog) 54 | .send({ 55 | embeds: [ 56 | new Discord.EmbedBuilder() 57 | .setTitle("New code added!") 58 | .setColor("#00ff00") 59 | .setFooter(config.footer) 60 | .setDescription( 61 | `The user named **[${req.user.username}](https://vcodes.xyz/user/${req.user.id})** added the code named **${rBody["codename"]}** to the system.` 62 | ) 63 | .addFields([ 64 | { name: "Code Link", value: `https://vcodes.xyz/code/${kod}`, inline: true }, 65 | { name: "Code Description", value: rBody["codedesc"], inline: true }, 66 | { name: "Code Category", value: rBody["category"], inline: true }, 67 | ]) 68 | ] 69 | }); 70 | res.redirect("/code/" + kod); 71 | }); 72 | 73 | module.exports = app; 74 | -------------------------------------------------------------------------------- /src/routers/admin/codeshare/delete.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("[vcodes.xyz]: Admin/CodeShare/Delete router loaded."); 8 | 9 | app.post("/admin/deletecode/:code", global.checkAuth, async (req, res) => { 10 | const rBody = req.body; 11 | let kod = req.params.code; 12 | let kodDataFind = await codesSchema.findOne({ code: kod }); 13 | if (!kodDataFind) return res.redirect("/admin/codes"); 14 | client.channels.cache 15 | .get(channels.codelog) 16 | .send({ 17 | embeds: [ 18 | new Discord.EmbedBuilder() 19 | .setTitle("Code deleted!") 20 | .setColor("#00ff00") 21 | .setFooter(config.footer) 22 | .setDescription( 23 | `The user named **[${req.user.username}](https://vcodes.xyz/user/${req.user.id})** deleted the code named **${kodDataFind.codeName}**.` 24 | ) 25 | .addFields([ 26 | { name: "Code Category", value: kodDataFind.codeCategory, inline: true }, 27 | ]) 28 | ] 29 | }); 30 | await codesSchema.deleteOne({ 31 | code: kod, 32 | }); 33 | res.redirect("/codes"); 34 | }); 35 | 36 | module.exports = app; 37 | -------------------------------------------------------------------------------- /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("[vcodes.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 | { 14 | code: kod, 15 | }, 16 | { 17 | $set: { 18 | codeName: rBody["codename"], 19 | codeCategory: rBody["category"], 20 | codeDesc: rBody["codedesc"], 21 | main: rBody["main"], 22 | commands: rBody["commands"], 23 | }, 24 | }, 25 | function (err, docs) {} 26 | ); 27 | client.channels.cache 28 | .get(channels.codelog) 29 | .send({ 30 | embeds: [ 31 | new Discord.EmbedBuilder() 32 | .setTitle("Code edited!") 33 | .setColor("#00ff00") 34 | .setFooter(config.footer) 35 | .setDescription( 36 | `The user named **[${req.user.username}](https://vcodes.xyz/user/${req.user.id})** edited the code named **${rBody["codename"]}**.` 37 | ) 38 | .addFields([ 39 | { name: "Code Link", value: `https://vcodes.xyz/code/${kod}`, inline: true }, 40 | { name: "Code Description", value: rBody["codedesc"], inline: true }, 41 | { name: "Code Category", value: rBody["category"], inline: true }, 42 | ]) 43 | ] 44 | }); 45 | res.redirect("/code/" + kod); 46 | }); 47 | 48 | module.exports = app; 49 | -------------------------------------------------------------------------------- /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("[vcodes.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) 39 | return res.redirect( 40 | "/codes?error=true&message=You entered an invalid code." 41 | ); 42 | res.render("admin/editcode.ejs", { 43 | bot: global.Client, 44 | path: req.path, 45 | config: global.config, 46 | user: req.isAuthenticated() ? req.user : null, 47 | req: req, 48 | roles: global.config.server.roles, 49 | channels: global.config.server.channels, 50 | koddata: koddata, 51 | }); 52 | }); 53 | app.get("/admin/deletecode/:code", global.checkAuth, async (req, res) => { 54 | await codesSchema.deleteOne({ 55 | code: req.params.code, 56 | }); 57 | return res.redirect("/admin/codes?success=true&message=Code deleted."); 58 | }); 59 | 60 | module.exports = app; 61 | -------------------------------------------------------------------------------- /src/routers/admin/index.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | const reportappsdata = require("../../database/models/botlist/report-apps.js"); 4 | const codesSchema = require("../../database/models/codes.js"); 5 | const uptimedata = require("../../database/models/uptime.js"); 6 | const appsdata = require("../../database/models/botlist/certificate-apps.js"); 7 | let sitedatalari = require("../../database/models/analytics-site.js"); 8 | 9 | console.log("[vcodes.xyz]: Admin/Index router loaded."); 10 | app.get("/admin", global.checkAuth, async (req, res) => { 11 | const botdata = await botsdata.find(); 12 | const codedata = await codesSchema.find(); 13 | const udata = await uptimedata.find(); 14 | let siteD = await sitedatalari.findOne({ id: config.website.clientID }); 15 | res.render("admin/index.ejs", { 16 | bot: global.Client, 17 | path: req.path, 18 | config: global.config, 19 | user: req.isAuthenticated() ? req.user : null, 20 | req: req, 21 | roles: global.config.server.roles, 22 | channels: global.config.server.channels, 23 | codedata: codedata, 24 | botdata: botdata, 25 | udata: udata, 26 | siteD: siteD, 27 | }); 28 | }); 29 | app.get("/admin/unapproved", global.checkAuth, async (req, res) => { 30 | const botdata = await botsdata.find(); 31 | res.render("admin/unapproved.ejs", { 32 | bot: global.Client, 33 | path: req.path, 34 | config: global.config, 35 | user: req.isAuthenticated() ? req.user : null, 36 | req: req, 37 | roles: global.config.server.roles, 38 | channels: global.config.server.channels, 39 | botdata: botdata, 40 | }); 41 | }); 42 | app.get("/admin/approved", global.checkAuth, async (req, res) => { 43 | const botdata = await botsdata.find(); 44 | res.render("admin/approved.ejs", { 45 | bot: global.Client, 46 | path: req.path, 47 | config: global.config, 48 | user: req.isAuthenticated() ? req.user : null, 49 | req: req, 50 | roles: global.config.server.roles, 51 | channels: global.config.server.channels, 52 | botdata: botdata, 53 | }); 54 | }); 55 | app.get("/admin/certificate-apps", checkAuth, async (req, res) => { 56 | const botdata = await botsdata.find(); 57 | const apps = await appsdata.find(); 58 | res.render("admin/certificate-apps.ejs", { 59 | bot: global.Client, 60 | path: req.path, 61 | config: global.config, 62 | user: req.isAuthenticated() ? req.user : null, 63 | req: req, 64 | roles: global.config.server.roles, 65 | channels: global.config.server.channels, 66 | botdata: botdata, 67 | apps: apps, 68 | }); 69 | }); 70 | app.get("/admin/decline/:botID", global.checkAuth, async (req, res) => { 71 | const botdata = await botsdata.findOne({ botID: req.params.botID }); 72 | if (!botdata) 73 | return res.redirect( 74 | "/error?code=404&message=You entered an invalid bot id." 75 | ); 76 | res.render("admin/decline.ejs", { 77 | bot: global.Client, 78 | path: req.path, 79 | config: global.config, 80 | user: req.isAuthenticated() ? req.user : null, 81 | req: req, 82 | roles: global.config.server.roles, 83 | channels: global.config.server.channels, 84 | botdata: botdata, 85 | }); 86 | }); 87 | 88 | app.get("/admin/certified-bots", global.checkAuth, async (req, res) => { 89 | const botdata = await botsdata.find(); 90 | res.render("admin/certified-bots.ejs", { 91 | bot: global.Client, 92 | path: req.path, 93 | config: global.config, 94 | user: req.isAuthenticated() ? req.user : null, 95 | req: req, 96 | roles: global.config.server.roles, 97 | channels: global.config.server.channels, 98 | botdata: botdata, 99 | }); 100 | }); 101 | app.get( 102 | "/admin/certificate/delete/:botID", 103 | global.checkAuth, 104 | async (req, res) => { 105 | const botdata = await botsdata.findOne({ 106 | botID: req.params.botID, 107 | }); 108 | if (!botdata) 109 | return res.redirect( 110 | "/error?code=404&message=You entered an invalid bot id." 111 | ); 112 | res.render("admin/certificate-delete.ejs", { 113 | bot: global.Client, 114 | path: req.path, 115 | config: global.config, 116 | user: req.isAuthenticated() ? req.user : null, 117 | req: req, 118 | roles: global.config.server.roles, 119 | channels: global.config.server.channels, 120 | botdata: botdata, 121 | }); 122 | } 123 | ); 124 | module.exports = app; 125 | -------------------------------------------------------------------------------- /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 path = require("path"); 5 | console.log("[vcodes.xyz]: Admin/Partner router loaded."); 6 | const client = global.Client; 7 | const partnerdb = require(`${process.cwd()}/src/database/models/partners.js`); 8 | 9 | app.get("/admin/partners", global.checkAuth, async (req, res) => { 10 | if (!config.bot.owners.includes(req.user.id)) return res.redirect("../admin"); 11 | let x = await partnerdb.find(); 12 | res.render("admin/administrator/partners.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 | partners: x, 21 | }); 22 | }); 23 | app.post("/admin/partners", global.checkAuth, async (req, res) => { 24 | try { 25 | if (!config.bot.owners.includes(req.user.id)) return res.redirect("../admin"); 26 | await new partnerdb({ 27 | code: createID(36), 28 | icon: req.body.icon || null, 29 | ownerID: req.body.ownerID || null, 30 | serverName: req.body.serverName || null, 31 | website: req.body.Website || null, 32 | description: req.body.partnerDesc || null, 33 | }).save(); 34 | let x = client.guilds.cache 35 | .get(config.server.id) 36 | .members.cache.get(req.body.ownerID); 37 | if (x) { 38 | x.roles.add(roles.profile.partnerRole); 39 | } 40 | return res.redirect("/admin/partners?success=true&message=Partner added."); 41 | } catch (e) { 42 | console.log(e); 43 | return res.redirect("/admin/partners?error=true&message=An unknown error occurred."); 44 | } 45 | }); 46 | 47 | module.exports = app; 48 | 49 | function createID(length) { 50 | var result = ""; 51 | var characters = "123456789"; 52 | var charactersLength = characters.length; 53 | for (var i = 0; i < length; i++) { 54 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 55 | } 56 | return result; 57 | } 58 | -------------------------------------------------------------------------------- /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("[vcodes.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; 30 | -------------------------------------------------------------------------------- /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("[vcodes.xyz]: Api router loaded."); 7 | 8 | app.get("/api", async (req, res) => { 9 | res.json({ 10 | Hello: "World", 11 | "Template By": "vcodes.xyz", 12 | Author: "Claudette", 13 | }); 14 | }); 15 | app.get("/api/bots/:botID", async (req, res) => { 16 | const botinfo = await botsdata.findOne({ 17 | botID: req.params.botID, 18 | }); 19 | if (!botinfo) 20 | return res.json({ 21 | error: "You entered invalid bot id.", 22 | }); 23 | res.json({ 24 | avatar: botinfo.avatar, 25 | botID: botinfo.botID, 26 | username: botinfo.username, 27 | discrim: botinfo.discrim, 28 | shortDesc: botinfo.shortDesc, 29 | prefix: botinfo.prefix, 30 | votes: botinfo.votes, 31 | ownerID: botinfo.ownerID, 32 | owner: botinfo.ownerName, 33 | coowners: botinfo.coowners, 34 | tags: botinfo.tags, 35 | longDesc: botinfo.longDesc, 36 | certificate: botinfo.certificate, 37 | github: botinfo.github, 38 | support: botinfo.support, 39 | website: botinfo.website, 40 | }); 41 | }); 42 | app.get("/api/bots/check/:userID", async (req, res) => { 43 | let token = req.header("Authorization"); 44 | if (!token) 45 | return res.json({ 46 | error: "You must enter a bot token.", 47 | }); 48 | if (!req.params.userID) 49 | return res.json({ 50 | error: "You must enter a user id.", 51 | }); 52 | const botdata = await botsdata.findOne({ 53 | token: token, 54 | }); 55 | if (!botdata) 56 | return res.json({ 57 | error: "You entered an invalid bot token.", 58 | }); 59 | const vote = await voteSchema.findOne({ 60 | bot: botdata.botID, 61 | user: req.params.userID, 62 | }); 63 | if (vote) { 64 | res.json({ 65 | voted: true, 66 | }); 67 | } else { 68 | res.json({ 69 | voted: false, 70 | }); 71 | } 72 | }); 73 | app.post("/api/bots/stats", async (req, res) => { 74 | let token = req.header("Authorization"); 75 | if (!token) 76 | return res.json({ 77 | error: "You must enter a bot token.", 78 | }); 79 | const botdata = await botsdata.findOne({ 80 | token: token, 81 | }); 82 | if (!botdata) 83 | return res.json({ 84 | error: "You entered an invalid bot token.", 85 | }); 86 | if (botdata) { 87 | await botsdata.updateOne( 88 | { 89 | botID: botdata.botID, 90 | }, 91 | { 92 | $set: { 93 | serverCount: req.header("serverCount"), 94 | }, 95 | } 96 | ); 97 | if (req.header("shardCount")) { 98 | await botsdata.updateOne( 99 | { 100 | botID: botdata.botID, 101 | }, 102 | { 103 | $set: { 104 | shardCount: req.header("shardCount"), 105 | }, 106 | } 107 | ); 108 | } 109 | } 110 | }); 111 | 112 | app.post("/api/search", async (req, res) => { 113 | let key = req.body.key; 114 | if (key.length <= 0) 115 | return res.json({ 116 | status: true, 117 | data: [], 118 | }); 119 | let bots = require("../../database/models/botlist/bots.js"); 120 | let bot = await bots.find(); 121 | let data = await bot 122 | .filter( 123 | (d) => 124 | d.status == "Approved" && 125 | d.username.toLowerCase().includes(key.toLowerCase()) 126 | ) 127 | .sort((a, b) => b.votes - a.votes); 128 | res.json({ 129 | status: true, 130 | data: data, 131 | }); 132 | }); 133 | app.post("/api/search/servers", async (req, res) => { 134 | let key = req.body.key; 135 | if (key.length <= 0) 136 | return res.json({ 137 | status: true, 138 | data: [], 139 | }); 140 | let servers = require("../../database/models/servers/server.js"); 141 | let server = await servers.find(); 142 | let data = await server 143 | .filter( 144 | (d) => 145 | global.clientSL.guilds.cache.get(d.id) && 146 | d.name.toLowerCase().includes(key.toLowerCase()) 147 | ) 148 | .sort( 149 | (a, b) => 150 | global.clientSL.guilds.cache.get(b).memberCount - 151 | global.clientSL.guilds.cache.get(a).memberCount 152 | ); 153 | res.json({ 154 | status: true, 155 | data: data, 156 | }); 157 | }); 158 | 159 | module.exports = app; 160 | -------------------------------------------------------------------------------- /src/routers/botlist/addbot.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 | console.log("[vcodes.xyz]: Botlist/Add Bot router loaded."); 6 | 7 | app.get("/addbot", global.checkAuth, async (req, res) => { 8 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id)) 9 | return res.redirect( 10 | "/error?code=403&message=To do this, you have to join our discord server." 11 | ); 12 | res.render("botlist/addbot.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 | }); 21 | }); 22 | 23 | app.post("/addbot", global.checkAuth, async (req, res) => { 24 | let rBody = req.body; 25 | let botvarmi = await botsdata.findOne({ botID: rBody["botID"] }); 26 | if (botvarmi) 27 | return res.redirect( 28 | "/error?code=404&message=The bot you are trying to add exists in the system." 29 | ); 30 | 31 | client.users.fetch(req.body.botID).then(async (a) => { 32 | if (a.bot === false) 33 | return res.redirect( 34 | "/error?code=404&message=You entered an invalid bot id." 35 | ); 36 | if (!a) 37 | return res.redirect( 38 | "/error?code=404&message=You entered an invalid bot id." 39 | ); 40 | if (rBody["coowners"]) { 41 | if (String(rBody["coowners"]).split(",").length > 3) 42 | return res.redirect( 43 | "?error=true&message=You can add up to 3 CO-Owners.." 44 | ); 45 | if (String(rBody["coowners"]).split(",").includes(req.user.id)) 46 | return res.redirect( 47 | "?error=true&message=You cannot add yourself to other CO-Owners." 48 | ); 49 | } 50 | await new botsdata({ 51 | botID: rBody["botID"], 52 | ownerID: req.user.id, 53 | ownerName: req.user.usename, 54 | username: a.username, 55 | discrim: a.discriminator, 56 | avatar: a.avatarURL(), 57 | prefix: rBody["prefix"], 58 | longDesc: rBody["longDesc"], 59 | shortDesc: rBody["shortDesc"], 60 | status: "UnApproved", 61 | tags: rBody["tags"], 62 | certificate: "None", 63 | token: makeToken(128), 64 | }).save(); 65 | if (rBody["background"]) { 66 | await botsdata.findOneAndUpdate( 67 | { botID: rBody["botID"] }, 68 | { $set: { backURL: rBody["background"] } }, 69 | function (err, docs) {} 70 | ); 71 | } 72 | if (rBody["github"]) { 73 | await botsdata.findOneAndUpdate( 74 | { botID: rBody["botID"] }, 75 | { $set: { github: rBody["github"] } }, 76 | function (err, docs) {} 77 | ); 78 | } 79 | if (rBody["website"]) { 80 | await botsdata.findOneAndUpdate( 81 | { botID: rBody["botID"] }, 82 | { $set: { website: rBody["website"] } }, 83 | function (err, docs) {} 84 | ); 85 | } 86 | if (rBody["support"]) { 87 | await botsdata.findOneAndUpdate( 88 | { botID: rBody["botID"] }, 89 | { $set: { support: rBody["support"] } }, 90 | function (err, docs) {} 91 | ); 92 | } 93 | if (rBody["coowners"]) { 94 | if (String(rBody["coowners"]).split(",").length > 3) 95 | return res.redirect( 96 | "?error=true&message=You can add up to 3 CO-Owners.." 97 | ); 98 | if (String(rBody["coowners"]).split(",").includes(req.user.id)) 99 | return res.redirect( 100 | "?error=true&message=You cannot add yourself to other CO-Owners." 101 | ); 102 | await botsdata.findOneAndUpdate( 103 | { botID: rBody["botID"] }, 104 | { $set: { coowners: String(rBody["coowners"]).split(",") } }, 105 | function (err, docs) {} 106 | ); 107 | } 108 | }); 109 | client.users.fetch(rBody["botID"]).then((a) => { 110 | client.channels.cache 111 | .get(channels.botlog) 112 | .send({ 113 | content: `<@${req.user.id}> added **${a.tag}**` 114 | }); 115 | res.redirect( 116 | `?success=true&message=Your bot has been successfully added to the system.&botID=${rBody["botID"]}` 117 | ); 118 | }); 119 | }); 120 | 121 | module.exports = app; 122 | 123 | function makeToken(length) { 124 | var result = ""; 125 | var characters = 126 | "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 127 | var charactersLength = characters.length; 128 | for (var i = 0; i < length; i++) { 129 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 130 | } 131 | return result; 132 | } 133 | -------------------------------------------------------------------------------- /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 | console.log("[vcodes.xyz]: Botlist/Certificate Application router loaded."); 6 | 7 | app.get("/certification/apply", global.checkAuth, async (req, res) => { 8 | const userbots = await botsdata.find({ 9 | ownerID: req.user.id, 10 | }); 11 | res.render("botlist/apps/certificate-app.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 | userbots: userbots, 20 | }); 21 | }); 22 | app.post("/certification/apply", global.checkAuth, async (req, res) => { 23 | const rBody = req.body; 24 | let botdata = await botsdata.findOne({ 25 | botID: rBody["bot"], 26 | }); 27 | if (!botdata) 28 | return res.redirect("/error?code=404&message=You entered invalid bot id."); 29 | // if(req.user.id !== botdata.ownerID || !botdata.coowners.includes(req.user.id)) return res.redirect('/error?code=404&message=You entered invalid bot id.'); 30 | if (botdata.certificate === "Certified") 31 | return res.redirect("/error?code=401&message=This bot already certified."); 32 | let findBot = await apps.findOne({ botID: rBody["bot"] }); 33 | if (findBot) 34 | return res.redirect( 35 | "/error?code=401&message=This bot application already applied." 36 | ); 37 | new apps({ 38 | botID: rBody["bot"], 39 | future: rBody["future"], 40 | }).save(); 41 | res.redirect( 42 | "/bots?success=true&message=Certificate application applied.&botID=" + 43 | rBody["bot"] 44 | ); 45 | client.channels.cache 46 | .get(global.config.server.channels.botlog) 47 | .send({ 48 | content: `User **${req.user.username}** requested a certificate for her bot named **${botdata.username}**.` 49 | }); 50 | }); 51 | 52 | module.exports = app; 53 | -------------------------------------------------------------------------------- /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 | const Discord = require("discord.js"); 6 | 7 | console.log("[vcodes.xyz]: Botlist/Report router loaded."); 8 | 9 | app.get("/bot/:botID/report", global.checkAuth, async (req, res) => { 10 | const userbots = await botsdata.find({ 11 | botID: req.params.botID 12 | }) 13 | const checkreporter = await apps.find({ 14 | reporterID: req.user.id 15 | }) 16 | if (!userbots) return res.redirect('/error?code=401&message=There is no bot on our website with this id.'); 17 | let botdata = await botsdata.findOne({ 18 | botID: req.params.botID 19 | }) 20 | res.render("botlist/apps/report.ejs", { 21 | bot: global.Client, 22 | path: req.path, 23 | config: global.config, 24 | user: req.isAuthenticated() ? req.user : null, 25 | req: req, 26 | roles: global.config.server.roles, 27 | channels: global.config.server.channels, 28 | userbots: userbots, 29 | botdata: botdata 30 | }) 31 | }); 32 | app.post("/bot/:botID/report", global.checkAuth, async (req, res) => { 33 | const rBody = req.body; 34 | const checkreporter = await apps.find({ 35 | reporterID: req.user.id 36 | }) 37 | if (rBody['tags'] == "Choose one...") return res.redirect("/error?code=404&message=Please Choose a tag."); 38 | let findBot = await apps.findOne({ botID: req.params.botID }); 39 | let botdata = await botsdata.findOne({ 40 | botID: req.params.botID 41 | }) 42 | await new apps({ 43 | reporterID : req.user.id, 44 | id: req.params.botID, 45 | username: botdata.username, 46 | reason: rBody['reason'], 47 | report: "applied" 48 | }).save() 49 | res.redirect("/bots?success=true&message=You have reported the bot.&botID=" + req.params.botID) 50 | let reports = await apps.findOne({ botID: req.params.botID }); 51 | const embed = new Discord.EmbedBuilder() 52 | .setDescription("Report (Bot)") 53 | .setColor("#00ff00") 54 | .addFields([ 55 | { name: "Reporter", value: req.user.username+'\`` ('+req.user.id+')\``' || "undefined", inline: true }, 56 | { name: "Bot ID", value: req.params.botID || "undefined", inline: true }, 57 | { name: "Username", value: botdata.username || "undefined", inline: true }, 58 | { name: "Reason:", value: reports.reason || "undefined", inline: true } 59 | ]) 60 | await client.channels.cache.get(global.config.server.channels.reportlog).send({ 61 | embeds: [embed] 62 | }) 63 | }); 64 | 65 | 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("[vcodes.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) 13 | return res.redirect( 14 | "/error?code=404&message=You entered an invalid bot id." 15 | ); 16 | if ( 17 | req.user.id == botdata.ownerID || 18 | botdata.coowners.includes(req.user.id) 19 | ) { 20 | res.render("botlist/bot/bot-analytics.ejs", { 21 | bot: global.Client, 22 | path: req.path, 23 | config: global.config, 24 | user: req.isAuthenticated() ? req.user : null, 25 | req: req, 26 | roles: global.config.server.roles, 27 | channels: global.config.server.channels, 28 | botdata: botdata, 29 | }); 30 | } else { 31 | return res.redirect( 32 | "/error?code=404&message=You entered an invalid bot id." 33 | ); 34 | } 35 | }); 36 | 37 | module.exports = app; 38 | -------------------------------------------------------------------------------- /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("[vcodes.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) 13 | return res.redirect( 14 | "/error?code=404&message=You entered an invalid bot id." 15 | ); 16 | if ( 17 | req.user.id == botdata.ownerID || 18 | botdata.coowners.includes(req.user.id) 19 | ) { 20 | res.render("botlist/bot/bot-edit.ejs", { 21 | bot: global.Client, 22 | path: req.path, 23 | config: global.config, 24 | user: req.isAuthenticated() ? req.user : null, 25 | req: req, 26 | roles: global.config.server.roles, 27 | channels: global.config.server.channels, 28 | botdata: botdata, 29 | }); 30 | } else { 31 | res.redirect( 32 | "/error?code=404&message=To edit this bot, you must be one of its owners." 33 | ); 34 | } 35 | }); 36 | 37 | app.post("/bot/:botID/edit", global.checkAuth, async (req, res) => { 38 | let rBody = req.body; 39 | let botdata = await botsdata.findOne({ 40 | botID: req.params.botID, 41 | }); 42 | if (String(rBody["coowners"]).split(",").length > 3) 43 | return res.redirect("?error=true&message=You can add up to 3 CO-Owners.."); 44 | if (String(rBody["coowners"]).split(",").includes(req.user.id)) 45 | return res.redirect( 46 | "?error=true&message=You cannot add yourself to other CO-Owners." 47 | ); 48 | await botsdata.findOneAndUpdate( 49 | { 50 | botID: req.params.botID, 51 | }, 52 | { 53 | $set: { 54 | botID: req.params.botID, 55 | ownerID: botdata.ownerID, 56 | prefix: rBody["prefix"], 57 | longDesc: rBody["longDesc"], 58 | shortDesc: rBody["shortDesc"], 59 | tags: rBody["tags"], 60 | github: rBody["github"], 61 | website: rBody["website"], 62 | support: rBody["support"], 63 | coowners: String(rBody["coowners"]).split(","), 64 | backURL: rBody["background"], 65 | }, 66 | }, 67 | function (err, docs) {} 68 | ); 69 | client.users.fetch(req.params.botID).then((a) => { 70 | client.channels.cache 71 | .get(channels.botlog) 72 | .send({ 73 | content: `<@${req.user.id}> edited **${a.tag}**` 74 | }); 75 | res.redirect( 76 | `?success=true&message=Your bot has been successfully edited.&botID=${req.params.botID}` 77 | ); 78 | }); 79 | }); 80 | 81 | module.exports = app; 82 | -------------------------------------------------------------------------------- /src/routers/botlist/mini.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | 4 | console.log("[vcodes.xyz]: Botlist/Mini router loaded."); 5 | 6 | app.get("/certification", async (req, res) => { 7 | res.render("botlist/apps/certification.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("/bots", async (req, res) => { 31 | let page = req.query.page || 1; 32 | let data = 33 | (await botsdata.find()) || 34 | (await botsdata.find().filter((b) => b.status === "Approved")); 35 | if (page < 1) return res.redirect(`/bots`); 36 | if (data.length <= 0) return res.redirect("/"); 37 | if (page > Math.ceil(data.length / 6)) return res.redirect(`/bots`); 38 | if (Math.ceil(data.length / 6) < 1) { 39 | page = 1; 40 | } 41 | res.render("botlist/bots.ejs", { 42 | bot: global.Client, 43 | path: req.path, 44 | config: global.config, 45 | user: req.isAuthenticated() ? req.user : null, 46 | req: req, 47 | roles: global.config.server.roles, 48 | channels: global.config.server.channels, 49 | data: data, 50 | page: page, 51 | }); 52 | }); 53 | 54 | app.get("/bots/certified", async (req, res) => { 55 | let page = req.query.page || 1; 56 | let x = await botsdata.find(); 57 | let data = x.filter((b) => b.certificate === "Certified"); 58 | if (page < 1) return res.redirect(`/bots`); 59 | if (data.length <= 0) return res.redirect("/"); 60 | if (page > Math.ceil(data.length / 6)) return res.redirect(`/bots`); 61 | if (Math.ceil(data.length / 6) < 1) { 62 | page = 1; 63 | } 64 | res.render("botlist/bots-certified.ejs", { 65 | bot: global.Client, 66 | path: req.path, 67 | config: global.config, 68 | user: req.isAuthenticated() ? req.user : null, 69 | req: req, 70 | roles: global.config.server.roles, 71 | channels: global.config.server.channels, 72 | data: data, 73 | page: page, 74 | }); 75 | }); 76 | 77 | app.get("/search", async (req, res) => { 78 | let page = req.query.page || 1; 79 | let x = await botsdata.find(); 80 | let data = x.filter( 81 | (a) => 82 | (a.status == "Approved" && a.username.includes(req.query.q)) || 83 | a.shortDesc.includes(req.query.q) 84 | ); 85 | if (page < 1) return res.redirect(`/bots`); 86 | if (data.length <= 0) return res.redirect("/"); 87 | if (page > Math.ceil(data.length / 6)) return res.redirect(`/bots`); 88 | if (Math.ceil(data.length / 6) < 1) { 89 | page = 1; 90 | } 91 | res.render("botlist/search.ejs", { 92 | bot: global.Client, 93 | path: req.path, 94 | config: global.config, 95 | user: req.isAuthenticated() ? req.user : null, 96 | req: req, 97 | roles: global.config.server.roles, 98 | channels: global.config.server.channels, 99 | data: data, 100 | page: page, 101 | }); 102 | }); 103 | 104 | app.get("/tags", async (req, res) => { 105 | res.render("botlist/tags.ejs", { 106 | bot: global.Client, 107 | path: req.path, 108 | config: global.config, 109 | user: req.isAuthenticated() ? req.user : null, 110 | req: req, 111 | roles: global.config.server.roles, 112 | channels: global.config.server.channels, 113 | }); 114 | }); 115 | 116 | app.get("/tag/:tag", async (req, res) => { 117 | let page = req.query.page || 1; 118 | let x = await botsdata.find(); 119 | let data = x.filter( 120 | (a) => a.status == "Approved" && a.tags.includes(req.params.tag) 121 | ); 122 | if (page < 1) return res.redirect(`/tag/` + req.params.tag); 123 | if (data.length <= 0) return res.redirect("/"); 124 | if (page > Math.ceil(data.length / 6)) 125 | return res.redirect(`/tag/` + req.params.tag); 126 | if (Math.ceil(data.length / 6) < 1) { 127 | page = 1; 128 | } 129 | res.render("botlist/tag.ejs", { 130 | bot: global.Client, 131 | path: req.path, 132 | config: global.config, 133 | user: req.isAuthenticated() ? req.user : null, 134 | req: req, 135 | roles: global.config.server.roles, 136 | channels: global.config.server.channels, 137 | page: page, 138 | data: data, 139 | }); 140 | }); 141 | 142 | module.exports = app; 143 | -------------------------------------------------------------------------------- /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("[vcodes.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) 13 | return res.redirect( 14 | "/error?code=404&message=You entered an invalid bot id." 15 | ); 16 | if (req.user) { 17 | if ( 18 | !req.user.id === botdata.ownerID || 19 | req.user.id.includes(botdata.coowners) 20 | ) { 21 | if (botdata.status != "Approved") 22 | return res.redirect( 23 | "/error?code=404&message=You entered an invalid bot id." 24 | ); 25 | } 26 | } 27 | res.render("botlist/vote.ejs", { 28 | bot: global.Client, 29 | path: req.path, 30 | config: global.config, 31 | user: req.isAuthenticated() ? req.user : null, 32 | req: req, 33 | botdata: botdata, 34 | roles: global.config.server.roles, 35 | channels: global.config.server.channels, 36 | }); 37 | }); 38 | app.post("/bot/:botID/vote", global.checkAuth, async (req, res) => { 39 | const votes = require("../../database/models/botlist/vote.js"); 40 | let botdata = await botsdata.findOne({ 41 | botID: req.params.botID, 42 | }); 43 | let x = await votes.findOne({ 44 | user: req.user.id, 45 | bot: req.params.botID, 46 | }); 47 | if (x) 48 | return res.redirect("/error?code=400&message=You can vote every 12 hours."); 49 | await votes.findOneAndUpdate( 50 | { 51 | bot: req.params.botID, 52 | user: req.user.id, 53 | }, 54 | { 55 | $set: { 56 | Date: Date.now(), 57 | ms: 43200000, 58 | }, 59 | }, 60 | { 61 | upsert: true, 62 | } 63 | ); 64 | await botsdata.findOneAndUpdate( 65 | { 66 | botID: req.params.botID, 67 | }, 68 | { 69 | $inc: { 70 | votes: 1, 71 | }, 72 | } 73 | ); 74 | if (botdata.dcwebhook) { 75 | const webhook = require("webhook-discord"); 76 | 77 | const Hook = new webhook.Webhook(botdata.dcwebhook); 78 | const msg = new webhook.MessageBuilder() 79 | .setName("Vcodes Votes Manager") 80 | .setAvatar(client.user.displayAvatarURL()) 81 | .setAuthor( 82 | "Vote Logs", 83 | client.user.displayAvatarURL(), 84 | "https://vcodes.xyz" 85 | ) 86 | .setColor("#800080") 87 | .addField( 88 | `\`${botdata.username}\` just got upvoted!`, 89 | `**VoterID:** ${req.user.id}\n**VoterTag:** ${req.user.username}#${ 90 | req.user.discriminator 91 | }\n**Total Votes:** ${botdata.votes + 1}` 92 | ); 93 | Hook.send(msg); 94 | } 95 | if (botdata.webhook) { 96 | const fetch = require("node-fetch"); 97 | 98 | var requestOptions = { 99 | method: "POST", // Choose the appropriate method 100 | headers: { 101 | authorization: `${botdata.token}`, 102 | "Content-Type": "application/json", 103 | }, 104 | body: JSON.stringify({ 105 | user: `${req.user.username}`, 106 | bot: `${botdata.username}`, 107 | votes: `${botdata.votes + 1}`, 108 | test: "no", 109 | }), // Replace this number with the server count 110 | }; 111 | await fetch(botdata.webhook, requestOptions); 112 | } 113 | client.channels.cache 114 | .get(channels.votes) 115 | .send({ 116 | content: `**${req.user.username}** voted **${botdata.username}** **\`(${botdata.votes + 1} votes)\`**` 117 | }); 118 | if (botdata.votes + 1 >= 100) { 119 | client.channels.cache 120 | .get(channels.votes) 121 | .send({ 122 | content: `:tada: The bot named **${botdata.username}** has reached 100 votes!` 123 | }); 124 | } 125 | return res.redirect( 126 | `/bot/${req.params.botID}/vote?success=true&message=You voted successfully. You can vote again after 12 hours.` 127 | ); 128 | }); 129 | 130 | module.exports = app; 131 | -------------------------------------------------------------------------------- /src/routers/codeshare/categories.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const codesSchema = require("../../database/models/codes.js"); 3 | 4 | console.log("[vcodes.xyz]: Code Share/Categories router loaded."); 5 | 6 | app.get("/categories", global.checkAuth, async (req, res) => { 7 | res.render("codeshare/codes/categories.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 | data: await codesSchema.find(), 16 | }); 17 | }); 18 | 19 | module.exports = app; 20 | -------------------------------------------------------------------------------- /src/routers/codeshare/list.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const codesSchema = require("../../database/models/codes.js"); 3 | 4 | console.log("[vcodes.xyz]: Code Share/List router loaded."); 5 | 6 | app.get("/list/:type", global.checkAuth, async (req, res) => { 7 | res.render("codeshare/codes/codelist.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 | data: await codesSchema.find(), 16 | }); 17 | }); 18 | 19 | module.exports = app; 20 | -------------------------------------------------------------------------------- /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("[vcodes.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) 13 | return res.redirect( 14 | "/codes/list?error=true&message=You entered an invalid code." 15 | ); 16 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id)) 17 | return res.redirect( 18 | "/error?code=403&message=To do this, you have to join our discord server." 19 | ); 20 | if (koddata.codeCategory == "javascript") { 21 | if ( 22 | !client.guilds.cache 23 | .get(config.server.id) 24 | .members.cache.get(req.user.id) 25 | .roles.cache.get(config.server.roles.codeshare.javascript) 26 | ) 27 | return res.redirect( 28 | "/error?code=403&message=You is not competent to do this." 29 | ); 30 | } 31 | if (koddata.codeCategory == "html") { 32 | if ( 33 | !client.guilds.cache 34 | .get(config.server.id) 35 | .members.cache.get(req.user.id) 36 | .roles.cache.get(config.server.roles.codeshare.html) 37 | ) 38 | return res.redirect( 39 | "/error?code=403&message=You is not competent to do this." 40 | ); 41 | } 42 | if (koddata.codeCategory == "subs") { 43 | if ( 44 | !client.guilds.cache 45 | .get(config.server.id) 46 | .members.cache.get(req.user.id) 47 | .roles.cache.get(config.server.roles.codeshare.substructure) 48 | ) 49 | return res.redirect( 50 | "/error?code=403&message=You is not competent to do this." 51 | ); 52 | } 53 | if (koddata.codeCategory == "5invites") { 54 | if ( 55 | !client.guilds.cache 56 | .get(config.server.id) 57 | .members.cache.get(req.user.id) 58 | .roles.cache.get(config.server.roles.codeshare.fiveInvite) 59 | ) 60 | return res.redirect( 61 | "/error?code=403&message=You is not competent to do this." 62 | ); 63 | } 64 | if (koddata.codeCategory == "10invites") { 65 | if ( 66 | !client.guilds.cache 67 | .get(config.server.id) 68 | .members.cache.get(req.user.id) 69 | .roles.cache.get(config.server.roles.codeshare.tenInvite) 70 | ) 71 | return res.redirect( 72 | "/error?code=403&message=You is not competent to do this." 73 | ); 74 | } 75 | if (koddata.codeCategory == "15invites") { 76 | if ( 77 | !client.guilds.cache 78 | .get(config.server.id) 79 | .members.cache.get(req.user.id) 80 | .roles.cache.get(config.server.roles.codeshare.fifteenInvite) 81 | ) 82 | return res.redirect( 83 | "/error?code=403&message=You is not competent to do this." 84 | ); 85 | } 86 | if (koddata.codeCategory == "20invites") { 87 | if ( 88 | !client.guilds.cache 89 | .get(config.server.id) 90 | .members.cache.get(req.user.id) 91 | .roles.cache.get(config.server.roles.codeshare.twentyInvite) 92 | ) 93 | return res.redirect( 94 | "/error?code=403&message=You is not competent to do this." 95 | ); 96 | } 97 | if (koddata.codeCategory == "bdfd") { 98 | if ( 99 | !client.guilds.cache 100 | .get(config.server.id) 101 | .members.cache.get(req.user.id) 102 | .roles.cache.get(config.server.roles.codeshare.bdfd) 103 | ) 104 | return res.redirect( 105 | "/error?code=403&message=You is not competent to do this." 106 | ); 107 | } 108 | res.render("codeshare/codeview.ejs", { 109 | bot: global.Client, 110 | path: req.path, 111 | config: global.config, 112 | user: req.isAuthenticated() ? req.user : null, 113 | req: req, 114 | roles: global.config.server.roles, 115 | channels: global.config.server.channels, 116 | koddata: koddata, 117 | }); 118 | }); 119 | 120 | module.exports = app; 121 | -------------------------------------------------------------------------------- /src/routers/index.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const botsdata = require("../database/models/botlist/bots.js"); 3 | 4 | console.log("[vcodes.xyz]: Index router loaded."); 5 | 6 | app.get("/", async (req, res) => { 7 | res.render("index.ejs", { 8 | bot: global.Client, 9 | path: req.path, 10 | config: global.config, 11 | user: req.isAuthenticated() ? req.user : null, 12 | req: req, 13 | botdata: await botsdata.find(), 14 | roles: global.config.server.roles, 15 | channels: global.config.server.channels, 16 | }); 17 | }); 18 | 19 | module.exports = app; 20 | -------------------------------------------------------------------------------- /src/routers/mini.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const botsdata = require("../database/models/botlist/bots.js"); 3 | 4 | console.log("[vcodes.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("/discord", async (req, res) => { 34 | res.redirect(global.config.server.invite); 35 | }); 36 | 37 | app.get("/robots.txt", function (req, res) { 38 | res.set("Content-Type", "text/plain"); 39 | res.send(`Sitemap: https://vcodes.xyz/sitemap.xml`); 40 | }); 41 | 42 | app.get("/sitemap.xml", async function (req, res) { 43 | let link = "https://vcodes.xyz/"; 44 | let botdataforxml = await botsdata.find(); 45 | botdataforxml.forEach((bot) => { 46 | link += "\nhttps://vcodes.xyz/bot/" + bot.botID + ""; 47 | }); 48 | res.set("Content-Type", "text/xml"); 49 | res.send( 50 | `${link}` 51 | ); 52 | }); 53 | 54 | module.exports = app; 55 | -------------------------------------------------------------------------------- /src/routers/partners.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const partnerdb = require(`${process.cwd()}/src/database/models/partners.js`); 3 | 4 | console.log("[vcodes.xyz]: Partners router loaded."); 5 | 6 | app.get("/partners", async (req, res) => { 7 | let x = await partnerdb.find({}); 8 | res.render("partners.ejs", { 9 | bot: global.Client, 10 | path: req.path, 11 | config: global.config, 12 | user: req.isAuthenticated() ? req.user : null, 13 | req: req, 14 | partners: x, 15 | roles: global.config.server.roles, 16 | }); 17 | }); 18 | 19 | module.exports = app; 20 | -------------------------------------------------------------------------------- /src/routers/profile/edit.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const botsdata = require("../../database/models/botlist/bots.js"); 3 | 4 | console.log("[vcodes.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) 10 | return res.redirect("/user/" + req.user.id + "/edit"); 11 | client.users.fetch(req.user.id).then(async (member) => { 12 | const pdata = await profiledata.findOne({ 13 | userID: member.id, 14 | }); 15 | res.render("profile/profile-edit.ejs", { 16 | bot: global.Client, 17 | path: req.path, 18 | config: global.config, 19 | user: req.isAuthenticated() ? req.user : null, 20 | req: req, 21 | roles: global.config.server.roles, 22 | channels: global.config.server.channels, 23 | pdata: pdata, 24 | member: member, 25 | }); 26 | }); 27 | }); 28 | app.post("/:userID/edit", global.checkAuth, async (req, res) => { 29 | let rBody = req.body; 30 | await profiledata.findOneAndUpdate( 31 | { 32 | userID: req.user.id, 33 | }, 34 | { 35 | $set: { 36 | biography: rBody["biography"], 37 | website: rBody["website"], 38 | github: rBody["github"], 39 | twitter: rBody["twitter"], 40 | instagram: rBody["instagram"], 41 | }, 42 | }, 43 | { 44 | upsert: true, 45 | } 46 | ); 47 | return res.redirect( 48 | "?success=true&message=Your profile has been successfully edited." 49 | ); 50 | }); 51 | 52 | module.exports = app; 53 | -------------------------------------------------------------------------------- /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("[vcodes.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; 37 | -------------------------------------------------------------------------------- /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 channels = global.config.server.channels; 5 | 6 | console.log("[vcodes.xyz/servers]: Add Server router loaded."); 7 | 8 | app.get("/add", global.checkAuth, async (req, res) => { 9 | if (!client.guilds.cache.get(config.server.id).members.cache.get(req.user.id)) 10 | return res.send({ error: true, 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) 26 | return res.send({ 27 | error: true, 28 | message: "This server already exist system.", 29 | }); 30 | if (!guildID || !longDesc || !shortDesc || !tags) 31 | return res.send({ error: true, message: "Please enter all fields."}); 32 | if (!link && !autoCreate) 33 | return res.send({ error: true, message: "Please enter a link or select auto create." }); 34 | if (!guild) 35 | return res.send({ error: true, message: "Please enter a valid guild ID." }); 36 | const member = guild.members.cache.get(req.user.id); 37 | if (!member) { 38 | try { 39 | await guild.members.fetch(); 40 | member = guild.members.cache.get(req.user.id); 41 | } catch (err) { 42 | res.send({ error: true, message: "An error occurred while fetching guild members." }); 43 | } 44 | } 45 | if (!member) 46 | return res.send({ error: true, message: "You can only add servers with ADMINISTRATOR authorization." }); 47 | if (!member.permissions.has("ADMINISTRATOR")) 48 | return res.send({ error: true, message: "You can only add servers with ADMINISTRATOR authorization." }); 49 | await db.updateOne( 50 | { 51 | id: guildID, 52 | }, 53 | { 54 | $set: { 55 | name: guild.name, 56 | icon: guild.iconURL({ dynamic: true }), 57 | ownerID: guild? guild.ownerID : req.user.id, 58 | longDesc: req.body.longDesc, 59 | shortDesc: req.body.shortDesc, 60 | tags: req.body.tags, 61 | votes: 0, 62 | }, 63 | }, 64 | { upsert: true } 65 | ); 66 | 67 | if (autoCreate === "true") { 68 | const channel = guild.channels.cache.find((ch) => ch.type === "GUILD_TEXT" && ch.permissionsFor(guild.me).has("SEND_MESSAGES")); 69 | if (!channel) return res.send({ error: true, message: "I can't find any channel to send message." }); 70 | const invite = await channel.createInvite({ maxAge: 0, maxUses: 0 }).catch((err) => { 71 | console.log(err); 72 | return res.send({ error: true, message: "An error occurred while creating an invitation." }); 73 | }); 74 | await db.updateOne( 75 | { 76 | id: guildID, 77 | }, 78 | { 79 | $set: { 80 | link: invite.url, 81 | }, 82 | }, 83 | { upsert: true } 84 | ); 85 | 86 | } else { 87 | await db.updateOne( 88 | { 89 | id: guildID, 90 | }, 91 | { 92 | $set: { 93 | link: link, 94 | }, 95 | }, 96 | { upsert: true } 97 | ); 98 | } 99 | await res.send({ success: true, message: "Your server has been successfully added." }); 100 | }); 101 | 102 | module.exports = app; 103 | -------------------------------------------------------------------------------- /src/routers/servers/apps/report-app.js: -------------------------------------------------------------------------------- 1 | const app = require('express').Router(); 2 | const serversdata = require("../../../database/models/servers/server.js"); 3 | const apps = require("../../../database/models/botlist/report-apps.js"); 4 | const client = global.Client; 5 | const Discord = require("discord.js"); 6 | 7 | console.log("[vcodes.xyz/servers]: Report router loaded."); 8 | 9 | app.get("/:guildID/report", global.checkAuth, async (req, res) => { 10 | const userservers = await serversdata.find({ 11 | id: req.params.guildID 12 | }) 13 | const checkreporter = await apps.find({ 14 | reporterID: req.user.id 15 | }) 16 | if (!userservers) return res.redirect('/error?code=401&message=There is no server on our website with this id.'); 17 | let serverdata = await serversdata.findOne({ 18 | id: req.params.guildID 19 | }) 20 | res.render("servers/apps/report.ejs", { 21 | bot: global.Client, 22 | path: req.path, 23 | config: global.config, 24 | user: req.isAuthenticated() ? req.user : null, 25 | req: req, 26 | roles: global.config.server.roles, 27 | channels: global.config.server.channels, 28 | userservers: userservers, 29 | serverdata: serverdata 30 | }) 31 | }); 32 | app.post("/:guildID/report", global.checkAuth, async (req, res) => { 33 | const rBody = req.body; 34 | const checkreporter = await apps.find({ 35 | reporterID: req.user.id 36 | }) 37 | let findServer = await apps.findOne({ id: req.params.guildID }); 38 | let serverdata = await serversdata.findOne({ 39 | id: req.params.guildID 40 | }) 41 | await new apps({ 42 | reporterID : req.user.id, 43 | id: req.params.guildID, 44 | username: serverdata.username, 45 | reason: rBody['reason'], 46 | report: "applied" 47 | }).save() 48 | res.redirect("/servers?success=true&message=You have reported the server.&guildID=" + req.params.guildID) 49 | let reports = await apps.findOne({ botID: req.params.botID }); 50 | const embed = new Discord.EmbedBuilder() 51 | .setDescription("Report (Server)") 52 | .setColor("#00ff00") 53 | .addFields([ 54 | { name: "Reporter", value: req.user.username+'\`` ('+req.user.id+')\``' || "undefined", inline: true }, 55 | { name: "Server ID", value: req.params.guildID || "undefined", inline: true }, 56 | { name: "Username", value: serverdata.username || "undefined", inline: true }, 57 | { name: "Reason:", value: reports.reason || "undefined", inline: true } 58 | ]) 59 | await client.channels.cache.get(global.config.server.channels.reportlog).send({ 60 | embeds: [embed] 61 | }) 62 | }); 63 | 64 | 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("[vcodes.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 | module.exports = app; 22 | -------------------------------------------------------------------------------- /src/routers/servers/search.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | 4 | console.log("[vcodes.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( 10 | (a) => 11 | (global.clientSL.guilds.cache.get(a.id) && 12 | a.name.includes(req.query.q)) || 13 | a.shortDesc.includes(req.query.q) 14 | ); 15 | if (page < 1) return res.redirect(`/bots`); 16 | if (data.length <= 0) return res.redirect("/"); 17 | if (page > Math.ceil(data.length / 6)) return res.redirect(`/bots`); 18 | if (Math.ceil(data.length / 6) < 1) { 19 | page = 1; 20 | } 21 | res.render("servers/search.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 | data: data, 30 | page: page, 31 | }); 32 | }); 33 | 34 | module.exports = app; 35 | -------------------------------------------------------------------------------- /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("[vcodes.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) 13 | return res.redirect( 14 | "/error?code=404&message=You entered an invalid server id." 15 | ); 16 | 17 | const guild = client.guilds.cache.get(req.params.guildID); 18 | if (!guild) 19 | return res.redirect( 20 | "/error?code=404&message=You entered an invalid server id." 21 | ); 22 | const member = guild.members.cache.get(req.user.id); 23 | if (!member) { 24 | try { 25 | await guild.members.fetch(); 26 | member = guild.members.cache.get(req.user.id); 27 | } catch (err) { 28 | res.send({ 29 | error: true, 30 | message: `Couldn't fetch the members of ${guild.id}: ${err}`, 31 | }); 32 | } 33 | } 34 | if (!member) return res.redirect("/error?code=403&message=Unauthorized."); 35 | if (!member.permissions.has("ADMINISTRATOR")) 36 | return res.redirect("/error?code=403&message=Unauthorized."); 37 | res.render("servers/server/analytics.ejs", { 38 | bot: global.Client, 39 | path: req.path, 40 | config: global.config, 41 | user: req.isAuthenticated() ? req.user : null, 42 | req: req, 43 | roles: global.config.server.roles, 44 | channels: global.config.server.channels, 45 | data: serverData, 46 | }); 47 | }); 48 | 49 | module.exports = app; 50 | -------------------------------------------------------------------------------- /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("[vcodes.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) 13 | return res.redirect( 14 | "/error?code=404&message=You entered an invalid server id." 15 | ); 16 | 17 | const guild = client.guilds.cache.get(req.params.guildID); 18 | if (!guild) 19 | return res.redirect( 20 | "/error?code=404&message=You entered an invalid server id." 21 | ); 22 | const member = guild.members.cache.get(req.user.id); 23 | if (!member) { 24 | try { 25 | await guild.members.fetch(); 26 | member = guild.members.cache.get(req.user.id); 27 | } catch (err) { 28 | res.send({ 29 | error: true, 30 | message: `Couldn't fetch the members of ${guild.id}: ${err}`, 31 | }); 32 | } 33 | } 34 | if (!member) return res.redirect("/error?code=403&message=Unauthorized."); 35 | if (!member.permissions.has("ADMINISTRATOR")) 36 | return res.redirect("/error?code=403&message=Unauthorized."); 37 | 38 | await db.deleteOne({ id: req.params.guildID }); 39 | return res.redirect("/user/" + req.user.id); 40 | }); 41 | 42 | module.exports = app; 43 | -------------------------------------------------------------------------------- /src/routers/servers/server/edit.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const sdata = require("../../../database/models/servers/server.js"); 3 | const client = global.clientSL; 4 | const channels = global.config.server.channels; 5 | 6 | console.log("[vcodes.xyz/servers]: Edit router loaded."); 7 | 8 | app.get("/:guildID/edit", global.checkAuth, async (req, res) => { 9 | let serverData = await sdata.findOne({ 10 | id: req.params.guildID, 11 | }); 12 | if (!serverData) 13 | return res.redirect( 14 | "/error?code=404&message=You entered an invalid server id." 15 | ); 16 | 17 | const guild = client.guilds.cache.get(req.params.guildID); 18 | if (!guild) 19 | return res.redirect( 20 | "/error?code=404&message=You entered an invalid server id." 21 | ); 22 | const member = guild.members.cache.get(req.user.id); 23 | if (!member) { 24 | try { 25 | await guild.members.fetch(); 26 | member = guild.members.cache.get(req.user.id); 27 | } catch (err) { 28 | res.send({ 29 | error: true, 30 | message: `Couldn't fetch the members of ${guild.id}: ${err}`, 31 | }); 32 | } 33 | } 34 | if (!member) return res.redirect("/error?code=403&message=Unauthorized."); 35 | if (!member.permissions.has("ADMINISTRATOR")) 36 | return res.redirect("/error?code=403&message=Unauthorized."); 37 | res.render("servers/server/edit.ejs", { 38 | bot: global.Client, 39 | path: req.path, 40 | config: global.config, 41 | user: req.isAuthenticated() ? req.user : null, 42 | req: req, 43 | roles: global.config.server.roles, 44 | channels: global.config.server.channels, 45 | data: serverData, 46 | }); 47 | }); 48 | 49 | app.post("/:guildID/edit", global.checkAuth, async (req, res) => { 50 | let serverData = await sdata.findOne({ 51 | id: req.params.guildID, 52 | }); 53 | if (!serverData) 54 | return res.redirect( 55 | "/error?code=404&message=You entered an invalid server id." 56 | ); 57 | let { link, shortDesc, longDesc, tags, autoCreate } = req.body; 58 | const guild = client.guilds.cache.get(req.params.guildID); 59 | if (!req.params.guildID || !longDesc || !shortDesc || !tags) 60 | return res.send({ 61 | error: true, 62 | message: "Fill the must any blanks.", 63 | }); 64 | if (!link && !autoCreate) 65 | return res.send({ error: true, message: "Fill the must any blanks." }); 66 | if (!guild) { 67 | await sdata.deleteOne({ 68 | id: req.params.guildID, 69 | }); 70 | return res.send({ 71 | error: true, 72 | message: "Server deleted on system because you kicked me.", 73 | }); 74 | } 75 | const member = guild.members.cache.get(req.user.id); 76 | if (!member) { 77 | try { 78 | await guild.members.fetch(); 79 | member = guild.members.cache.get(req.user.id); 80 | } catch (err) { 81 | res.send({ 82 | error: true, 83 | message: `Couldn't fetch the members of ${guild.id}: ${err}`, 84 | }); 85 | } 86 | } 87 | if (!member) 88 | return res.redirect( 89 | "/error?code=403&message=You can only edit servers with ADMINISTRATOR authorization." 90 | ); 91 | if (!member.permissions.has("ADMINISTRATOR")) 92 | return res.redirect( 93 | "/error?code=403&message=You can only edit servers with ADMINISTRATOR authorization." 94 | ); 95 | await sdata.findOneAndUpdate( 96 | { 97 | id: req.params.guildID, 98 | }, 99 | { 100 | $set: { 101 | name: guild.name, 102 | icon: guild.iconURL({ dynamic: true }), 103 | ownerID: guild.owner.id ? guild.owner.id : req.user.id, 104 | longDesc: longDesc, 105 | shortDesc: shortDesc, 106 | tags: tags, 107 | }, 108 | }, 109 | { upsert: true } 110 | ); 111 | if (autoCreate === "true") { 112 | guild.fetchInvites().then(async (fetchinvite) => { 113 | fetchinvite.array().find((a) => a.inviter.id === client.user.id) 114 | ? fetchinvite.array().find((a) => a.inviter.id === client.user.id).code 115 | : await guild.channels.cache.random().createInvite({ maxAge: 0 }); 116 | }); 117 | guild.fetchInvites().then(async (fetchinvite) => { 118 | let inviteURL = fetchinvite 119 | .array() 120 | .find((a) => a.inviter.id === client.user.id).url; 121 | await sdata.findOneAndUpdate( 122 | { 123 | id: req.params.guildID, 124 | }, 125 | { 126 | $set: { 127 | link: inviteURL, 128 | }, 129 | }, 130 | { upsert: true } 131 | ); 132 | }); 133 | } else { 134 | await sdata.findOneAndUpdate( 135 | { 136 | id: req.params.guildID, 137 | }, 138 | { 139 | $set: { 140 | link: req.body.link, 141 | }, 142 | }, 143 | { upsert: true } 144 | ); 145 | } 146 | 147 | return res.send({ 148 | success: true, 149 | message: "Server succesfuly edited.", 150 | }); 151 | }); 152 | 153 | module.exports = app; 154 | -------------------------------------------------------------------------------- /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("[vcodes.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 | { 15 | id: req.params.guildID, 16 | }, 17 | { 18 | $inc: { 19 | analytics_joins: 1, 20 | }, 21 | } 22 | ); 23 | let urlInvite = data.link; 24 | res.render("servers/server/join.ejs", { 25 | bot: global.clientSL, 26 | path: req.path, 27 | config: global.config, 28 | user: req.isAuthenticated() ? req.user : null, 29 | req: req, 30 | roles: global.config.server.roles, 31 | channels: global.config.server.channels, 32 | data: data, 33 | inviteURL: urlInvite, 34 | }); 35 | }); 36 | 37 | module.exports = app; 38 | -------------------------------------------------------------------------------- /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("[vcodes.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) 31 | .replace("undefined", "Unkown") 32 | .split(".") 33 | .join(","); 34 | await db.updateOne( 35 | { 36 | id: req.params.guildID, 37 | }, 38 | { 39 | $inc: { 40 | analytics_visitors: 1, 41 | }, 42 | } 43 | ); 44 | 45 | var getIP = require("ipware")().get_ip; 46 | var ipInfo = getIP(req); 47 | var geoip = require("geoip-lite"); 48 | var ip = ipInfo.clientIp; 49 | var geo = geoip.lookup(ip); 50 | 51 | if (geo) { 52 | let CountryCode = geo.country || "TR"; 53 | await db.updateOne( 54 | { 55 | id: req.params.guildID, 56 | }, 57 | { 58 | $inc: { 59 | [`country.${CountryCode}`]: 1, 60 | }, 61 | } 62 | ); 63 | } 64 | await db.updateOne( 65 | { 66 | id: req.params.guildID, 67 | }, 68 | { 69 | $inc: { 70 | [`analytics.${referresURL}`]: 1, 71 | }, 72 | } 73 | ); 74 | 75 | res.render("servers/server/view.ejs", { 76 | bot: global.clientSL, 77 | path: req.path, 78 | config: global.config, 79 | user: req.isAuthenticated() ? req.user : null, 80 | req: req, 81 | roles: global.config.server.roles, 82 | channels: global.config.server.channels, 83 | data: data, 84 | guildGet: checkGuild, 85 | page: page, 86 | sdb: sdb, 87 | rateAuthors: rateAuthors, 88 | moment: require("moment"), 89 | }); 90 | }); 91 | 92 | module.exports = app; 93 | -------------------------------------------------------------------------------- /src/routers/servers/tag.js: -------------------------------------------------------------------------------- 1 | const app = require("express").Router(); 2 | const db = require("../../database/models/servers/server.js"); 3 | 4 | console.log("[vcodes.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( 10 | (a) => 11 | global.clientSL.guilds.cache.get(a.id) && a.tags.includes(req.params.tag) 12 | ); 13 | if (page < 1) return res.redirect(`/tag/` + req.params.tag); 14 | if (data.length <= 0) return res.redirect("/servers"); 15 | if (page > Math.ceil(data.length / 6)) 16 | return res.redirect(`/tag/` + req.params.tag); 17 | if (Math.ceil(data.length / 6) < 1) { 18 | page = 1; 19 | } 20 | res.render("servers/tag.ejs", { 21 | bot: global.clientSL, 22 | path: req.path, 23 | config: global.config, 24 | user: req.isAuthenticated() ? req.user : null, 25 | req: req, 26 | roles: global.config.server.roles, 27 | channels: global.config.server.channels, 28 | page: page, 29 | data: data, 30 | }); 31 | }); 32 | 33 | module.exports = app; 34 | -------------------------------------------------------------------------------- /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("[vcodes.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 | module.exports = app; 21 | -------------------------------------------------------------------------------- /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("[vcodes.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")) 17 | return res.send({ error: true, message: "You must enter a valid link." }); 18 | const updcode = createID(24); 19 | const dde = await uptimedata.findOne({ 20 | link: rBody["link"], 21 | }); 22 | const dd = await uptimedata.find({ 23 | userID: req.user.id, 24 | }); 25 | if (dd.length > 9) 26 | res.send({ error: true, message: "Your uptime limit has reached." }); 27 | 28 | if (dde) 29 | return res.send({ 30 | error: true, 31 | message: "This link already exists in the system.", 32 | }); 33 | client.users.fetch(req.user.id).then((a) => { 34 | client.channels.cache.get(channels.uptimelog).send({ 35 | embeds: [ 36 | new Discord.EmbedBuilder() 37 | .setAuthor({ name: a.username, iconURL: a.avatarURL({ dynamic: true }) }) 38 | .setDescription("New link added uptime system.") 39 | .setThumbnail(client.user.avatarURL({ dynamic: true })) 40 | .setColor("#00ff00") 41 | .addFields([ 42 | { name: "User;", value: `${a.tag} \`(${a.id})\``, inline: true }, 43 | { name: "Uptime Limit;", value: `${dd.length + 1}/10`, inline: true } 44 | ]) 45 | ] 46 | }); 47 | new uptimedata({ 48 | server: config.serverID, 49 | userName: a.username, 50 | userID: req.user.id, 51 | link: rBody["link"], 52 | code: updcode, 53 | }).save(); 54 | }); 55 | res.send({ success: true, message: "Link successfuly added." }); 56 | } 57 | }); 58 | 59 | function createID(length) { 60 | var result = ""; 61 | var characters = 62 | "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 63 | var charactersLength = characters.length; 64 | for (var i = 0; i < length; i++) { 65 | result += characters.charAt(Math.floor(Math.random() * charactersLength)); 66 | } 67 | return result; 68 | } 69 | module.exports = app; 70 | -------------------------------------------------------------------------------- /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("[vcodes.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) 16 | return res.redirect( 17 | "/uptime/links?error=true&message=There is no such site in the system." 18 | ); 19 | uptimedata.findOne( 20 | { 21 | code: req.params.code, 22 | }, 23 | async function (err, docs) { 24 | if (docs.userID != req.user.id) 25 | return res.redirect( 26 | "/uptime/links?error=true&message=The link you tried to delete does not belong to you." 27 | ); 28 | res.redirect( 29 | "/uptime/links?success=true&message=The link has been successfully deleted from the system." 30 | ); 31 | await uptimedata.deleteOne({ 32 | code: req.params.code, 33 | }); 34 | } 35 | ); 36 | }); 37 | 38 | module.exports = app; 39 | -------------------------------------------------------------------------------- /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("[vcodes.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 | module.exports = app; 27 | -------------------------------------------------------------------------------- /src/servers/client.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const serverClient = global.clientSL; 3 | const config = global.config; 4 | const fs = require("fs"); 5 | const { REST } = require("@discordjs/rest"); 6 | const { Routes } = require("discord-api-types/v9"); 7 | 8 | const _commands = []; 9 | serverClient.commands = new Discord.Collection(); 10 | 11 | fs.readdir(`${process.cwd()}/src/servers/commands`, (err, commands) => { 12 | if (err) throw new Error(err); 13 | commands.map(async command => { 14 | try { 15 | const _cmdFile = require(`${process.cwd()}/src/servers/commands/${command}`); 16 | const { name, description, options } = ( 17 | typeof _cmdFile == "function" ? 18 | _cmdFile(serverClient) : 19 | _cmdFile 20 | ); 21 | _commands.push({ name, description, options }); 22 | await serverClient.commands.set(name, _cmdFile); 23 | } catch (err) { 24 | console.error(err); 25 | }; 26 | }); 27 | }); 28 | 29 | global.SLCommands = _commands; 30 | const rest = new REST({ version: "9" }).setToken(config.bot.servers.token); 31 | serverClient.on("ready", async () => { 32 | await rest.put(Routes.applicationCommands(serverClient.user.id), { body: _commands }); 33 | 34 | console.log( 35 | "[vcodes.xyz/servers]: Bot successfully connected as " + 36 | serverClient.user.tag + 37 | "." 38 | ); 39 | serverClient.user.setStatus("dnd"); 40 | serverClient.user.setPresence({ activities: [{ name: "/bump & /vote | vcodes.xyz/servers" }] }); 41 | }); 42 | 43 | serverClient.on("interactionCreate", async interaction => { 44 | try { 45 | if (!interaction.isCommand()) return; 46 | 47 | fs.readdir(`${process.cwd()}/src/servers/commands`, (err, commands) => { 48 | if (err) throw new Error(err); 49 | commands.forEach(async command => { 50 | const _command = require(`${process.cwd()}/src/servers/commands/${command}`); 51 | 52 | if (interaction.commandName.toLowerCase() === _command.name.toLowerCase()) _command.run(serverClient, interaction); 53 | }); 54 | }); 55 | } catch (err) { 56 | console.error(err); 57 | }; 58 | }); 59 | 60 | serverClient.makeid = (length) => { 61 | let text = ""; 62 | const possible = 63 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 64 | for (let i = 0; i < length; i++) { 65 | text += possible.charAt(Math.floor(Math.random() * possible.length)); 66 | } 67 | return text; 68 | }; 69 | 70 | module.exports = serverClient; 71 | -------------------------------------------------------------------------------- /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/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 |
59 | -------------------------------------------------------------------------------- /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 | 65 | <%- include('../static/foot.ejs') %> 66 |
67 | -------------------------------------------------------------------------------- /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') %> 105 | -------------------------------------------------------------------------------- /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}) %> 85 | -------------------------------------------------------------------------------- /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}) %> 87 | -------------------------------------------------------------------------------- /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 | 43 |
44 | <%- include('static/foot.ejs', { bot,user,path}) %> 45 | -------------------------------------------------------------------------------- /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}) %> 85 | -------------------------------------------------------------------------------- /src/views/admin/codes.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 | <% koddata.map(b => {%> 29 | 30 | 31 | 32 | 33 | 34 | 38 | 39 | <% }) %> 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
Code NameCodeCode CategoryAction
<%= b.codeName %><%= b.code %><%= b.codeCategory %> 35 | 36 | 37 |
Code NameCodeCode Category
50 |
51 |
52 |
53 | 102 |
103 | <%- include('static/foot.ejs', { bot,user,path}) %> 104 | -------------------------------------------------------------------------------- /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}) %> 45 | -------------------------------------------------------------------------------- /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/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}) %> 86 | -------------------------------------------------------------------------------- /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}) %> 81 | -------------------------------------------------------------------------------- /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, 41 | .table th { 42 | padding: 0.75rem; 43 | vertical-align: top; 44 | border-top: #23272a; 45 | color: #fff; 46 | } 47 | tfoot { 48 | display: none; 49 | } 50 | 51 | .page-link { 52 | display: flex; 53 | align-items: center; 54 | border-radius: 10% !important; 55 | margin: 1px; 56 | margin-top: 8px; 57 | } 58 | -------------------------------------------------------------------------------- /src/views/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoidDevsorg/discord-bot-list/fc3893cd4aa86c77dd760f53ab6dd0c67d396969/src/views/assets/img/logo.png -------------------------------------------------------------------------------- /src/views/assets/img/undefined_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoidDevsorg/discord-bot-list/fc3893cd4aa86c77dd760f53ab6dd0c67d396969/src/views/assets/img/undefined_avatar.png -------------------------------------------------------------------------------- /src/views/assets/img/undefined_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoidDevsorg/discord-bot-list/fc3893cd4aa86c77dd760f53ab6dd0c67d396969/src/views/assets/img/undefined_back.png -------------------------------------------------------------------------------- /src/views/assets/img/vcodes_wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VoidDevsorg/discord-bot-list/fc3893cd4aa86c77dd760f53ab6dd0c67d396969/src/views/assets/img/vcodes_wallpaper.png -------------------------------------------------------------------------------- /src/views/assets/js/socket.js: -------------------------------------------------------------------------------- 1 | const socket = io.connect("https://vcodes.xyz"); 2 | 3 | socket.on("userCount", (userCount) => { 4 | let doc = document.getElementById("connectionCount"); 5 | if (doc) { 6 | doc.innerHTML = userCount; 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /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/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/views/botlist/apps/report.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 |

3 | 4 |
5 |
6 |
7 |

Report

8 |

Fill in the form below to submit a report.

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 |

Please make sure your report has enough details. If not, we may have to discard your report.

35 | 36 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | 73 | <%- include('../../parts/foot') %> -------------------------------------------------------------------------------- /src/views/botlist/bot-rules.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | Rules | Discord Bots 3 | 8 |
9 |
10 |
11 |

Bot Rules

12 |

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

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

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

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

43 |
44 |
45 |
46 |
47 | 48 |
49 |
50 | 51 | <%- include('../parts/foot') %> 52 | -------------------------------------------------------------------------------- /src/views/botlist/bot/announcement.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 | <%- include('../../parts/edit-head') %> 3 | 24 |
25 |

26 |
27 |
28 |
29 |
30 | 31 | 32 |
33 |
34 | 37 | 38 |
39 |
40 |
41 |

42 |

Spaces with * next to it are required.

43 | 44 |
45 |
46 | 47 | 48 | 85 | <%- include('../../parts/foot') %> -------------------------------------------------------------------------------- /src/views/botlist/bots-certified.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | <%- include('../parts/section') %> 3 |
4 |
5 |

 Certified Bots

6 |

They are ranked according to the votes they received.

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

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

31 |

<%= a.shortDesc %>

32 |
33 | 37 |
38 |
39 | <% } %> 40 |
41 |
42 | 43 |

44 |
45 | <% 46 | if (page != 1) { 47 | %> 48 | 49 | 50 | 51 | <% } else { %> 52 | 53 | 54 | 55 | <% } %> 56 | 57 | <%= page %> 58 | 59 | <% 60 | if (page != Math.ceil(data.length / 6) && data.length > 0) { 61 | %> 62 | 63 | 64 | 65 | <% } %> 66 | 67 |
68 | 96 | <%- include('../parts/foot') %> 97 | -------------------------------------------------------------------------------- /src/views/botlist/bots.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | <%- include('../parts/section') %> 3 |
4 |
5 |

 All Bots

6 |

They are ranked according to the votes they received.

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

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

34 |

<%= a.shortDesc %>

35 |
36 | 40 |
41 |
42 |
43 | 44 | <% } %> 45 | <% } %> 46 |
47 |
48 | 49 |

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

 <%= req.params.tag %> Bots

8 |

They are ranked according to the votes they received.

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

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

36 |

<%= a.shortDesc %>

37 |
38 | 42 |
43 |
44 |
45 | <% } %> 46 | <% } %> 47 |
48 |
49 |

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

 All Tags

5 |
6 |



7 |
8 |
9 | <% config.website.tags.map(a => {%> 10 | 11 | <%= a %> 12 | 13 | <% }) %> 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 | <%- include('../parts/foot') %> 22 | -------------------------------------------------------------------------------- /src/views/botlist/vote.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../parts/head', {bot, user, path}) %> 2 | Vote | <%= botdata.username %> | Discord Bots 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 |
11 |
12 |
13 | 14 |
15 |

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

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

You can support the bot by voting this bot.

18 |

You can vote every 12 hours.

19 |
20 | 21 | 22 |
23 | <% } else { %> 24 | 45 | <% } %> 46 |
47 |
48 |
49 |
50 | 51 |
52 |
53 | 54 | 86 | <%- include('../parts/foot') %> 87 | -------------------------------------------------------------------------------- /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/error.ejs: -------------------------------------------------------------------------------- 1 | <%- include('./parts/head', {bot, user,path}) %> 2 | <% 3 | var url = new URL(`https://vcodes.xyz/error?code=${req.query.code}&message=${req.query.message}`); 4 | var params = new URLSearchParams(url.search); 5 | %> 6 | Error <%= params.get('code')%> - vCodes 7 | 8 | 21 |
22 |



23 |
24 |
25 |
26 |
27 |
28 |

29 |
30 |
31 |

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

32 |

33 | <%= params.get('message') %> 34 |

35 | Go to Home 36 | Join our Discord 37 |
38 |
39 |
40 |
41 | 42 |
43 |
44 |

45 | 46 |
47 | <% if(params.get('code') == "200") {%> 48 |

You are authorized? Login

49 | <% } %> 50 |
51 | 52 | <%- include('./parts/foot') %> 53 | -------------------------------------------------------------------------------- /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 | <% if (partners.length > 0) { %> 19 | <% partners.forEach(a => { %> 20 |
21 |
22 | 40 |
41 |
42 | <% }) %> 43 | <% } else { %> 44 | 48 | <% } %> 49 |
50 |
51 | <%- include('parts/foot') %> -------------------------------------------------------------------------------- /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/views/parts/meta.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | <%- include('./links.ejs') %> 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/views/servers/apps/report.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 |

3 | 4 |
5 |
6 |
7 |

Report

8 |

Fill in the form below to submit a report.

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 |

Please make sure your report has enough details. If not, we may have to discard your report.

35 | 36 | 39 |
40 | 41 |
42 |
43 |
44 |

45 | 73 | <%- include('../../parts/foot') %> -------------------------------------------------------------------------------- /src/views/servers/server/edit.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 | <%- include('../../parts/edit-head') %> 3 | 27 |
28 |

29 |
30 |
31 |
32 |
33 | 34 | 35 | 36 | 37 |
38 |
39 | 40 | 49 |
50 |
51 |
52 |
53 | 54 | 55 |
56 |
57 | 61 | 62 |
63 |
64 |
65 |

66 |

Spaces with * next to it are required.

67 | 68 |
69 |
70 | 71 | 72 | 113 | <%- include('../../parts/foot') %> 114 | -------------------------------------------------------------------------------- /src/views/servers/server/join.ejs: -------------------------------------------------------------------------------- 1 | <%- include('../../parts/head', {bot, user, path}) %> 2 | Join | <%= data.name %> | Discord Servers 3 | 4 | 5 | 6 | 7 |
8 |
9 |
10 |
11 |
12 | 13 |
14 |

Redirecting To

15 |

<%= data.name %>

16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 24 | 38 | <%- include('../../parts/foot') %> 39 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------