fm command defaults to displaying the current scrobble
This commit is contained in:
parent
8c02dc5517
commit
b861d943a6
4 changed files with 70 additions and 0 deletions
|
@ -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
17
package-lock.json
generated
|
@ -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",
|
||||||
|
|
|
@ -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",
|
||||||
|
|
48
util/lastfm/displayCurrentScrobble.js
Normal file
48
util/lastfm/displayCurrentScrobble.js
Normal 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;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue