2022-11-11 04:39:20 +07:00
const { createInterface } = require ( 'node:readline' ) ;
2022-11-11 07:44:23 +07:00
const { execSync } = require ( 'child_process' ) ;
const fetch = require ( 'node-fetch' ) ;
2022-11-16 16:34:10 +07:00
const { Client , Routes } = require ( 'discord.js' ) ;
2022-11-17 09:37:22 +07:00
const ping = {
2022-11-17 06:08:51 +07:00
name : 'ping' ,
2022-12-01 07:41:40 +07:00
description : 'Pings the bot and shows the latency'
2022-11-17 09:37:22 +07:00
} ;
// Command Example
2022-11-17 09:38:47 +07:00
const command2 = {
2022-11-17 06:08:51 +07:00
name : 'command2' ,
description : 'yes'
}
2022-11-17 09:37:22 +07:00
const commands = [ ping , command2 ] ; // Add your commands with commas to add them to the bot!
// Join the Discord for support: https://discord.gg/M5MSE9CvNM
2022-11-11 04:39:20 +07:00
2022-11-12 00:58:42 +07:00
const client = new Client ( { intents : [ ] } ) ;
2022-11-11 04:39:20 +07:00
const rl = createInterface ( { input : process . stdin , output : process . stdout } ) ;
2022-11-17 09:37:22 +07:00
client . on ( 'interactionCreate' , ( interaction ) => {
if ( interaction . commandName === 'ping' ) {
2022-12-01 07:41:40 +07:00
interaction . reply ( ` Latency is ${ Date . now ( ) - message . createdTimestamp } ms. API Latency is ${ Math . round ( client . ws . ping ) } ms ` ) ;
2022-11-17 09:37:22 +07:00
} else if ( interaction . commandName === 'command2' ) { // This is the example command's name!
interaction . reply ( 'example command' ) ;
2022-11-17 09:38:47 +07:00
} else { // a response if you forget to add the command here
2022-11-17 09:37:22 +07:00
interaction . reply ( 'this command\'s response has not been added yet!' ) ;
2022-11-17 06:08:51 +07:00
}
2022-11-11 04:39:20 +07:00
} ) ;
const question = ( q ) => new Promise ( ( resolve ) => rl . question ( q , resolve ) ) ;
( async ( ) => {
const token = await question ( 'Application token? ' ) ;
if ( ! token ) throw new Error ( 'Invalid token' ) ;
2022-11-11 07:44:23 +07:00
const ratelimitTest = await fetch ( ` https://discord.com/api/v9/invites/discord-developers ` ) ;
if ( ! ratelimitTest . ok ) {
await question ( ` Uh oh, looks like the node you're on is currently being blocked by Discord. Press the "Enter" button on your keyboard to be reassigned to a new node. (you'll need to rerun the program once you reconnect) ` )
// This kills the container manager on the repl forcing Replit to assign the repl to another node with another IP address (if the ip is globally rate limited)
2022-11-17 06:08:51 +07:00
//^ in short: Restarts the bot to be used again/attempted to start up again!
2022-11-11 07:44:23 +07:00
execSync ( 'kill 1' ) ;
return ;
} ;
2022-11-11 04:39:20 +07:00
await client . login ( token ) . catch ( ( err ) => {
throw err
} ) ;
2022-11-17 09:38:47 +07:00
await client . rest . put ( Routes . applicationCommands ( client . user . id ) , { body : commands } ) ;
2022-11-11 04:39:20 +07:00
2022-11-13 01:39:03 +07:00
console . log ( 'DONE | Application/Bot is up and running. DO NOT CLOSE THIS TAB UNLESS YOU ARE FINISHED USING THE BOT, IT WILL PUT THE BOT OFFLINE.' ) ;
2022-11-12 00:58:42 +07:00
} ) ( ) ;