Add fm set username command

Beginning of the command. Can't do anything other than setting and
updating your lastfm username.
This commit is contained in:
SileNce5k 2024-03-04 12:01:11 +01:00
parent bdc08b3153
commit 8c02dc5517
No known key found for this signature in database
GPG key ID: 961132EB78C8915F
4 changed files with 109 additions and 0 deletions

21
commands/misc/fm.js Normal file
View file

@ -0,0 +1,21 @@
const fmlogin = require("../../util/lastfm/fmlogin");
module.exports = {
name: 'fm',
description: 'Last fm commands. See `<prefix>help fm` for more info.',
moreHelp: ["Set username: `<prefix>fm set <lastfm_username>`",],
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);
}
};

View file

@ -17,6 +17,8 @@ async function checkAndConvertJSONToSQL(){
} }
} }
const createDatabaseTables = require('./server/createDatabaseTables'); const createDatabaseTables = require('./server/createDatabaseTables');
const createLastfmTable = require('./server/createLastfmTable');
createLastfmTable();
checkAndConvertJSONToSQL(); checkAndConvertJSONToSQL();
const Discord = require('discord.js'); 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] }); const client = new Discord.Client({ intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_PRESENCES] });

View file

@ -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();
}
);
})
}

65
util/lastfm/fmlogin.js Normal file
View file

@ -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;
}