discord.py бот должен выдать роль на нажатие реакции
сделал команду marry:
@bot.command()
async def marry(ctx, member: disnake.Member):
embed = disnake.Embed(title=f":ring:согласны ли вы? o((^▽^))o", description= f"*Участник:* {ctx.author.name} решил предложить {member.name} жениться.(っ.❛ ᴗ ❛.)っ", color=0xFFFFFE)
embed.set_image(url='https://smolensk-i.ru/wp-content/uploads/2020/02/svadba.jpg')
await ctx.send(embed=embed)
но не могу понять как сделать так чтобы: когда нужный участник (member: disnake.Member) нажимал бы на роль, бот написал бы: вы поженились! и выдал бы обоим роль. либо же нажал на реакцию крестик и написало бы: {member.name} не согласился.
Ответы (1 шт):
Автор решения: RAINGM
→ Ссылка
@bot.command()
async def marry(ctx, member: disnake.Member):
embed = disnake.Embed(title=f":ring:согласны ли вы? o((^▽^))o", description= f"*Участник:* {ctx.author.name} решил предложить {member.name} жениться.(っ.❛ ᴗ ❛.)っ", color=0xFFFFFE)
embed.set_image(url='https://smolensk-i.ru/wp-content/uploads/2020/02/svadba.jpg')
message = await ctx.send(embed=embed)
await message.add_reaction('✅')
await message.add_reaction('❌')
def check(arg):
if member.id == arg.user_id:
return str(arg.emoji) == '✅' or str(arg.emoji) == '❌'
try:
payload = await bot.wait_for('raw_reaction_add', timeout=60.0, check=check)
if str(payload.emoji) == '✅':
await ctx.author.add_roles('role')
await member.add_roles('role')
await ctx.send("вы поженились!")
elif str(payload.emoji) = '❌':
await ctx.send(f"{member.name} не согласился")
except asyncio.TimeoutError:
return await ctx.send(f'{ctx.author.mention} Время вышло!')