├── .replit ├── LICENSE.txt ├── README.md ├── SlashCommands └── 🔰 Informational │ ├── help.js │ ├── invite.js │ ├── made-by-azury.txt │ └── stats.js ├── cluster.js ├── config.json ├── events ├── interactionCreate.js ├── made-by-azury.txt ├── ratelimitHandler.js └── ready.js ├── handler └── index.js ├── index.js ├── json.sqlite ├── models └── add-mongos.txt ├── package-lock.json ├── package.json ├── replit.nix └── webport.js /.replit: -------------------------------------------------------------------------------- 1 | run = "npx node cluster.js" 2 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | MIT License 3 | 4 | Copyright (c) 2022 azury 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # **SlashCommands Handler *v2*** 2 | > *If this Git-Repo gets "30" Stars ⭐ I'll make it DJS v14 useable!* 3 | 4 | # ✒️ CHANGES: 5 | `1.` Added a new design 6 | `2.` Fixed some bugs 7 | `3.` Added the option to enable/disable the MongoDB 8 | 9 | # 🛠️ FEATURES: 10 | `1.` SlashCommands Support
11 | `3.` Sharding/Clusters System
12 | `4.` Mongoose Database ***If you Don't Have a MongoDatabase, [Get it here](https://www.mongodb.com/)*** 13 | 14 | # 📑 RULES: 15 | `1.` Give Credits if **you** consider using it (Unless it's for a private bot)!
16 | `2.` Dont re-sell any code using the Handler **unless** you have **majorly** changed it!
17 | `3.` Enjoy 💘

