#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 .