функция не возвращает embed discord.py

#discord.py

#discord.py

Вопрос:

У меня проблема с функцией: чтобы не переписывать те же 100 строк для каждой, если я решил создать эту функцию, которая возвращала бы embed, но, к сожалению, она не возвращает то же самое. У меня нет ошибок, поэтому я не понимаю, в чем проблема

Функция кода:

     def rob_true():
        ratm = random.randrange(50, 500)
        economy_system[id_other]["wallet"] -= ratm
        if economy_system[id_other]["wallet"] < 0:
            negative_wallet = economy_system[id_other]["wallet"]
            ratm = ratm   negative_wallet
            economy_system[id_other]["wallet"] = 0
        economy_system[id_author]["wallet"]  = ratm
        if ratm < 100:
            embed = discord.Embed(
                title="Rob!",
                description=f"Non sei stato molto fortunato.nHai rubato solo {ratm}€ a {other.name}",
                color=0x03c03c
            )
            embed.set_author(
                name=f"{ctx.author.name}",
                icon_url=f"{ctx.author.avatar_url}"
            )
            embed.set_thumbnail(url=ctx.guild.icon_url)
        if 100 < ratm < 250:
            embed = discord.Embed(
                title="Rob!",
                description=f"Ti è andata bene!nHai rubato {ratm}€ a {other.name}",
                color=0x03c03c
            )
            embed.set_author(
                name=f"{ctx.author.name}",
                icon_url=f"{ctx.author.avatar_url}"
            )
            embed.set_thumbnail(url=ctx.guild.icon_url)
        if 250 < ratm < 450:
            embed = discord.Embed(
                title="Rob!",
                description=f"Hai rubato un'ottima somma!nHai rubato {ratm}€ a {other.name}",
                color=0x03c03c
            )
            embed.set_author(
                name=f"{ctx.author.name}",
                icon_url=f"{ctx.author.avatar_url}"
            )
            embed.set_thumbnail(url=ctx.guild.icon_url)
        else:
            embed = discord.Embed(
                title="Rob!",
                description=f"Guarda che fortuna!nHai rubato {ratm}€ a {other.name}",
                color=0x03c03c
            )
            embed.set_author(
                name=f"{ctx.author.name}",
                icon_url=f"{ctx.author.avatar_url}"
            )
            embed.set_thumbnail(url=ctx.guild.icon_url)
        return embed
  

Весь код:

 @client.command()
