import tomllib import nerimity import pylast with open("config.toml", "rb") as f: config = tomllib.load(f) # last.fm client network = pylast.LastFMNetwork( api_key = config['api_key'], api_secret = config['api_secret'] ) # nerimity client client = nerimity.Client( token=config['token'], prefix='!' ) # Prefix command -> !ping @client.command(name="ping") @client.slash_command(name="ping", description="Ping...") async def ping(ctx: nerimity.Context): await ctx.send("Pong!") # fm command @client.command(name="fm", aliases=["np"]) @client.slash_command(name="fm", description="Shows what you're currently playing") async def fm(ctx: nerimity.Context, params: str = ""): username = "" if params == "": username = "kaaisudev" else: username = params try: track = network.get_user(username).get_now_playing() if track == None: now_playing = False played_track = network.get_user(username).get_recent_tracks(limit=1) track = played_track[0].track else: now_playing = True track_url = track.get_url() track_name = track.get_name() track_artist = track.get_artist().get_name() track_artist_url = track.get_artist().get_url() if now_playing == True: await ctx.send(f"Now playing for **{username}**: [{track_name}]({track_url}) by [{track_artist}]({track_artist_url})") else: await ctx.send(f"Last played for **{username}**: [{track_name}]({track_url}) by [{track_artist}]({track_artist_url})") except IndexError: await ctx.send("[#e5323b]Error: User has no recent tracks or they're set to private.") except pylast.WSError: await ctx.send("[#e5323b]Error: User not found.") except Exception as e: print(e) await ctx.send("[#e5323b]Unknown error.") @client.listen("on_ready") async def on_ready(params): print(f"Logged in as {client.account.username}") client.run()