fm command defaults to displaying the current scrobble

This commit is contained in:
SileNce5k 2024-03-04 12:40:33 +01:00
parent 8c02dc5517
commit b861d943a6
No known key found for this signature in database
GPG key ID: 961132EB78C8915F
4 changed files with 70 additions and 0 deletions

View file

@ -1,4 +1,5 @@
const fmlogin = require("../../util/lastfm/fmlogin"); const fmlogin = require("../../util/lastfm/fmlogin");
const displayCurrentScrobble = require("../../util/lastfm/displayCurrentScrobble");
module.exports = { module.exports = {
name: 'fm', name: 'fm',
@ -16,6 +17,9 @@ module.exports = {
default: default:
break; break;
} }
if(args.length < 1){
sendText = await displayCurrentScrobble(message.author.id);
}
message.channel.send(sendText); message.channel.send(sendText);
} }
}; };

17
package-lock.json generated
View file

@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"@zuzak/owo": "^1.14.1", "@zuzak/owo": "^1.14.1",
"discord.js": "^13.6.0", "discord.js": "^13.6.0",
"dotenv": "^16.4.5",
"express": "^4.18.2", "express": "^4.18.2",
"mysql": "^2.18.1", "mysql": "^2.18.1",
"parse-ms": "^2.1.0", "parse-ms": "^2.1.0",
@ -588,6 +589,17 @@
"npm": ">=7.0.0" "npm": ">=7.0.0"
} }
}, },
"node_modules/dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/ee-first": { "node_modules/ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@ -2585,6 +2597,11 @@
"ws": "^8.9.0" "ws": "^8.9.0"
} }
}, },
"dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg=="
},
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",

View file

@ -6,6 +6,7 @@
"dependencies": { "dependencies": {
"@zuzak/owo": "^1.14.1", "@zuzak/owo": "^1.14.1",
"discord.js": "^13.6.0", "discord.js": "^13.6.0",
"dotenv": "^16.4.5",
"express": "^4.18.2", "express": "^4.18.2",
"mysql": "^2.18.1", "mysql": "^2.18.1",
"parse-ms": "^2.1.0", "parse-ms": "^2.1.0",

View file

@ -0,0 +1,48 @@
require("dotenv").config();
module.exports = async function(userID) {
let sendText = "";
let scrobble = {};
const apiKey = process.env.LAST_FM_API_KEY;
let lastfmUsername = await new Promise((resolve, reject)=>{
const sqlite3 = require('sqlite3').verbose();
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 {
if (row == undefined) {
resolve(undefined);
}
resolve(row.lastfmUsername);
}
db.close();
}
);
});
if(lastfmUsername != undefined){
scrobble = await new Promise ((resolve, reject) => {
fetch(`https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=${lastfmUsername}&api_key=${apiKey}&format=json`)
.then(response => response.json())
.then(data => {
let scrobble = {};
let track = data.recenttracks.track[0];
scrobble.artist = track.artist["#text"];
scrobble.song = track.name;
scrobble.album = track.album["#text"];
resolve(scrobble);
})
.catch(error => {
console.error(error);
reject(error);
});
});
sendText = `Currently scrobbling:\n${scrobble.artist} - ${scrobble.song}\nAlbum: ${scrobble.album}`;
} else {
sendText = "You haven't set your last.fm username yet. Use `fm set <lastfm_username>` to set it.";
}
return sendText;
}