首页 > 解决方案 > Discord bot 没有发送 if not, else 语句的 else 部分?

问题描述

我正在尝试为我的机器人创建一个调平部分,但是它没有读取此代码中的 else 部分,因为它没有发送嵌入的消息。没有错误/回溯。代码:

@commands.command()
    async def level(self, ctx, member: discord.Member = None):
            member = ctx.author if not member else member
            member_id = str(member.id)
            guild_id = str(ctx.guild.id)

            user = await self.bot.pg_con.fetch("SELECT * FROM users WHERE user_id = $1 AND guild_id = $2", member_id, guild_id)

            if not user:
                await ctx.send(f"{member} doesn't have a level.")
            else:
                embed = discord.Embed(colour=member.colour, timestamp=ctx.message_created_at)

                embed.set_author(name=f"Level - {member}", icon_url=self.bot.user.avatar_url)

                embed.add_field(name="Level", value=user[0]['lvl'])
                embed.add_field(name="XP", value=user[0]['xp'])

                await ctx.send(embed=embed)

标签: python-3.xpostgresqldiscorddiscord.py-rewritepgadmin-4

解决方案


错误在线embed = discord.Embed(colour=member.colour, timestamp=ctx.message_created_at) 正确,embed = discord.Embed(colour=member.colour, timestamp=ctx.message.created_at) 请参阅Message.created_at 您的代码应如下所示:

@commands.command()
async def level(self, ctx, member: discord.Member = None):
    member = ctx.author if not member else member
    member_id = str(member.id)
    guild_id = str(ctx.guild.id)

    user = await self.bot.pg_con.fetch("SELECT * FROM users WHERE user_id = $1 AND guild_id = $2", member_id, guild_id)

    if not user:
        await ctx.send(f"{member} doesn't have a level.")
    else:
        embed = discord.Embed(colour=member.colour, timestamp=ctx.message.created_at)

        embed.set_author(name=f"Level - {member}", icon_url=self.bot.user.avatar_url)

        embed.add_field(name="Level", value=user[0]['lvl'])
        embed.add_field(name="XP", value=user[0]['xp'])

        await ctx.send(embed=embed)

推荐阅读