18 | # 🔗 Support Server
19 | 20 |
21 | ***Like what you see? You can __order__ bots from Our Discord-Server which are way better!*** 22 | -------------------------------------------------------------------------------- /SlashCommands/🔰 Informational/help.js: -------------------------------------------------------------------------------- 1 | const { Client, CommandInteraction, MessageEmbed } = require("discord.js"); 2 | const { readdirSync } = require("fs"); 3 | 4 | module.exports = { 5 | name: "help", 6 | description: "See all of the bots commands", 7 | type: 'CHAT_INPUT', 8 | run: async (client, interaction, args) => { 9 | let categories = []; 10 | 11 | readdirSync("./SlashCommands/").forEach((dir) => { 12 | const commands = readdirSync(`./SlashCommands/${dir}/`).filter((file) => file.endsWith(".js")); 13 | 14 | const cmds = commands.map((command) => { 15 | let file = require(`../../SlashCommands/${dir}/${command}`); 16 | if (!file.name) return "Missing file name."; 17 | let name = file.name.replace(".js", ""); 18 | return `\`${name}\``; 19 | }); 20 | let data = new Object(); 21 | 22 | data = { 23 | name: dir.toUpperCase(), 24 | value: cmds.length === 0 ? "WIP 🦺" : cmds.join(" "), 25 | }; 26 | 27 | categories.push(data); 28 | }); 29 | 30 | const embed = new MessageEmbed() 31 | .setTitle(`Discord Bot | Handler | Azury`) 32 | .setColor(client.config.color.yellow) 33 | .addField(`About Me`, "I am a Slash COmmands Discord Bot: handler by https://discord.gg/azury\n> *GIVE CREDITS IF U USE!*") 34 | .addFields(categories) 35 | .setFooter(`Powered by Azury.live\n🔷 Server-Shard: ${interaction.guild.shardId}`, interaction.guild.iconURL()) 36 | return interaction.followUp({ embeds: [embed] }) 37 | }, 38 | }; 39 | -------------------------------------------------------------------------------- /SlashCommands/🔰 Informational/invite.js: -------------------------------------------------------------------------------- 1 | const { Client, CommandInteraction, MessageEmbed, MessageActionRow, MessageButton } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "invite", 5 | description: "Gets the bot's invite link", 6 | type: 'CHAT_INPUT', 7 | run: async (client, interaction, args) => { 8 | let msg = await interaction.followUp(`Loading..`); 9 | 10 | const emb = new MessageEmbed() 11 | .setColor(client.config.color.main) 12 | .setTitle(`Invite ${client.user.username}`) 13 | .setDescription(`Invite the bot!`) 14 | .setThumbnail(client.user.displayAvatarURL({ dynamic : true })) 15 | .setFooter(`Made with 💖 by discord.azury.live`) 16 | 17 | const row = new MessageActionRow() 18 | .addComponents( 19 | new MessageButton() 20 | .setURL(`https://discord.com/api/oauth2/authorize?client_id=${client.user.id}&permissions=8&scope=bot%20applications.commands`) 21 | .setLabel('Instant') 22 | .setStyle('LINK'), 23 | ); 24 | 25 | setTimeout(() => { 26 | msg.edit({ content: ` `, embeds: [emb], components: [row] }); 27 | }, 500); 28 | }, 29 | }; 30 | -------------------------------------------------------------------------------- /SlashCommands/🔰 Informational/made-by-azury.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /SlashCommands/🔰 Informational/stats.js: -------------------------------------------------------------------------------- 1 | const { Client, CommandInteraction, MessageEmbed } = require("discord.js"); 2 | const Discord = require("discord.js"); 3 | const { readdirSync } = require("fs"); 4 | 5 | module.exports = { 6 | name: "stats", 7 | description: "View the bot's stats!", 8 | cooldown: 5, 9 | type: 'CHAT_INPUT', 10 | 11 | /** 12 | * 13 | * @param {Client} client 14 | * @param {CommandInteraction} interaction 15 | * @param {String[]} args 16 | */ 17 | run: async (client, interaction, args) => { 18 | 19 | 20 | interaction.followUp({ content: `**📊 Bot Stats of ${client.user.username} 📊**\n\n> **Im on \`${client.guilds.cache.size}\` Servers**\n> **Watching \`${client.users.cache.size}\` Members**\n> **Node.js: ${process.version}**\n> **Discord.js: v${Discord.version}**\n> **I am on Shard: \` ${interaction.guild.shardId} \`**` }) 21 | } 22 | } -------------------------------------------------------------------------------- /cluster.js: -------------------------------------------------------------------------------- 1 | const { red, green, blue, magenta, cyan, white, gray, black } = require("chalk"); 2 | const Cluster = require('discord-hybrid-sharding'); 3 | const { Manager } = require("discord-hybrid-sharding"); 4 | const totalShards = 4; 5 | const colors = require("colors"); 6 | const shardsPerCluster = 2; 7 | const config = require(`./config.json`) 8 | const manager = new Cluster.Manager(`./index.js`, { 9 | totalShards: totalShards, // Use 'auto' if u want it to be Auto. 10 | shardsPerClusters: shardsPerCluster, 11 | mode: 'process' , 12 | token: process.env.token || config.token, 13 | respawn: true, 14 | usev13: true, 15 | }); 16 | 17 | 18 | manager.on("clusterCreate", cluster => { 19 | 20 | console.log(red(`[👍] :`)+`: Launched Cluster #${cluster.id} & ${cluster.id+1}/${cluster.manager.totalClusters} [${cluster.manager.shardsPerClusters}/${cluster.manager.totalShards} Shards]`.yellow) 21 | 22 | cluster.on("death", function () { 23 | console.log(`${colors.red.bold(`Cluster ${cluster.id} died..`)}`); 24 | }); 25 | 26 | cluster.on("message", async (msg) => { 27 | if(!msg._sCustom) return 28 | if (msg.dm) { 29 | const { interaction, message, dm, packet } = msg 30 | await manager.broadcast({ interaction, message, dm, packet }) 31 | } 32 | }) 33 | cluster.on("error", e => { 34 | console.log(red(`[❌] :`)+`: Cluster #${cluster.id} ERROR`.red.bold) 35 | console.error(e); 36 | }) 37 | 38 | cluster.on("disconnect", function () { 39 | console.log(red(`[❌] :`)+`: Cluster #${cluster.id} DISCONNECTED`.red.bold) 40 | }); 41 | 42 | cluster.on("reconnecting", function () { 43 | console.log(red(`[❌] :`)+`: Cluster #${cluster.id} RECONNECTING`.red.bold) 44 | }); 45 | 46 | cluster.on("close", function (code) { 47 | console.log(red(`[❌] :`)+`: Cluster #${cluster.id} CLOSED`.red.bold) 48 | }); 49 | 50 | cluster.on("exit", function (code) { 51 | console.log(red(`[❌] :`)+`: Cluster #${cluster.id} EXITED`.red.bold) 52 | }); 53 | }); 54 | manager.on("debug", (d) => d.includes("Cluster Manager (LIST):") ? console.log(d) : "") 55 | manager.spawn({timeout: -1}); 56 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "token": "", 4 | "prefix": "pt!", 5 | "activity": "/help .gg/azury | On {shards} Cluster(s)", 6 | "type": "WATCHING", 7 | "status": "idle", 8 | 9 | "mongoDB": { 10 | "is_enabled": false, 11 | "mongoURL": "" 12 | }, 13 | 14 | "COMMENT": "Only enable hostingweb if you are using replit!", 15 | "hostingweb": true, 16 | 17 | "developers": [], 18 | 19 | "color": { 20 | "main" : "GREEN", 21 | "error" : "#ff5f8e", 22 | "success": "#99ff9c", 23 | 24 | "red" : "#ff5a48", 25 | "orange": "#ffca4d", 26 | "yellow": "#ffcc5c", 27 | "green" : "#74ff89", 28 | "purple": "#7d5eff", 29 | "pink" : "#ff88d2", 30 | "grey" : "#4b4b4b", 31 | "white" : "#ffffff" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /events/interactionCreate.js: -------------------------------------------------------------------------------- 1 | const client = require("../index"); 2 | const { MessageEmbed, Collection } = require("discord.js") 3 | const cooldowns = new Map(); 4 | 5 | client.on("interactionCreate", async (interaction) => { 6 | // Slash Command Handling 7 | if (interaction.isCommand()) { 8 | const cmd = client.slashCommands.get(interaction.commandName); 9 | if (!cmd) return interaction.followUp({ content: "An error has occured " }); 10 | 11 | if (!cooldowns.has(cmd.name)) { 12 | const coll = new Collection(); 13 | cooldowns.set(cmd.name, coll); 14 | } 15 | const current_time = Date.now(); 16 | const time_stamps = cooldowns.get(cmd.name); 17 | const cooldown_amount = cmd.cooldown * 1000; 18 | if (time_stamps.has(interaction.user.id)) { 19 | const expiration_time = time_stamps.get(interaction.user.id) + cooldown_amount; 20 | if (current_time < expiration_time) { 21 | const time_left = (expiration_time - current_time) / 1000; 22 | const embed = new MessageEmbed().setColor("RED").setTitle(`${client.emoji.wrong} Too Fast!`).setDescription(`**You are in a cooldown! Please wait \`${time_left.toFixed(1)}\` seconds, To Use the command, \`${cmd.name}\` Again**!`).setFooter(`⚡ Powered by Azury.live`) 23 | return interaction.reply({ embeds: [embed] }); 24 | } 25 | } 26 | time_stamps.set(interaction.user.id, current_time); 27 | setTimeout(() => time_stamps.delete(interaction.user.id), cooldown_amount); 28 | 29 | await interaction.deferReply({ ephemeral: false }).catch(() => {}); 30 | const args = []; 31 | 32 | for (let option of interaction.options.data) { 33 | if (option.type === "SUB_COMMAND") { 34 | if (option.name) args.push(option.name); 35 | option.options.forEach((x) => { 36 | if (x.value) args.push(x.value); 37 | }); 38 | } else if (option.value) args.push(option.value); 39 | } 40 | interaction.member = interaction.guild.members.cache.get(interaction.user.id); 41 | cmd.run(client, interaction, args); 42 | } 43 | 44 | // Context Menu Handling 45 | if (interaction.isContextMenu()) { 46 | await interaction.deferReply({ ephemeral: false }); 47 | const command = client.slashCommands.get(interaction.commandName); 48 | if (command) command.run(client, interaction); 49 | } 50 | }); 51 | -------------------------------------------------------------------------------- /events/made-by-azury.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /events/ratelimitHandler.js: -------------------------------------------------------------------------------- 1 | const client = require("../index.js") 2 | 3 | client.on('rateLimit', (info) => { 4 | console.log(`RATE LIMIT >> ${info.timeDifference ? info.timeDifference : info.timeout ? info.timeout: 'Unknown timeout '}`) 5 | }) -------------------------------------------------------------------------------- /events/ready.js: -------------------------------------------------------------------------------- 1 | const { red, green, blue, magenta, cyan, white, gray, black } = require("chalk"); 2 | const client = require("../index"); 3 | 4 | client.on("ready", () => { 5 | console.log(cyan.bold(``+blue(`[⚡] :`)+`: Powered by: https://discord.gg/azury`)); 6 | console.log(green(``+blue(`[🤖] :`)+`: Logged in as: ` + magenta(`${client.user.tag}`))); 7 | console.log(green(``+blue(`[🔗] :`)+`: https://discord.com/oauth2/authorize?client_id=${client.user.id}&permissions=8&scope=bot%20applications.commands`)) 8 | client.user.setActivity(client.config.activity.replace("{shards}", client.cluster.id) 9 | , { type: client.config.status.type }) 10 | client.user.setStatus(client.config.status) 11 | }); 12 | -------------------------------------------------------------------------------- /handler/index.js: -------------------------------------------------------------------------------- 1 | const { glob } = require("glob"); 2 | const { promisify } = require("util"); 3 | const { Client } = require("discord.js"); 4 | const mongoose = require("mongoose"); 5 | const { red, green, blue, magenta, cyan, white, gray, black } = require("chalk"); 6 | const Discord = require('discord.js'); 7 | const globPromise = promisify(glob); 8 | 9 | /** 10 | * @param {Client} client 11 | */ 12 | module.exports = async (client) => { 13 | // Commands 14 | const commandFiles = await globPromise(`${process.cwd()}/commands/**/*.js`); 15 | commandFiles.map((value) => { 16 | const file = require(value); 17 | const splitted = value.split("/"); 18 | const directory = splitted[splitted.length - 2]; 19 | 20 | if (file.name) { 21 | const properties = { directory, ...file }; 22 | client.commands.set(file.name, properties); 23 | } 24 | }); 25 | 26 | // Events 27 | const eventFiles = await globPromise(`${process.cwd()}/events/*.js`); 28 | setTimeout(async()=> { 29 | console.log(blue(`[✅] :`)+`: Loaded the "Events" files`.green.bold) 30 | }, 200) 31 | eventFiles.map((value) => require(value)); 32 | 33 | // Slash Commands 34 | const slashCommands = await globPromise(`${process.cwd()}/SlashCommands/*/*.js`); 35 | setTimeout(async()=> { 36 | console.log(blue(`[✅] :`)+`: Loaded the "SlashCommands" files`.green.bold) 37 | }, 200) 38 | const arrayOfSlashCommands = []; 39 | slashCommands.map((value) => { 40 | const file = require(value); 41 | if (!file?.name) return; 42 | client.slashCommands.set(file.name, file); 43 | arrayOfSlashCommands.push(file); 44 | }); 45 | 46 | 47 | client.on("messageCreate", async (message, user) => { 48 | if(message.content.startsWith(`${config.prefix}deploy`)) { 49 | try { 50 | if(!message.member.permissions.has("MANAGE_GUILD")) { 51 | return message.reply(`**You cannot use this \`Deploy\` command!**\n> **There are \`${arrayOfSlashCommands.length} Slash-Commands\` for ${client.user.username}!**`); 52 | } 53 | let themsg = await message.reply(`**Attempting to set the GUILD Slash Commands in \`${message.guild.name}\`...**`) 54 | await client.application.commands.set(arrayOfSlashCommands).then((slashCommandsData) => { 55 | themsg.edit(`Starting to load **${slashCommandsData.size}** slash commands to this guild... \n _It's recommended to use command 4x times to ensure acurate deploy_`); 56 | }).catch((e) => { 57 | console.log(e) 58 | themsg.edit(`**I Could not load the Slash Commands for ${message.guild.name}**\n\n**I Must be missing permissions to Create Slash-Commands! Invite me when this link:**\n> https://discord.com/api/oauth2/authorize?client_id=${client.user.id}&permissions=8&scope=bot%20applications.commands`) 59 | }); 60 | } 61 | catch (e) { 62 | console.log(String(e.stack)) 63 | return message.channel.send({ 64 | embeds: [new Discord.MessageEmbed() 65 | .setColor(`RED`) 66 | .setTitle(`❌ Something want wrong!`) 67 | .setDescription(`This error isn't supposed to happen! This must be a code error! Join discord.gg/Azury for help!`) 68 | ] 69 | }) 70 | } 71 | } 72 | if(message.content.startsWith(`${config.prefix}help`)) { 73 | return message.reply(`Sorry, but this bot doesnt't use \`Prefix\` command!\n_Due to Discord changing their policies we use \`Slash\` commands_.\n\n**__Don't see the \`Slash\` Commands in you're guild?__**\n***Then use the \`${config.prefix}deploy\` command __4x times__!***`) 74 | } 75 | }) 76 | 77 | 78 | client.on('guildCreate', async (guild) => { 79 | await client.application.commands.set(arrayOfSlashCommands); 80 | return console.log(`⚡ I was Invited to ${guild.name}! I will now start creating the Slash Commands (If i have perms)`) 81 | }) 82 | 83 | 84 | 85 | if(client.config.mongoDB.is_enabled == true) { 86 | 87 | mongoose.connect(process.env.mongoURL || client.db.mongoDB.mongoURL, { 88 | useUnifiedTopology: true, 89 | useNewUrlParser: true, 90 | }).then(console.log(blue(`[✅] :`)+`: The MongoDB is CONNECTED`.green.bold)).catch(async(e)=> { 91 | console.log(blue(`[⚠️] :`)+`: The MongoDB is HAVING ISSUES "Failed to Connect"`.yellow.bold) 92 | }) 93 | } else { 94 | console.log(blue(`[❌] :`)+`: The MongoDB is DISABLED`.red.bold) 95 | } 96 | 97 | 98 | } 99 | 100 | 101 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const chalk = require("chalk"); 3 | const colors = require("colors") 4 | const Cluster = require('discord-hybrid-sharding'); 5 | const client = new Client({ 6 | shards: Cluster.data.SHARD_LIST, 7 | shardCount: Cluster.data.TOTAL_SHARDS, 8 | intents: 32767, 9 | }); 10 | module.exports = client; 11 | 12 | // Global Variables 13 | client.commands = new Collection(); 14 | client.slashCommands = new Collection(); 15 | const fs = require(`fs`); 16 | client.config = require("./config.json"); 17 | client.cluster = new Cluster.Client(client) 18 | 19 | global.config = require("./config.json"); 20 | 21 | // Initializing the project 22 | require("./handler")(client); 23 | 24 | 25 | /* WEB & BOT SERVER ¦¦ WEB & BOT SERVER */ 26 | if(client.config.hostingweb == true) { 27 | require("./webport")(); 28 | } 29 | client.login(process.env.token || client.config.token) 30 | 31 | /* ANTI CRASHING ¦¦ ANTI CRASHING */ 32 | process.on('unhandledRejection', (reason, p) => { 33 | console.log('\n\n\n\n\n[🚩 Anti-Crash] unhandled Rejection:'.toUpperCase().red.dim); 34 | console.log(reason.stack.yellow.dim ? String(reason.stack).yellow.dim : String(reason).yellow.dim); 35 | console.log('=== unhandled Rejection ===\n\n\n\n\n'.toUpperCase().red.dim); 36 | }); 37 | process.on("uncaughtException", (err, origin) => { 38 | console.log('\n\n\n\n\n\n[🚩 Anti-Crash] uncaught Exception'.toUpperCase().red.dim); 39 | console.log(err.stack.yellow.dim ? err.stack.yellow.dim : err.yellow.dim) 40 | console.log('=== uncaught Exception ===\n\n\n\n\n'.toUpperCase().red.dim); 41 | }) 42 | process.on('uncaughtExceptionMonitor', (err, origin) => { 43 | console.log('[🚩 Anti-Crash] uncaught Exception Monitor'.toUpperCase().red.dim); 44 | }); 45 | process.on('beforeExit', (code) => { 46 | console.log('\n\n\n\n\n[🚩 Anti-Crash] before Exit'.toUpperCase().red.dim); 47 | console.log(code.yellow.dim); 48 | console.log('=== before Exit ===\n\n\n\n\n'.toUpperCase().red.dim); 49 | }); 50 | process.on('exit', (code) => { 51 | console.log('\n\n\n\n\n[🚩 Anti-Crash] exit'.toUpperCase().red.dim); 52 | console.log(code.yellow.dim); 53 | console.log('=== exit ===\n\n\n\n\n'.toUpperCase().red.dim); 54 | }); 55 | process.on('multipleResolves', (type, promise, reason) => { 56 | console.log('\n\n\n\n\n[🚩 Anti-Crash] multiple Resolves'.toUpperCase().red.dim); 57 | console.log(type, promise, reason.yellow.dim); 58 | console.log('=== multiple Resolves ===\n\n\n\n\n'.toUpperCase().red.dim); 59 | }); 60 | -------------------------------------------------------------------------------- /json.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/master1ous/SlashCommands-Handler/6a274592c889e31e2d003b84e04ce2f7ea33d1db/json.sqlite -------------------------------------------------------------------------------- /models/add-mongos.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "djs", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "nodemon index.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "node": "^16.6.1" 15 | }, 16 | "dependencies": { 17 | "canvacord": "^5.2.3", 18 | "canvas": "^2.9.0", 19 | "canvas-constructor": "^4.1.0", 20 | "chalk": "^4.1.2", 21 | "color": "^4.2.0", 22 | "colors": "^1.4.0", 23 | "discord-giveaways": "^4.5.1", 24 | "discord-html-transcripts": "^1.1.3", 25 | "discord-math": "^1.0.5", 26 | "discord-webhook-node": "^1.1.8", 27 | "discord.js": "^13.3.0", 28 | "express": "^4.17.2", 29 | "figlet": "^1.5.2", 30 | "glob": "^7.2.0", 31 | "mongoose": "^6.2.0", 32 | "ms": "^2.1.3", 33 | "quick.db": "^7.1.3", 34 | "random-puppy": "^1.1.0", 35 | "srod-v2": "^1.0.2" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: { 2 | deps = [ 3 | pkgs.nodejs-16_x 4 | ]; 5 | } -------------------------------------------------------------------------------- /webport.js: -------------------------------------------------------------------------------- 1 | const e=require('express');const s=e();s.all('/', (req, res)=>{res.setHeader('Content-Type', 'text/html'); res.send(`

✅ Hosting Port Activated 🌐

Bot type: Ticket Bot

Made by: Azury
Coded By: Masterious#2213



Make sure to add the repl.co URL to some sort of UPTIMER LINK SYSTEM

`); res.end();});function k(){s.listen(3000, ()=>{console.log("24/7 Keepalive Server is online! Make sure to add the Replit.co URL to an Uptimer System")});}module.exports=k; --------------------------------------------------------------------------------