Взаимодействие с реакциями
Решил создать предложку для мемов в дискорде. Принцип работы такой: человек отправляет свой мем, он отправляется в определенный канал на проверку, к сообщению добавляются реакции лайк/дизлайк. При нажатии на лайк, мем отправляется в канал с мемами. При нажатии на дизлайк, автору отправляется сообщение о том, что его мем не приняли. Код вроде как рабочий, но у меня нет взаимодействия с реакциями. При нажатии ничего не происходит. Как можно это сделать?
@client.command()
async def мем(ctx):
channel2 = client.get_channel(747507453780033636) # куда отправляются мемы на проверку
channel3 = client.get_channel(745583890701221958) # куда постятся одобренные мемы
f = await ctx.message.attachments[0].to_file()
embed = discord.Embed(description='Мем предложил: {}'.format(ctx.author.mention), color=0xf1c40f)
embed.set_image(url=f"attachment://{f.filename}")
await ctx.message.delete()
mess2 = await channel2.send(file=f, embed=embed)
await mess2.add_reaction("?")
await mess2.add_reaction("?")
if reaction.emoji=="?":
embed=discord.Embed(description='? {}'.format(ctx.author.mention))
mess3 = await channel3.send(file=f, embed=embed)
await mess3.add_reaction('?')
emb=discord.Embed(description='Поздравляю, твой мем приняли!?')
await ctx.author.send(embed=emb)
if reaction.emoji=="?":
embed=discord.Embed(description='Твой мем не приняли, придумай новый?')
await ctx.author.send(embed=embed)
Ответы (1 шт):
Автор решения: wetwixs
→ Ссылка
@client.command()
async def test(ctx, url):
channel2 = client.get_channel(729733881129074768) # куда отправляются мемы на проверку
channel3 = client.get_channel(703596629923725339) # куда постятся одобренные мемы
odobreniy_role = ctx.guild.get_role(718816678179504128) #Роль для одобрения этих мемов
embed = discord.Embed(description='Мем предложил: {}'.format(ctx.author.mention), color=0xf1c40f)
embed.add_field(name = 'Картинка', value = url, inline=False)
await ctx.message.delete()
mess2 = await channel2.send(embed=embed)
await mess2.add_reaction("?")
await mess2.add_reaction("?")
def check(reaction, user):
return odobreniy_role in user.roles #Проверка, для одобрения
reaction, user = await client.wait_for("reaction_add", check = check)
if str(reaction) =="?":
embed=discord.Embed(description='? {}'.format(ctx.author.mention))
embed.set_image(url=url)
mess3 = await channel3.send(embed=embed)
await mess3.add_reaction('?')
emb=discord.Embed(description='Поздравляю, твой мем приняли!?')
await ctx.author.send(embed=emb)
else:
embed=discord.Embed(description='Твой мем не приняли, придумай новый?')
await ctx.author.send(embed=embed)
Если что, то нужно написать !test и ссылку на этот ваш мем.