Initial commit
This commit is contained in:
commit
c312e971f5
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
.env
|
||||
employeescoreboard.db/
|
||||
db/employeescoreboard.db
|
22
db/DBFirstRun.js
Normal file
22
db/DBFirstRun.js
Normal file
@ -0,0 +1,22 @@
|
||||
import sqlite3 from 'sqlite3';
|
||||
|
||||
const db = new sqlite3.Database("./db/employeescoreboard.db", sqlite3.OPEN_READWRITE,(err) => {
|
||||
if (err) return console.error(err.message);
|
||||
});
|
||||
let query;
|
||||
|
||||
query = `CREATE TABLE Employees
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
name VARCHAR NOT NULL,
|
||||
rank VARCHAR DEFAULT \'Intern\',
|
||||
coppergear INTEGER DEFAULT 0,
|
||||
silvergear INTEGER DEFAULT 0,
|
||||
goldgear INTEGER DEFAULT 0,
|
||||
purplegear INTEGER DEFAULT 0,
|
||||
copperswog INTEGER DEFAULT 0,
|
||||
silverswog INTEGER DEFAULT 0,
|
||||
goldswog INTEGER DEFAULT 0,
|
||||
purpleswog INTEGER DEFAULT 0
|
||||
)`;
|
||||
db.run(query);
|
1654
package-lock.json
generated
Normal file
1654
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
19
package.json
Normal file
19
package.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "swogbot",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "src/index.js",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^14.16.3",
|
||||
"dotenv": "^16.4.5",
|
||||
"sqlite3": "^5.1.7",
|
||||
"swogbot": "file:"
|
||||
}
|
||||
}
|
118
src/index.js
Normal file
118
src/index.js
Normal file
@ -0,0 +1,118 @@
|
||||
import dotenv from 'dotenv';
|
||||
import {Client, IntentsBitField} from 'discord.js';
|
||||
import sqlite3 from 'sqlite3';
|
||||
|
||||
const db = new sqlite3.Database("./db/employeescoreboard.db", sqlite3.OPEN_READWRITE,(err) => {
|
||||
if (err) return console.error(err.message);
|
||||
});
|
||||
|
||||
//Id of the channel where the gear scoreboard will be posted to, to post in the testing channel it is 1306669146804715693
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const client = new Client({
|
||||
intents: [
|
||||
IntentsBitField.Flags.Guilds,
|
||||
IntentsBitField.Flags.GuildMembers,
|
||||
IntentsBitField.Flags.GuildMessages,
|
||||
IntentsBitField.Flags.MessageContent,
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
client.on('ready', (c) => {
|
||||
console.log('The Swog is prepared.');
|
||||
})
|
||||
//Chat commands are handled here
|
||||
client.on('interactionCreate', (interaction) => {
|
||||
if (!interaction.isChatInputCommand()) return;
|
||||
|
||||
if (interaction.commandName === 'croak') {
|
||||
interaction.reply('Croak!');
|
||||
}
|
||||
|
||||
if (interaction.commandName === 'gear') {
|
||||
const addRemove = interaction.options.get('addremove').value;
|
||||
const gearType = interaction.options.get('geartype').value;
|
||||
const employee = interaction.options.get('employee').value;
|
||||
if ( addRemove == 'add') {
|
||||
AddGear(gearType, employee)
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
if (interaction.commandName === 'employee') {
|
||||
const hireFirePromote = interaction.options.get('hire-fire-promote').value;
|
||||
const employeeName = interaction.options.get('employee-name').value;
|
||||
if (hireFirePromote == 'hire') {
|
||||
CreateEmployee(employeeName);
|
||||
interaction.reply(`Hired ${employeeName}!`);
|
||||
}
|
||||
if (hireFirePromote == 'fire') {
|
||||
DeleteEmployee(employeeName);
|
||||
}
|
||||
}
|
||||
|
||||
if (interaction.commandName === 'promote') {
|
||||
const employeeName = interaction.options.get('employee-name').value;
|
||||
const rank = interaction.options.get('rank').value;
|
||||
PromoteEmployee(employeeName, rank);
|
||||
interaction.reply(`Changed ${employeeName}\'s rank to ${rank}`);
|
||||
}
|
||||
|
||||
if (interaction.commandName === 'scoreboard') {
|
||||
const updateOrDisplay = interaction.options.get('update-display').value;
|
||||
if (updateOrDisplay == 'display') {
|
||||
db.each("SELECT name, rank FROM Employees", (err, character) => {
|
||||
if (err != null) {
|
||||
console.log(err.message);
|
||||
}
|
||||
|
||||
console.log("Character Name: " + character.name + " rank: " + character.rank);
|
||||
});
|
||||
const gearchannel = client.channels.cache.get('1306669146804715693');
|
||||
const scoreBoardMessage = BuildScoreboard();
|
||||
console.log("Scoreboard goes here: " + scoreBoardMessage);
|
||||
//gearchannel.send(scoreBoardMessage);
|
||||
interaction.reply("Displaying Scoreboard");
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
function CreateEmployee(Name) {
|
||||
db.run(`INSERT INTO Employees (name) VALUES (\'${Name}\')`);
|
||||
};
|
||||
function DeleteEmployee(Name) {
|
||||
db.run(`DELETE FROM Employees WHERE name = \'${Name}\'`);
|
||||
};
|
||||
function PromoteEmployee(Name, rank) {
|
||||
db.run(`UPDATE Employees SET rank = \'${rank}\' WHERE name = \'${Name}\'`)
|
||||
}
|
||||
|
||||
function AddGear(Type,Employee) {
|
||||
|
||||
};
|
||||
|
||||
function BuildScoreboard() {
|
||||
let messageContent = ""
|
||||
db.each('SELECT name, rank, coppergear, silvergear, goldgear, purplegear FROM Employees', (err, character) => {
|
||||
if (err != null) {
|
||||
console.log(err.message);
|
||||
}
|
||||
|
||||
let coppergearstring = "";
|
||||
for (let i = 0; i < character.coppergear; i++) {
|
||||
coppergearstring += ":coppergear:"
|
||||
}
|
||||
|
||||
let silvergearstring = "";
|
||||
|
||||
messageContent += `**${character.name}** \n ## ${coppergearstring} \n`;
|
||||
|
||||
|
||||
});
|
||||
return messageContent;
|
||||
}
|
||||
|
||||
client.login(process.env.DISCORD_TOKEN);
|
100
src/register-commands.js
Normal file
100
src/register-commands.js
Normal file
@ -0,0 +1,100 @@
|
||||
import {REST, Routes, ApplicationCommandOptionType} from 'discord.js';
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
dotenv.config();
|
||||
|
||||
|
||||
// Note, command names must always be lower case
|
||||
const commands = [
|
||||
{
|
||||
name: 'croak',
|
||||
description: 'Makes Sir Hornsworth Croak!',
|
||||
},
|
||||
{
|
||||
name: 'gear',
|
||||
description: 'Add or remove a gear to an employee',
|
||||
options: [
|
||||
{
|
||||
name: 'addremove',
|
||||
description: 'Do you want to add or remove a Gear?',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'geartype',
|
||||
description: 'What sort of gear do you want to change?',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'employee',
|
||||
description: 'From who?',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'employee',
|
||||
description: 'Hire or Fire an employee',
|
||||
options: [
|
||||
{
|
||||
name: 'hire-fire-promote',
|
||||
description: 'Hiring or Firing?',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'employee-name',
|
||||
description: 'What is the character\'s name?',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'promote',
|
||||
description: 'Changes an employee\'s rank to the specified rank',
|
||||
options: [
|
||||
{
|
||||
name: 'employee-name',
|
||||
description: 'Who\'s rank are you changing?',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'rank',
|
||||
description: 'which rank are you changing them to?',
|
||||
type:ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'scoreboard',
|
||||
description: 'Related to the scoreboard',
|
||||
options: [
|
||||
{
|
||||
name: 'update-display',
|
||||
description: 'Displays the scoreboard or updates an already displayed one',
|
||||
type: ApplicationCommandOptionType.String,
|
||||
required: true,
|
||||
}
|
||||
]
|
||||
},
|
||||
];
|
||||
|
||||
const rest = new REST({version: 10}).setToken(process.env.DISCORD_TOKEN);
|
||||
|
||||
(async ()=> {
|
||||
try {
|
||||
console.log('Registering slash commands...')
|
||||
await rest.put(
|
||||
Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
|
||||
{body: commands}
|
||||
)
|
||||
console.log('Slash Commands Registered.')
|
||||
} catch (error) {
|
||||
console.log(`There was an error: ${error}`);
|
||||
}
|
||||
})();
|
Loading…
Reference in New Issue
Block a user