繁体   English   中英

如何错误处理 discord.py 中的 spotify 命令?

[英]How can i error handle the spotify command in discord.py?

@commands.command()
async def spotify(self, ctx, user: discord.Member = None):

    if user == None:
        user = ctx.author
        pass
    if user.activities:
        for activity in user.activities:
            if isinstance(activity, Spotify)== True:
                embed = discord.Embed(
                    title=f"{user.name}'s Spotify",
                    description="Listening to {}".format(activity.title),
                    color=activity.colour)
                duration = str(activity.duration)
                finalduration = duration[3:7]
                embed.set_thumbnail(url=activity.album_cover_url)
                embed.add_field(name="Artist", value=activity.artist)
                embed.add_field(name="Album", value=activity.album)
                embed.add_field(name="Song Duration", value=finalduration)
                embed.set_footer(text="Song started at {}".format(activity.created_at.strftime("%H:%M.%p")))
                embed.url = (f"https://open.spotify.com/embed/track/{activity.track_id}")
                await ctx.send(embed=embed)

这是我的 spotify 命令,虽然它工作正常,但我不知道如何错误处理它。

例如,如果用户没有在听 Spotify,我想让它发送一条消息,比如“你没有在听 Spotify”

任何帮助表示赞赏:)

首先欢迎堆栈溢出。也许尝试类似的东西

for activity in user.activities:
     if activity!= spotify :
         await ctx.send("You are not listening to Spotify ")
         break

只需在命令末尾添加await ctx.send("You are not listening to Spotify ") ,并在if instance(activity, Spotify) == True语句末尾添加return语句。 一旦找到用户正在收听的内容并发送嵌入消息,它将退出,否则它将继续到最后并发送You are not listening to spotify

intents = discord.Intents().all()
client = commands.Bot(command_prefix='.', intents=intents)

@client.command(pass_context=True)
async def spotify(ctx, user: discord.Member = None):
    if user == None:
        user = ctx.author
        pass
    if user.activities:
        for activity in user.activities:
            if str(activity).lower() == "spotify":
                embed = discord.Embed(
                    title=f"{user.name}'s Spotify",
                    description="Listening to {}".format(activity.title),
                    color=activity.colour)
                duration = str(activity.duration)
                finalduration = duration[3:7]
                embed.set_thumbnail(url=activity.album_cover_url)
                embed.add_field(name="Artist", value=activity.artist)
                embed.add_field(name="Album", value=activity.album)
                embed.add_field(name="Song Duration", value=finalduration)
                embed.set_footer(text="Song started at {}".format(activity.created_at.strftime("%H:%M.%p")))
                embed.url = (f"https://open.spotify.com/embed/track/{activity.track_id}")
                await ctx.send(embed=embed)
                return
    await ctx.send("User is not doing anything")
    return 

注意:我在我的代码中修改了if isinstance(activity, Spotify)== True:因为它对我不起作用,但你可以保留它,因为你说它对你有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM