first commit

This commit is contained in:
Raven Scott 2023-01-04 11:44:59 -05:00
commit 16736ec18f
10 changed files with 387 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
node_modules
.env
package-lock.json

35
README.md Normal file
View File

@ -0,0 +1,35 @@
# Discord-Linux Discord.JS v14 Base Template
Only 3 dependencies required to run this bot!
Message intents are NOT supported in this bot, this is due to the verification that Discord is enabling.
Structure:
**commands** - This folder contains commands
**event** - This folder contains files related to discord.js events. (Like "ready", "interactionCreate")
**handler** - This folder contains files that read the commands folders contents.
**index.js** - This is the main file to run the bot.
1) Use ```npm i ```
2) Create a .env file ``` touch .env```
3) Edit .env
```
TOKEN = token
```
4) Go to Handler -- > index.js and change "GUIDIDHERE" to your Discord Server's Guild ID
5) Go into https://discord.com/developers/applications and enable Privileged Intents.
6) Run the bot ```node index.js```
Want to make this better? Issue a pull request!

86
commands/Info/ping.js Normal file
View File

@ -0,0 +1,86 @@
const { EmbedBuilder } = require('discord.js');
var unirest = require('unirest');
const cmd = require('cmd-promise')
const fs = require("fs");
let lang
module.exports = {
name: "send",
private: false,
description: "send an inquiry to the AI",
options: [{
"name": "inquiry",
"description": "What you would like to send.",
"required": true,
"type": 3 // 6 is type USER
}],
run: async (client, interaction) => {
let data = interaction.options._hoistedOptions[0].value
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 {
interaction.editReply("```" + lang + response.body.bot + "```")
}
})
},
};

View File

@ -0,0 +1,93 @@
const client = require("../raven_ai");
require("dotenv").config();
const { glob } = require("glob");
const { promisify } = require("util");
const globPromise = promisify(glob);
client.on("interactionCreate", async (interaction) => {
// Slash Commands
const slashCommands = await globPromise(`${process.cwd()}/commands/*/*.js`);
const arrayOfSlashCommands = [];
// Map the slash commands into data to be processed
slashCommands.map((value) => {
const file = require(value);
const splitted = value.split("/");
const directory = splitted[splitted.length - 2];
if (!file?.name) return;
const properties = {
directory,
...file
};
client.slashCommands.set(file.name, properties);
if (["MESSAGE", "USER"].includes(file.type)) delete file.description;
// Push the data
arrayOfSlashCommands.push(file);
});
// Slash Command Handling
if (interaction.isChatInputCommand()) {
// Grabbing Command Data for this interaction
let commandData = []
// We use ForEach here to filter our array into the single commands info.
await arrayOfSlashCommands.forEach(command => {
if (command.name == interaction.commandName) {
commandData.push(command)
}
});
// Process and Parse Data
let dataToProcess = JSON.stringify(commandData[0])
let parsedData = JSON.parse(dataToProcess)
// If the command is private, set ephemeral true else, set false
if (parsedData.private == true) {
await interaction.deferReply({
ephemeral: true
}).catch(() => {});
} else {
await interaction.deferReply({
ephemeral: false
}).catch(() => {});
}
const cmd = client.slashCommands.get(interaction.commandName);
if (!cmd)
return interaction.followUp({
content: "An error has occurred "
});
const args = [];
for (let option of interaction.options.data) {
if (option.type === "SUB_COMMAND") {
if (option.name) args.push(option.name);
option.options?.forEach((x) => {
if (x.value) args.push(x.value);
});
} else if (option.value) args.push(option.value);
}
interaction.member = interaction.guild.members.cache.get(interaction.user.id);
cmd.run(client, interaction, args);
}
// Context Menu Handling
if (interaction.isContextMenuCommand()) {
await interaction.deferReply({
ephemeral: false
});
const command = client.slashCommands.get(interaction.commandName);
if (command) command.run(client, interaction);
}
});

5
events/ready.js Normal file
View File

@ -0,0 +1,5 @@
const client = require("../raven_ai");
client.on("ready", () => {
console.log(`${client.user.tag} is up and ready to go!`);
});

37
handler/index.js Normal file
View File

@ -0,0 +1,37 @@
require("dotenv").config();
const { glob } = require("glob");
const { promisify } = require("util");
const globPromise = promisify(glob);
module.exports = async (client) => {
// Slash Commands
const slashCommands = await globPromise(`${process.cwd()}/commands/*/*.js`);
const arrayOfSlashCommands = [];
slashCommands.map((value) => {
const file = require(value);
const splitted = value.split("/");
const directory = splitted[splitted.length - 2];
if (!file?.name) return;
const properties = { directory, ...file };
client.slashCommands.set(file.name, properties);
if (["MESSAGE", "USER"].includes(file.type)) delete file.description;
arrayOfSlashCommands.push(file);
});
// Events
const eventFiles = await globPromise(`${process.cwd()}/events/*.js`);
eventFiles.map((value) => require(value));
// Slash Commands Register
client.on("ready", async () => {
// // Register for a single guild
// await client.guilds.cache.get("GUIDIDHERE").commands.set(arrayOfSlashCommands);
// Register for all the guilds the bot is in
await client.application.commands.set(arrayOfSlashCommands);
});
};

