discord_bot/util/lastfm/getCurrentCover.js
SileNce5k 062e6d43dc
Update discord.js dependency to version 14 (#116)
* Update discord.js in package.json to v14.16.3 & update package-lock.json

* Update all embeds to work with v14

* Do not show discriminator if it is 0
2024-10-22 07:36:10 +02:00

61 lines
No EOL
2.3 KiB
JavaScript

const getNickname = require("../getNickname");
const parseMention = require("../parseMention");
const getFmUsername = require("./getFmUsername");
const {EmbedBuilder} = require('discord.js');
require("dotenv").config();
module.exports = async function(userID, guild) {
let parse = parseMention(userID, guild)
let user = guild.members.cache.get(parse);
let nickname = getNickname(user, guild)
if(nickname == null){
nickname = user.user.username;
}
let sendText = {text: "", embed: null}
let scrobble = {};
const apiKey = process.env.LAST_FM_API_KEY;
let lastfmUsername = await getFmUsername(userID);
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;
try {
track = data.recenttracks.track[0];
} catch (error) {
scrobble.error = true;
switch(data.error){
case 6:
scrobble.errorMsg = "User not found. Use `<prefix>fm set <lastfm_username>` to set your last.fm username.";
break;
default:
scrobble.errorMsg = "Last.fm is probably having problems. Try again later.";
break;
}
resolve(scrobble);
}
scrobble.cover = track.image[3]["#text"];
scrobble.artist = track.artist["#text"];
scrobble.album = track.album["#text"];
resolve(scrobble);
})
.catch(error => {
console.error(error);
reject(error);
});
});
if(scrobble.error != null){
sendText.text = scrobble.errorMsg;
return sendText;
}
const embed = new EmbedBuilder()
.setTitle(`${scrobble.artist} - **${scrobble.album}**`)
.setImage(scrobble.cover)
sendText.embed = embed;
} else {
sendText.text = "You haven't set your last.fm username yet. Use `<prefix>fm set <lastfm_username>` to set it.";
}
return sendText;
}