diff options
Diffstat (limited to 'code/cogs/lyrics.py')
-rw-r--r-- | code/cogs/lyrics.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/code/cogs/lyrics.py b/code/cogs/lyrics.py new file mode 100644 index 0000000..711084f --- /dev/null +++ b/code/cogs/lyrics.py @@ -0,0 +1,78 @@ +import discord +import datetime +from discord import app_commands +from discord.ext import commands +from cogs.music import Music + +from utils.config import BOT_COLOR + + +class Lyrics(commands.Cog): + def __init__(self, bot): + self.bot = bot + + @app_commands.command() + @app_commands.check(Music.create_player) + async def lyrics(self, interaction: discord.Interaction): + "Get lyrics for the song that is currently playing" + player = self.bot.lavalink.player_manager.get(interaction.guild.id) + + # If the Genius API client is not setup, send an error message + if self.bot.genius is not None: + embed = discord.Embed( + title="Lyrics Feature Error", + description="The lyrics feature is currently disabled due to errors with the Genius API.", + color=BOT_COLOR, + ) + embed.set_footer( + text=datetime.datetime.now(datetime.timezone.utc).strftime( + "%Y-%m-%d %H:%M:%S" + ) + + " UTC" + ) + return await interaction.response.send_message(embed=embed, ephemeral=True) + + # Search for the songs lyrics with Genius + song = self.bot.genius.search_song(player.current.title, player.current.author) + + # If no lyrics are found, send an error message + if song is None: + embed = discord.Embed( + title="Lyrics Not Found", + description="Unfortunately, I wasn't able to find any lyrics for the song that is currently playing.", + color=BOT_COLOR, + ) + embed.set_thumbnail(url=player.current.artwork_url) + embed.set_footer( + text=datetime.datetime.now(datetime.timezone.utc).strftime( + "%Y-%m-%d %H:%M:%S" + ) + + " UTC" + ) + + return await interaction.response.send_message(embed=embed, ephemeral=True) + + # Remove unwanted text + lyrics = song.lyrics + lyrics = lyrics.split(" Lyrics", 1)[-1] + lyrics = lyrics.replace("You might also like", "\n") + lyrics = lyrics[:-7] + + embed = discord.Embed( + title=f"Lyrics for {player.current.title} by {player.current.author}", + description=lyrics, + color=BOT_COLOR, + ) + embed.set_thumbnail(url=player.current.artwork_url) + embed.set_footer( + text=datetime.datetime.now(datetime.timezone.utc).strftime( + "%Y-%m-%d %H:%M:%S" + ) + + " UTC" + ) + + await interaction.response.send_message(embed=embed, ephemeral=True) + + +async def setup(bot): + await bot.add_cog(Lyrics(bot)) |