diff options
author | ame <[email protected]> | 2024-06-11 22:41:39 -0500 |
---|---|---|
committer | ame <[email protected]> | 2024-06-11 22:41:39 -0500 |
commit | ab7afd44bb08f1ac0ac5e236d8f179efdde844bc (patch) | |
tree | 2b0bdd99542d7434654190781b364dbf0e0090c8 /index.js | |
parent | 8091667711d230a8dc76196a97f17452baf16372 (diff) |
persistant stuff
Diffstat (limited to 'index.js')
-rw-r--r-- | index.js | 272 |
1 files changed, 147 insertions, 125 deletions
@@ -12,148 +12,170 @@ console.log("["+process.pid+"] running under the name "+process.title) /** * Module Imports */ -const { Client, Collection, EmbedBuilder, ActivityType, GatewayIntentBits, Partials, Events, SlashCommandBuilder, PermissionsBitField} = require("discord.js"); -const Discord = require('discord.js'); -const dotenv = require("dotenv").config(); -const TOKEN = process.env.TOKEN; -const path = require("path"); -let db = require("./src/db"); -let util = require("./src/util") -const client = new Client({ - intents: [ - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.DirectMessages, - GatewayIntentBits.Guilds, - GatewayIntentBits.GuildBans, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.MessageContent, - GatewayIntentBits.GuildVoiceStates, - GatewayIntentBits.GuildMessageReactions, - GatewayIntentBits.DirectMessages, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.DirectMessageReactions, - GatewayIntentBits.DirectMessageTyping, - //GatewayIntentBits.GuildPresences - ], - partials: [Partials.Message, Partials.Channel, Partials.Reaction, Partials.User] -}); +async function main(){ + const { Client, Collection, EmbedBuilder, ActivityType, GatewayIntentBits, Partials, Events, SlashCommandBuilder, PermissionsBitField} = require("discord.js"); + const Discord = require('discord.js'); + const dotenv = require("dotenv").config(); + const TOKEN = process.env.TOKEN; + const path = require("path"); + let db = require("./src/db"); + let util = require("./src/util") + const { ModalBuilder, REST, Routes, ContextMenuCommandBuilder, ApplicationCommandType } = require('discord.js'); -client.login(TOKEN); + const client = new Client({ + intents: [ + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.DirectMessages, + GatewayIntentBits.Guilds, + GatewayIntentBits.GuildBans, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.MessageContent, + GatewayIntentBits.GuildVoiceStates, + GatewayIntentBits.GuildMessageReactions, + GatewayIntentBits.DirectMessages, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.DirectMessageReactions, + GatewayIntentBits.DirectMessageTyping, + //GatewayIntentBits.GuildPresences + ], + partials: [Partials.Message, Partials.Channel, Partials.Reaction, Partials.User] + }); -function update_options(scom,options){ - for(let opt of options){ - let autocomplete = opt.autocomplete!=null&&opt.autocomplete!=false; - switch(opt.type){ - case 'string': - scom.addStringOption(option => { + client.login(TOKEN); + + function update_options(scom,options){ + for(let opt of options){ + let autocomplete = opt.autocomplete!=null&&opt.autocomplete!=false; + switch(opt.type){ + case 'string': + scom.addStringOption(option => { + option.setName(opt.name) + .setDescription(opt.desc) + .setRequired(opt.required) + .setAutocomplete(autocomplete) + if(!autocomplete&&opt.choices!=null&&opt.choices!=false){ + if(typeof opt.choices[0] === 'string'){ + for(let i in opt.choices) opt.choices[i] = {name:opt.choices[i],value:opt.choices[i]} + } + option.setChoices(...opt.choices) + } + return option; + }) + break; + case 'bool': case 'boolean': + scom.addBooleanOption(option => + option.setName(opt.name) + .setDescription(opt.desc) + .setRequired(opt.required)) + break; + case 'channel': + scom.addChannelOption(option => option.setName(opt.name) .setDescription(opt.desc) - .setRequired(opt.required) - .setAutocomplete(autocomplete) - if(!autocomplete&&opt.choices!=null&&opt.choices!=false){ - if(typeof opt.choices[0] === 'string'){ - for(let i in opt.choices) opt.choices[i] = {name:opt.choices[i],value:opt.choices[i]} - } - option.setChoices(...opt.choices) - } - return option; - }) - break; - case 'bool': case 'boolean': - scom.addBooleanOption(option => + .setRequired(opt.required)) + break; + case 'user': + scom.addUserOption(option => + option.setName(opt.name) + .setDescription(opt.desc) + .setRequired(opt.required)) + break; + case 'role': + scom.addRoleOption(option => option.setName(opt.name) .setDescription(opt.desc) .setRequired(opt.required)) - break; - case 'channel': - scom.addChannelOption(option => - option.setName(opt.name) - .setDescription(opt.desc) - .setRequired(opt.required)) - break; - case 'user': - scom.addUserOption(option => - option.setName(opt.name) - .setDescription(opt.desc) - .setRequired(opt.required)) - break; - case 'role': - scom.addRoleOption(option => - option.setName(opt.name) - .setDescription(opt.desc) - .setRequired(opt.required)) - break; - case 'attachment': - scom.addAttachmentOption(option => - option.setName(opt.name) - .setDescription(opt.desc) - .setRequired(opt.required)) - break; - case 'sub': - scom.addSubcommand(subcommand => { - subcommand - .setName(opt.name) - .setDescription("test") - return update_options(subcommand, opt.options) - }) - break; + break; + case 'attachment': + scom.addAttachmentOption(option => + option.setName(opt.name) + .setDescription(opt.desc) + .setRequired(opt.required)) + break; + case 'sub': + scom.addSubcommand(subcommand => { + subcommand + .setName(opt.name) + .setDescription("test") + return update_options(subcommand, opt.options) + }) + break; + } + } - + scom.opt = options + return scom; } - scom.opt = options - return scom; -} -let commands = [] -let s_commands = [] -fs.readdirSync("./commands/").forEach(folder => { - fs.readdirSync("./commands/"+folder).forEach(file => { - if(path.extname(file)==".js"){ - try{ - let com = require("./commands/"+folder+"/"+file) - com.last_command = {}; - commands.push(com) - if(com.s_main!=null){ - let scom = new SlashCommandBuilder() - .setName(com.name.replace(/ /g,'-')) - .setDescription(com.config.desc) - if(com.mod_only) - scom.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageRoles) - if(com.s_options!=null){ - update_options(scom,com.s_options); + let commands = [] + let s_commands = [] + fs.readdirSync("./commands/").forEach(folder => { + fs.readdirSync("./commands/"+folder).forEach(file => { + if(path.extname(file)==".js"){ + try{ + let com = require("./commands/"+folder+"/"+file) + com.last_command = {}; + commands.push(com) + if(com.s_main!=null){ + let scom = new SlashCommandBuilder() + .setName(com.name.replace(/ /g,'-')) + .setDescription(com.config.desc) + if(com.mod_only) + scom.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageRoles) + if(com.s_options!=null){ + update_options(scom,com.s_options); + } + scom = scom.toJSON() + scom.command = com + s_commands.push(scom) } - scom = scom.toJSON() - scom.command = com - s_commands.push(scom) - } - } catch (e) { - if(e.code=="ENOENT"){ - console.log("[ENOENT] missing some config files:( run 'sh buildconfig.sh' to get them\nexiting~") + if(com.c_main!=null){ + let ccom = new ContextMenuCommandBuilder() + .setName(com.name.replace(/ /g,'-')) + .setType(ApplicationCommandType.User) + if(com.mod_only) + ccom.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageRoles) + ccom = ccom.toJSON() + ccom.command = com + s_commands.push(ccom) + } + } catch (e) { + if(e.code=="ENOENT"){ + console.log("[ENOENT] missing some config files:( run 'sh buildconfig.sh' to get them\nexiting~") + process.exit(e.errno) + } + console.log("["+e.code+"]"+" unexpected error:( something is wrong with the ./commands/*/* files\n****\n") + console.log(e) + process.exit(e.errno) } - console.log("["+e.code+"]"+" unexpected error:( something is wrong with the ./commands/*/* files\n****\n") - console.log(e) - - process.exit(e.errno) } - } + }) }) -}) -client.env = process.env -global.commands = commands; -global.s_commands = s_commands; -global.recent_messages = []; + global.rest = new REST().setToken(TOKEN) + global.c_commands = [new ContextMenuCommandBuilder() + .setName('test') + .setType(ApplicationCommandType.User) + .setDefaultMemberPermissions(PermissionsBitField.Flags.ManageRoles) +] + + client.env = process.env + global.commands = commands; + global.s_commands = s_commands; + global.recent_messages = []; -fs.readdirSync("./events/").forEach(file => { - if(path.extname(file)==".js") - require("./events/"+file).main(client,Discord) -}) + fs.readdirSync("./events/").forEach(file => { + if(path.extname(file)==".js") + require("./events/"+file).main(client,Discord) + }) -try{ - require("./src/webui") -} catch(e) { - console.log("failed loading webui:c") + try{ + require("./src/webui") + } catch(e) { + console.log("failed loading webui:c") + } } +main() |