From 8c02dc5517a966cc6ded80e1a537c8f82c6664d3 Mon Sep 17 00:00:00 2001 From: SileNce5k Date: Mon, 4 Mar 2024 12:01:11 +0100 Subject: [PATCH] Add fm set username command Beginning of the command. Can't do anything other than setting and updating your lastfm username. --- commands/misc/fm.js | 21 ++++++++++++ server.js | 2 ++ server/createLastfmTable.js | 21 ++++++++++++ util/lastfm/fmlogin.js | 65 +++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 commands/misc/fm.js create mode 100644 server/createLastfmTable.js create mode 100644 util/lastfm/fmlogin.js diff --git a/commands/misc/fm.js b/commands/misc/fm.js new file mode 100644 index 0000000..5a53fa2 --- /dev/null +++ b/commands/misc/fm.js @@ -0,0 +1,21 @@ +const fmlogin = require("../../util/lastfm/fmlogin"); + +module.exports = { + name: 'fm', + description: 'Last fm commands. See `help fm` for more info.', + moreHelp: ["Set username: `fm set `",], + async execute({ message, args }) { + let sendText = "Something went wrong."; + switch (args[0]) { + case "help": + sendText = this.moreHelp; + break; + case "set": + sendText = await fmlogin(message.author.id, args[1]); + break; + default: + break; + } + message.channel.send(sendText); + } +}; \ No newline at end of file diff --git a/server.js b/server.js index 9057a0d..43bbb81 100644 --- a/server.js +++ b/server.js @@ -17,6 +17,8 @@ async function checkAndConvertJSONToSQL(){ } } const createDatabaseTables = require('./server/createDatabaseTables'); +const createLastfmTable = require('./server/createLastfmTable'); +createLastfmTable(); checkAndConvertJSONToSQL(); const Discord = require('discord.js'); const client = new Discord.Client({ intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_PRESENCES] }); diff --git a/server/createLastfmTable.js b/server/createLastfmTable.js new file mode 100644 index 0000000..6b3c71b --- /dev/null +++ b/server/createLastfmTable.js @@ -0,0 +1,21 @@ +const sqlite3 = require('sqlite3').verbose(); +module.exports = async function () { + const db = new sqlite3.Database('data/database.db'); + return new Promise ((resolve, reject)=>{ + db.run( + `CREATE TABLE IF NOT EXISTS lastfm ( + userID INTEGER PRIMARY KEY, + lastfmUsername TEXT)`, + (err) => { + if (err) { + console.error(`Error while creating table 'lastfm': ${err}`); + reject(err); + } else { + console.log("Table 'lastfm' created successfully."); + resolve(); + } + db.close(); + } + ); + }) +} \ No newline at end of file diff --git a/util/lastfm/fmlogin.js b/util/lastfm/fmlogin.js new file mode 100644 index 0000000..9700bb4 --- /dev/null +++ b/util/lastfm/fmlogin.js @@ -0,0 +1,65 @@ +const sqlite3 = require('sqlite3').verbose(); +module.exports = async function(userID, lastfmUsername) { + let sendText = ""; + // If the user already has a last.fm username set, just update it. + let entryExists = await new Promise((resolve, reject)=>{ + const db = new sqlite3.Database('data/database.db'); + db.get( + `SELECT * FROM lastfm WHERE userID = ?`, + [userID], + (error, row) => { + if (error) { + console.error(error); + reject(error); + } else { + resolve(row); + } + db.close(); + } + ); + }); + if (!entryExists) { + + sendText = await new Promise((resolve, reject)=>{ + const db = new sqlite3.Database('data/database.db'); + + db.run( + `INSERT INTO lastfm (userID, lastfmUsername) VALUES (?, ?)`, + [userID, lastfmUsername], + function (error) { + if (error) { + console.error(error); + let sendText = "Error while adding last.fm username. Check console."; + reject(sendText); + } else { + let sendText = `Your last.fm username has been set to '${lastfmUsername}'.`; + console.log(sendText); + resolve(sendText); + } + db.close(); + } + ); + }); + }else { + sendText = await new Promise((resolve, reject)=>{ + const db = new sqlite3.Database('data/database.db'); + db.run( + `UPDATE lastfm SET lastfmUsername = ? WHERE userID = ?`, + [lastfmUsername, userID], + function (error) { + if (error) { + console.error(error); + let sendText = "Error while updating last.fm username. Check console."; + reject(sendText); + } else { + let sendText = `Your last.fm username has been updated to '${lastfmUsername}'.`; + console.log(sendText); + resolve(sendText); + } + db.close(); + } + ); + }); + } + return sendText; +} \ No newline at end of file