71
output.txt Normal file
View File

@ -0,0 +1,71 @@
1067 [03/Jan/2023:20
1025 [03/Jan/2023:22
926 [03/Jan/2023:21
807 [04/Jan/2023:00
784 [03/Jan/2023:23
750 [03/Jan/2023:19
568 [02/Jan/2023:08
488 [01/Jan/2023:12
464 [01/Jan/2023:09
461 [03/Jan/2023:05
394 [02/Jan/2023:16
370 [01/Jan/2023:10
360 [01/Jan/2023:22
341 [03/Jan/2023:00
341 [01/Jan/2023:11
306 [03/Jan/2023:16
295 [02/Jan/2023:15
278 [03/Jan/2023:18
277 [03/Jan/2023:12
274 [03/Jan/2023:03
246 [02/Jan/2023:20
240 [01/Jan/2023:13
233 [03/Jan/2023:13
219 [01/Jan/2023:05
193 [03/Jan/2023:02
184 [02/Jan/2023:10
183 [02/Jan/2023:14
182 [02/Jan/2023:19
179 [03/Jan/2023:15
177 [02/Jan/2023:17
177 [01/Jan/2023:08
174 [02/Jan/2023:13
173 [02/Jan/2023:00
172 [03/Jan/2023:14
171 [04/Jan/2023:01
164 [02/Jan/2023:07
163 [03/Jan/2023:11
163 [02/Jan/2023:18
161 [03/Jan/2023:17
158 [01/Jan/2023:23
151 [01/Jan/2023:20
151 [01/Jan/2023:15
141 [03/Jan/2023:10
139 [03/Jan/2023:07
136 [02/Jan/2023:03
133 [01/Jan/2023:14
133 [01/Jan/2023:06
131 [02/Jan/2023:05
128 [03/Jan/2023:04
128 [02/Jan/2023:23
125 [01/Jan/2023:18
122 [01/Jan/2023:04
121 [03/Jan/2023:08
121 [03/Jan/2023:01
121 [02/Jan/2023:11
120 [02/Jan/2023:06
119 [01/Jan/2023:19
116 [02/Jan/2023:09
116 [01/Jan/2023:16
113 [02/Jan/2023:22
112 [02/Jan/2023:12
106 [03/Jan/2023:09
102 [02/Jan/2023:02
100 [02/Jan/2023:01
98 [02/Jan/2023:21
94 [01/Jan/2023:07
87 [03/Jan/2023:06
87 [01/Jan/2023:17
85 [01/Jan/2023:21
79 [02/Jan/2023:04
36 [01/Jan/2023:03

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "dlinuxtemplatev14",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"cmd-promise": "^1.2.0",
"discord.js": "^14.0.3",
"dotenv": "^16.0.0",
"glob": "^7.2.0",
"language-detect": "^1.1.0"
}
}

14
raven_ai.js Normal file
View File

@ -0,0 +1,14 @@
require("dotenv").config();
const { Client, Collection } = require("discord.js");
const client = new Client({ intents: 4097 });
module.exports = client;
// Global Variables
client.commands = new Collection();
client.slashCommands = new Collection();
// Initializing the project
require("./handler")(client);
client.login(process.env.TOKEN);

24
test.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
#This script will find the IPs with the most connections and add all of its requests together. It will also show what day and what hours the most requests in high frequency were made.
#Set variables for log file and output file
LOG_FILE="/var/log/httpd/access_log"
OUTPUT_FILE="output.txt"
#Find IPs with most connections and add all of its requests together
echo "Finding IPs with most connections..."
cat $LOG_FILE | awk '{print $1}' | sort | uniq -c | sort -nr > $OUTPUT_FILE
echo "Done!"
echo ""
echo "The IPs with the most connections are:"
cat $OUTPUT_FILE
echo ""
#Find what day and what hours the most requests in high frequency were made
echo "Finding what day and what hours the most requests in high frequency were made..."
cat $LOG_FILE | awk '{print $4}' | cut -d: -f1,2 | sort | uniq -c | sort -nr > $OUTPUT_FILE
echo "Done!"
echo ""
echo "The day and hour with the highest request frequency is:"
cat $OUTPUT_FILE