2023-01-04 13:58:27 -05:00
const { ActionRowBuilder , ModalBuilder , TextInputBuilder , TextInputStyle } = require ( 'discord.js' ) ;
var unirest = require ( 'unirest' ) ;
module . exports = {
name : "advanced" ,
description : "Formatted submit" ,
2023-01-04 14:20:15 -05:00
private : false ,
2023-01-04 13:58:27 -05:00
run : async ( client , interaction ) => {
// await interaction.deferReply();
let rand = Math . floor ( Math . random ( ) * 99999 ) . toString ( ) ;
if ( ! interaction . isChatInputCommand ( ) ) return ;
const modal = new ModalBuilder ( )
. setCustomId ( rand )
. setTitle ( 'Submit to the AI' ) ;
// TODO: Add components to modal...
const promptInput = new TextInputBuilder ( )
. setCustomId ( 'sendInput' )
// The label is the prompt the user sees for this input
. setLabel ( "Please Provide a Prompt" )
// Short means only a single line of text
. setStyle ( TextInputStyle . Paragraph ) ;
// An action row only holds one text input,
// so you need one action row per text input.
const firstActionRow = new ActionRowBuilder ( ) . addComponents ( [ promptInput ] ) ;
// Add inputs to the modal
modal . addComponents ( [ firstActionRow ] ) ;
await interaction . showModal ( modal ) ;
client . on ( 'interactionCreate' , interaction => {
if ( interaction . type !== 5 ) {
} else {
if ( interaction . customId === rand ) {
( async ( ) => {
await interaction . reply ( "Please wait while I think about this..." )
} ) ( )
// Get the data entered by the user
const data = interaction . fields . getTextInputValue ( 'sendInput' ) ;
function detectCodingLanguages ( str ) {
const languages = {
'javascript' : 'js' ,
'nodejs' : 'js' ,
'node' : 'js' ,
'python' : 'py' ,
'ruby' : 'rb' ,
'c#' : 'csharp' ,
'c++' : 'cpp' ,
'php' : 'php' ,
'go' : 'go' ,
'bash' : 'bash'
} ;
let detectedLanguages = [ ] ;
for ( let language in languages ) {
if ( str . includes ( language ) ) {
detectedLanguages . push ( languages [ language ] ) ;
}
}
return detectedLanguages ;
}
console . log ( detectCodingLanguages ( data ) [ 0 ] )
if ( detectCodingLanguages ( data ) ) {
lang = detectCodingLanguages ( data ) [ 0 ]
} else {
lang = "js"
}
unirest
. post ( 'https://codex-ai-v9q6.onrender.com/' )
. headers ( { 'Accept' : 'application/json' , 'Content-Type' : 'application/json' } )
. send ( { "prompt" : data } )
. then ( ( response ) => {
if ( response . body . bot . length > 1980 ) {
fs . writeFile ( '/tmp/paste' , response . body . bot , err => {
if ( err ) {
console . error ( err )
return
}
} )
cmd ( "sleep 2; cat /tmp/paste | dpaste" ) . then ( pasteout => {
const mainEmbed = new EmbedBuilder ( )
. setColor ( '#0099ff' )
. addFields (
{ name : 'Please check the below output log:' , value : pasteout . stdout . replace ( "Pro tip: you can password protect your paste just by typing a username and password after your paste command." , "" ) . replace ( "Paste Saved: " , "" ) . replace ( "-------------------------------------------------------" , "" ) } ,
) . setTitle ( "Response too large" )
. setDescription ( "Our AI was too Powerful!" )
. setFooter ( { text : ` Requested by ${ interaction . user . tag } ` , iconURL : ` ${ interaction . user . displayAvatarURL ( ) } ` } ) ;
( async ( ) => {
return await interaction . editReply ( { embeds : [ mainEmbed ] } )
} ) ( ) ;
} )
} else {
( async ( ) => {
await interaction . editReply ( "```" + lang + response . body . bot + "```" )
} ) ( ) ;
}
} )
}
}
} ) ;
}
} ;