async def rob_(ctx, other: discord.Member=None):
    #PRE-INIZIO: Primissime cose che deve fare il comando prima di iniziare, di solito cancellare se si vuole il messaggio del comando.
    await ctx.message.delete()
    id_author = str(ctx.author.id)
    #ERRORI: Settaggio dei vari errori che darà il comando se non viene eseguito perfettamente.
    embed = discord.Embed(
        color=0xa61022
    )
    if not other:
        embed.set_author(
            name="Per favore specifica la persona che vuoi rubare!",
        )
        await ctx.send(embed=embed, delete_after=10.0)
        return
    id_other = str(other.id)
    if id_author not in economy_system:
        embed.set_author(
            name=f"{ctx.author.name} prima di accedere a questo comando devi creare un account!"
        )
        await ctx.send(embed=embed, delete_after=10)
        await client.get_command("superdaily").reset_cooldown(ctx)
        return
    if id_other not in economy_system:
        embed.set_author(
            name=f"{other.name} non ha un account!"
        )
        await ctx.send(embed=embed, delete_after=10)
        return
    #INSERIMENTO: Qui iniziamo a definire le variabili che serviranno al nostro comando
    template = [
        ("1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", 0, 1, 0, 3, 2, 0,)
    ]
    reac1, reac2, reac3, reac4, reac5, reac6, res1, res2, res3, res4, res5, res6 = random.choice(template)
    print(reac1, reac2, reac3, reac4, reac5, reac6, res1, res2, res3, res4, res5, res6)
    count = 0
    value = 0
    if res1 == 1:
        value1 = reac1
    if res2 == 1:
        value1 = reac2
    if res3 == 1:
        value1 = reac3
    if res4 == 1:
        value1 = reac4
    if res5 == 1:
        value1 = reac5
    if res6 == 1:
        value1 = reac6
    if res1 == 2:
        value2 = reac1
    if res2 == 2:
        value2 = reac2
    if res3 == 2:
        value2 = reac3
    if res4 == 2:
        value2 = reac4
    if res5 == 2:
        value2 = reac5
    if res6 == 2:
        value2 = reac6
    if res1 == 3:
        value3 = reac1
    if res2 == 3:
        value3 = reac2
    if res3 == 3:
        value3 = reac3
    if res4 == 3:
        value3 = reac4
    if res5 == 3:
        value3 = reac5
    if res6 == 3:
        value3 = reac6
    print(value1, value2, value3)
    #USCITA: Da qui tutte il comando verrà eseguito con tutte le azioni che vogliamo, questa parte può essere la più lunga
    embed = discord.Embed(
        title="Rob!",
        description="Per rubare dei soldi bisogna essere veloci senza farsi scoprire!nCerto non saprai se ruberai tanto o poco ma l'importante è non farsi sgamare!nnHai 5 secondi di tempo per cliccare 3 reazione nel seguente ordine scritte su **status**n__N.B Il tempo partirà non appena lo status ti darà le 3 reazioni__n**STATUS**: Aggiungendo le reazioni...",
        color=0x003399
    )
    embed.set_author(
        name=f"{ctx.author.name}",
        icon_url=f"{ctx.author.avatar_url}"
    )
    embed.set_thumbnail(url=ctx.guild.icon_url)
    message = await ctx.send(embed=embed)
    await message.add_reaction(reac1)
    await message.add_reaction(reac2)
    await message.add_reaction(reac3)
    await message.add_reaction(reac4)
    await message.add_reaction(reac5)
    await message.add_reaction(reac6)
    embed = discord.Embed(
        title="Rob!",
        description=f"**STATUS**:n {value1}  **->**  {value2} **->** {value3}",
        color=0x003399
    )
    embed.set_author(
        name=f"{ctx.author.name}",
        icon_url=f"{ctx.author.avatar_url}"
    )
    embed.set_thumbnail(url=ctx.guild.icon_url)
    await message.edit(embed=embed)
    def rob_check(reaction, user):
        return user == ctx.author and str(reaction.emoji) in [reac1, reac2, reac3, reac4, reac5, reac6]
    def rob_true():
        #inserted above
    #def rob_false()
    while True:
        try:
            reaction, user = await client.wait_for("reaction_add", timeout=5, check=rob_check)
            if str(reaction.emoji) == reac1:
                count = count   1
                if count == 1:
                    if res1 == 1:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 2:
                    if res1 == 2:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 3:
                    if res1 == 3:
                        rob_true()
                        return
                    else:
                        await message.delete()
                        return
            if str(reaction.emoji) == reac2:
                count = count   1
                if count == 1:
                    if res2 == 1:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 2:
                    if res2 == 2:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 3:
                    if res2 == 3:
                        rob_true()
                        return
                    else:
                        await message.delete()
                        return
            if str(reaction.emoji) == reac3:
                count = count   1
                if count == 1:
                    if res3 == 1:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 2:
                    if res3 == 2:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 3:
                    if res3 == 3:
                        rob_true()
                        return
                    else:
                        await message.delete()
                        return
            if str(reaction.emoji) == reac4:
                count = count   1
                if count == 1:
                    if res4 == 1:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 2:
                    if res4 == 2:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 3:
                    if res4 == 3:
                        if economy_system[id_other]["wallet"] == 0:
                            embed = discord.Embed(
                                title="Rob!",
                                description=f"{other.name} non ha nulla quindi non guadagni nulla!",
                                color=0xa61022
                            )
                            embed.set_author(
                                name=f"{ctx.author.name}",
                                icon_url=f"{ctx.author.avatar_url}"
                            )
                            embed.set_thumbnail(url=ctx.guild.icon_url)
                            await message.edit(embed=embed)
                            return
                        rob_true()
                        await ctx.send(embed=embed)
                        _save()
                        return
                    else:
                        await message.delete()
                        return
            if str(reaction.emoji) == reac5:
                count = count   1
                if count == 1:
                    if res5 == 1:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 2:
                    if res5 == 2:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 3:
                    if res5 == 3:
                        rob_true()
                        return
                    else:
                        await message.delete()
                        return
            if str(reaction.emoji) == reac6:
                count = count   1
                if count == 1:
                    if res6 == 1:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 2:
                    if res6 == 2:
                        value = value   1
                    else:
                        await message.delete()
                        return
                if count == 3:
                    if res6 == 3:
                        rob_true()
                        return
                    else:
                        await message.delete()
                        return
        except asyncio.TimeoutError:
            print("ok")
            break
  

Код все еще неполный, на данный момент я просто тестировал эту функцию, и, к сожалению, она выдает мне эту ошибку.
Есть ли какой-нибудь способ исправить?

N.B Я задаю этот вопрос, потому что я нигде его не нашел, и я думаю, что это может быть полезно в будущем

Комментарии:

1. В строке 7 (весь код) нет заголовка embed = discord.Embed(color=0xa61022) . Также, пожалуйста, попробуйте создать простой код, мы не хотим читать все строки.

2. какое это имеет отношение к заголовку not? происходит то же самое. Если код длинный, потому что иначе вы бы ничего не поняли.

Ответ №1:

Это может быть связано с тем, что вы только возвращаете embed, а не отправляете его. Поэтому каждый раз, когда вы вызываете rob_true() , вам нужно отправить его вместо этого, выполнив await ctx.send(embed=rob_true()) (вместо when you call rob_true() ), который отправляет возвращенный embed .