Improve default fm command, plus improve help

This commit is contained in:
SileNce5k 2024-04-08 11:46:24 +02:00
parent 12ba68e9d6
commit 7bd728a16e
No known key found for this signature in database
GPG key ID: 961132EB78C8915F
2 changed files with 43 additions and 13 deletions

View file

@ -1,6 +1,7 @@
const fmlogin = require("../../util/lastfm/fmlogin"); const fmlogin = require("../../util/lastfm/fmlogin");
const getCurrentScrobble = require("../../util/lastfm/getCurrentScrobble"); const getCurrentScrobble = require("../../util/lastfm/getCurrentScrobble");
const getTopTracks = require("../../util/lastfm/getTopTracks"); const getTopTracks = require("../../util/lastfm/getTopTracks");
const help = require("../info/help");
module.exports = { module.exports = {
name: 'fm', name: 'fm',
description: 'Last fm commands. See `<prefix>help fm` for more info.', description: 'Last fm commands. See `<prefix>help fm` for more info.',
@ -10,27 +11,31 @@ module.exports = {
"Get current scrobble: `<prefix>fm`", "Get current scrobble: `<prefix>fm`",
"Get top tracks: `<prefix>fmtt`" "Get top tracks: `<prefix>fmtt`"
], ],
async execute({ message, args, prefix }) { async execute({ message, args, prefix, client }) {
let sendText = "Something went wrong."; let sendText = {text: "Something went wrong.", embed: null};
switch (args[0]) { switch (args[0]) {
case "help": case "help":
sendText = this.moreHelp.join("\n").replace(/<prefix>/g, prefix); help.execute({ message: message, args: ["fm"], prefix: prefix, client: client });
break; return;
case "set": case "set":
sendText = await fmlogin(message.author.id, args[1]); sendText.text = await fmlogin(message.author.id, args[1]);
break; break;
case "toptracks": case "toptracks":
case "tt": case "tt":
args.shift(); args.shift();
sendText = await getTopTracks(message.author.id, args); sendText.text = await getTopTracks(message.author.id, args);
break; break;
default: 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; break;
} }
if(args.length < 1){ 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);
} }
}; };

View file

@ -1,8 +1,18 @@
const getNickname = require("../getNickname");
const parseMention = require("../parseMention");
const getFmUsername = require("./getFmUsername"); const getFmUsername = require("./getFmUsername");
const Discord = require('discord.js');
require("dotenv").config(); require("dotenv").config();
module.exports = async function(userID) { module.exports = async function(userID, guild) {
let sendText = ""; 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 = {}; let scrobble = {};
const apiKey = process.env.LAST_FM_API_KEY; const apiKey = process.env.LAST_FM_API_KEY;
let lastfmUsername = await getFmUsername(userID); let lastfmUsername = await getFmUsername(userID);
@ -16,6 +26,11 @@ module.exports = async function(userID) {
scrobble.artist = track.artist["#text"]; scrobble.artist = track.artist["#text"];
scrobble.song = track.name; scrobble.song = track.name;
scrobble.album = track.album["#text"]; 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); resolve(scrobble);
}) })
.catch(error => { .catch(error => {
@ -23,9 +38,19 @@ module.exports = async function(userID) {
reject(error); 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 { } else {
sendText = "You haven't set your last.fm username yet. Use `fm set <lastfm_username>` to set it."; sendText.text = "You haven't set your last.fm username yet. Use `fm set <lastfm_username>` to set it.";
} }
return sendText; return sendText;
} }