Пишу бота для авторизации на сервере. Код ниже работает, но, начиная с примера, повторяет его два раза, а сообщение с успешным прохождением не хочет показывать как эфемерность.
import discord
from discord.ext import commands
from discord import member
import requests
from dislash import InteractionClient, ActionRow, Button, ButtonStyle
intents = discord.Intents.all()
bot = commands.Bot(command_prefix='!mc')
inter_client = InteractionClient(bot)
@bot.command()
async def verif(ctx): #начало верификации
emb = discord.Embed(
description =
f"""
Здраствуйте вы попали на сервер {ctx.guild.name}, пройдите верификацию чтобы получить доступ к другим каналам.
""",
colour = 0xFF8C00
)
emb.set_thumbnail(url = 'https://cdn.discordapp.com/attachments/772850448892690462/880752123418136596/947d1f802c858b540b84bc3000fc2439_1_-removebg-preview.png')
emb.set_author(name = 'Верификация')
row = ActionRow(
Button(
style = ButtonStyle.green,
label = 'Прохождение верификации',
#custom_id = 'verif_button'
)
)
await ctx.send(embed = emb, components = [row])
@bot.listen('on_button_click')
async def on_button_click_one(ctx): #проверка на бота
emb = discord.Embed(title='Прохождение верификации', description='Для прохождения верификации вам необходимо решить пример!', color=0xdd2c2c )
emb.add_field(name='Пример', value='32-17', inline=False)
row = ActionRow(
Button(
style=ButtonStyle.red,
label='15',
custom_id='work_button'
),
Button(
style=ButtonStyle.gray,
label='49'
),
Button(
style=ButtonStyle.green,
label='-17'
)
)
await ctx.send(embed=emb, ephemeral = True, components=[row])
@bot.listen('on_button_click')
async def on_button_click_two(inter):
res = 'Вы успешно прошли верификацию!' #вывод сообщение о получении роли
guild = bot.get_guild(inter.guild.id)
if inter.component.id == "work_button":
verif = guild.get_role(1000346563740184607)
member = inter.author
await member.add_roles(verif)
await inter.reply(res, ephemeral=True)