Задать вопрос
@mrkreenze

Кнопки выдают «Ошибка взаимодействия» но при этом в консоли ошибок нет. Как исправить?

Код всего:
import disnake
from disnake.ext import commands
from datetime import datetime

bot = commands.Bot(command_prefix="!", help_command=None, intents=disnake.Intents.all())

application_number = 0

class FamilyApplicationsModal(disnake.ui.Modal):
def __init__(self):
components = [
disnake.ui.TextInput(label="Имя Фамилия | Статик", placeholder="Mikey Manjirou | 2966", custom_id="name"),
disnake.ui.TextInput(label="IRL Возраст", placeholder="21", custom_id="age"),
disnake.ui.TextInput(label="Среднесуточный онлайн", placeholder="3-5+", custom_id="time"),
disnake.ui.TextInput(label="Откат стрельбы с ГГ (карабин)", placeholder="https://www.youtube.com/ или Нет", custom_id="gg_k"),
disnake.ui.TextInput(label="Откат стрельбы с ГГ (сайга)", placeholder="https://www.youtube.com/ или Нет", custom_id="gg_s")
]

super().__init__(title=" Заявка в семью", components=components, custom_id="familyapplicationsmodal")

async def callback(self, interaction: disnake.ModalInteraction) -> None:
global application_number
application_number += 1
name = interaction.text_values["name"]
age = interaction.text_values["age"]
time = interaction.text_values["time"]
gg_k = interaction.text_values["gg_k"]
gg_s = interaction.text_values["gg_s"]
await interaction.response.send_message("Заявка отправлена на рассмотрение High Staff!", ephemeral=True)

embed = disnake.Embed(
title=" Новая заявка в семью!",
description=f"=======================",
color=disnake.Color.from_rgb(250, 0, 221)
)

embed.add_field(name=" Имя Фамилия | Статик", value=name, inline=False)
embed.add_field(name="\n IRL Возраст", value=age, inline=False)
embed.add_field(name="\n Среднесуточный онлайн", value=time, inline=False)
embed.add_field(name="\n Откат стрельбы с ГГ (карабин)", value=gg_k, inline=False)
embed.add_field(name="\n Откат стрельбы с ГГ (сайга)", value=gg_s, inline=False)
embed.add_field(name="\n Discord ID", value=f"<@{interaction.user.id}>", inline=False)
embed.add_field(name="\n Номер заявки", value=f"#{application_number}", inline=False)

current_time = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
embed.set_footer(text=f"{interaction.user.display_name} • {current_time}", icon_url=interaction.user.avatar.url)

channel = interaction.guild.get_channel(1275367650666479680)
msg = await channel.send(content=f"||<@&1251007538938249226>||", embed=embed)

view = ApprovalButtons(interaction.user)
await msg.edit(view=view)

class ApprovalButtons(disnake.ui.View):
def __init__(self, applicant: disnake.User):
super().__init__()
self.applicant = applicant

@disnake.ui.button(label="Одобрить", style=disnake.ButtonStyle.green)
async def approve(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
if any(role.id in (1251007538938249226, 1250998695139344459) for role in interaction.user.roles):
self.disable_buttons()
await interaction.message.edit(view=self)

approval_embed = disnake.Embed(
title=f"✅ Заявка **#{application_number}** одобрена",
description=f"Одобрил: {interaction.user.display_name}",
color=disnake.Color.green()
)
await interaction.channel.send(embed=approval_embed)
else:
await interaction.response.send_message("❌ **У вас нет прав!**", ephemeral=True)

@disnake.ui.button(label="Отклонить", style=disnake.ButtonStyle.red)
async def deny(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
if any(role.id in (1251007538938249226, 1250998695139344459) for role in interaction.user.roles):
self.disable_buttons()
await interaction.message.edit(view=self)

denial_embed = disnake.Embed(
title=f"❌ Заявка **#{application_number}** отклонена",
description=f"Отклонил: {interaction.user.display_name}",
color=disnake.Color.red()
)
await interaction.channel.send(embed=denial_embed)
else:
await interaction.response.send_message("❌ **У вас нет прав!**", ephemeral=True)

def disable_buttons(self):
for item in self.children:
item.disabled = True

class SubmitApplicationButton(disnake.ui.Button):
def __init__(self):
super().__init__(label="Подать заявку", style=disnake.ButtonStyle.primary)

async def callback(self, interaction: disnake.MessageInteraction):
await interaction.response.send_modal(FamilyApplicationsModal())

class FamilyApplications(commands.Cog):
def __init__(self, bot):
self.bot = bot

async def family_applications(self, ctx):
embed = disnake.Embed(
title=" Заявка в семью",
description="Нажмите кнопку ниже, чтобы подать заявку в семью!",
color=disnake.Color.from_rgb(250, 0, 221)
)

view = disnake.ui.View()
view.add_item(SubmitApplicationButton())

await ctx.send(embed=embed, view=view)

@commands.command()
async def invite(self, ctx):
# Проверка на наличие нужных ролей
if any(role.id in (1251007538938249226, 1250998695139344459) for role in ctx.author.roles):
await self.family_applications(ctx)
else:
await ctx.send("❌ **У вас нет прав использовать эту команду!**", ephemeral=True)

def setup(bot):
bot.add_cog(FamilyApplications(bot))

if __name__ == "__main__":
bot.run("")

И после того, как на кнопку "Подать заявку" не нажимают в течении минуты, выскакивает "Ошибка взаимодействия", помогите фиксануть, ибо постоянно перезапускать команду, не очень удобно
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы