diff --git a/commands/misc/fm.js b/commands/misc/fm.js index 0524169..aadeec6 100644 --- a/commands/misc/fm.js +++ b/commands/misc/fm.js @@ -1,6 +1,7 @@ const fmlogin = require("../../util/lastfm/fmlogin"); const getCurrentScrobble = require("../../util/lastfm/getCurrentScrobble"); const getTopTracks = require("../../util/lastfm/getTopTracks"); +const help = require("../info/help"); module.exports = { name: 'fm', description: 'Last fm commands. See `help fm` for more info.', @@ -10,27 +11,31 @@ module.exports = { "Get current scrobble: `fm`", "Get top tracks: `fmtt`" ], - async execute({ message, args, prefix }) { - let sendText = "Something went wrong."; + async execute({ message, args, prefix, client }) { + let sendText = {text: "Something went wrong.", embed: null}; switch (args[0]) { case "help": - sendText = this.moreHelp.join("\n").replace(//g, prefix); - break; + help.execute({ message: message, args: ["fm"], prefix: prefix, client: client }); + return; case "set": - sendText = await fmlogin(message.author.id, args[1]); + sendText.text = await fmlogin(message.author.id, args[1]); break; case "toptracks": case "tt": args.shift(); - sendText = await getTopTracks(message.author.id, args); + sendText.text = await getTopTracks(message.author.id, args); break; default: - sendText = `${args[0]} is not a valid subcommand.\nSee \`${prefix}help fm\` for more info.`; + sendText.text = `${args[0]} is not a valid subcommand.\nSee \`${prefix}help fm\` for more info.`; break; } if(args.length < 1){ - sendText = await getCurrentScrobble(message.author.id); + sendText = await getCurrentScrobble(message.author.id, message.guild); + } + if(sendText.embed != null){ + message.channel.send({embeds :[sendText.embed]}) + }else{ + message.channel.send(sendText.text); } - message.channel.send(sendText); } }; \ No newline at end of file diff --git a/util/lastfm/getCurrentScrobble.js b/util/lastfm/getCurrentScrobble.js index dbc7030..2d1f49b 100644 --- a/util/lastfm/getCurrentScrobble.js +++ b/util/lastfm/getCurrentScrobble.js @@ -1,8 +1,18 @@ +const getNickname = require("../getNickname"); +const parseMention = require("../parseMention"); const getFmUsername = require("./getFmUsername"); +const Discord = require('discord.js'); require("dotenv").config(); -module.exports = async function(userID) { - let sendText = ""; +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 isCurrentScrobble = "Current"; + let sendText = {text: "", embed: null} let scrobble = {}; const apiKey = process.env.LAST_FM_API_KEY; let lastfmUsername = await getFmUsername(userID); @@ -16,6 +26,11 @@ module.exports = async function(userID) { scrobble.artist = track.artist["#text"]; scrobble.song = track.name; scrobble.album = track.album["#text"]; + scrobble.cover = track.image[3]["#text"]; + console.log(typeof track['@attr'].nowplaying); + if(track['@attr'].nowplaying === "true"){ + isCurrentScrobble = "Last"; + } resolve(scrobble); }) .catch(error => { @@ -23,9 +38,19 @@ module.exports = async function(userID) { reject(error); }); }); - sendText = `Currently scrobbling:\n${scrobble.artist} - ${scrobble.song}\nAlbum: ${scrobble.album}`; + const embed = new Discord.MessageEmbed() + .setAuthor(`Now playing - ${nickname}`, user.user.avatarURL({ dynamic: true, size: 4096 })) + .setThumbnail(scrobble.cover) + .setColor(15780145) + .addFields({ + name: "Current:", value: `${scrobble.song}\n **${scrobble.artist} • ** ${scrobble.album}` + }, + { + name: "Previous:", value: `**TODO: Make this show the previous scrobble**` + },) + sendText.embed = embed; } else { - sendText = "You haven't set your last.fm username yet. Use `fm set ` to set it."; + sendText.text = "You haven't set your last.fm username yet. Use `fm set ` to set it."; } return sendText; } \ No newline at end of file