2
@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”

任何帮助表示赞赏:)

4

2 回答 2

1

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

for activity in user.activities:
     if activity!= spotify :
         await ctx.send("You are not listening to Spotify ")
         break
于 2021-03-11T19:44:59.460 回答
0

只需await ctx.send("You are not listening to Spotify ")在命令末尾添加,并在return语句末尾添加if instance(activity, Spotify) == True语句。一旦找到用户正在收听的内容并发送嵌入消息,它将退出,否则它将继续到最后并发送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:代码中的 ,因为它对我不起作用,但是您可以保留它,因为您说它对您有用。

于 2021-03-11T20:46:03.137 回答