Мне нужно хранить id сообщений в канале и атрибуты (user_id, nickname, uzer) для кнопок, вопрос как это сделать?
Можете накинуть каких-то примеров на моем коде?
class FormButton(View):
def __init__(self):
super().__init__(timeout=None)
@button(label="Заявка", emoji="", style=discord.ButtonStyle.blurple, custom_id="formbat")
async def formButtonCallback(self, button: discord.ui.Button, interaction: discord.Interaction):
await interaction.response.send_modal(TicketModal())
class TicketModal(Modal):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs, title="Заявка", timeout=None, custom_id="TicketModal")
self.add_item(InputText(
label="Как вас зовут?",
placeholder="Даниил",
custom_id="name"
))
self.add_item(InputText(
label="Сколько вам лет?",
placeholder="17 (От 14 лет)",
custom_id="age"
))
self.add_item(InputText(
label="Ваш ник в игре Minecraft.",
placeholder="DaniilPlay_Danya",
min_length=4,
max_length=16,
custom_id="nickname"
))
self.add_item(InputText(
label="Будете ли вы записывать видео на сервере?",
placeholder="Да, ссылка на Youtube (Оставте пустым если 'Нет')",
required=False,
custom_id="youtube"
))
self.add_item(InputText(
label="Будете ли вы проводить трансляции на сервере?",
placeholder="Да, ссылка на Twitch/YouTube (Оставте пустым если 'Нет')",
required=False,
custom_id="twitch"
))
async def callback(self, interaction: discord.Interaction):
name = self.children[0].value
age = self.children[1].value
nickname = self.children[2].value
youtube = self.children[3].value
twitch = self.children[4].value
uzer = interaction.user.mention
channel_id = 1219092823480074251
channel = interaction.guild.get_channel(channel_id)
formcount = await channel.history(limit=None).flatten()
form_count = sum(1 for message in formcount if message.embeds)
embed = discord.Embed(title=f"Заявка № ``{form_count}``",
description=f"**Как вас зовут?**\n**> Ваш ответ: — ``{name}``**\n**Сколько вам лет?**\n**> Ваш ответ: — ``{age}``**\n**Ваш ник**\n**> Ваш ответ: — ``{nickname}``**\n**Youtube**\n**> Ваш ответ: — ``{youtube}``**\n**Twitch/YouTube**\n**> Ваш ответ: — ``{twitch}``**",
colour=0x02f71f,
)
embed.set_footer(text=f"Ваша заявка отправлена, ожидайте. ID: {interaction.user.id}")
embed.set_author(name="1HP", icon_url="https://files.catbox.moe/qla4at.png")
await interaction.user.send(embed=embed)
await interaction.response.send_message(embed=embed, ephemeral= True)
await channel.send(uzer, embed=embed, view=FormButtonReaction(interaction.user.id, nickname, uzer))
class FormButtonReaction(View):
def __init__(self, user_id, nickname, uzer):
super().__init__(timeout=None)
self.uzer = uzer
self.user_id = user_id
self.nickname = nickname
@button(label="Принять", emoji="✅", style=discord.ButtonStyle.blurple, custom_id="acceptbat")
async def AcceptButtonReactionCallback(self, button: discord.ui.Button, interaction: discord.Interaction):
guild = interaction.guild
member = guild.get_member(self.user_id)
role = discord.utils.get(guild.roles, name="❤️1HP участник")
await member.add_roles(role)
await member.send(f"{self.uzer} Ваша заявка принята!")
await interaction.response.send_message("Заявка принята", ephemeral=True)
rcon = AsyncRCON('IP', 'PASS')
await rcon.open_connection()
res = await rcon.command(f'easywhitelist add {self.nickname}')
print(res)
rcon.close()
@button(label="Отклонить", emoji="❌", style=discord.ButtonStyle.green, custom_id="declinebat")
async def DeclineButtonReactionCallback(self, button: discord.ui.Button, interaction: discord.Interaction):
guild = interaction.guild
member = guild.get_member(self.user_id)
await member.send(f"{self.uzer} Ваша заявка отклонена!")
await interaction.response.send_message("Заявка отклонена", ephemeral=True)
@commands.slash_command()
@commands.is_owner()
async def form_update(ctx: discord.ApplicationContext):
embed = discord.Embed(title="Чтобы попасть на сервер:",
description="**> >> Вам нужно заполнить заявку**\n**>>> >> После рассмотрения заявки, вам напишет бот\n>> Который сообщит вам о решении**\n**>>> >> После одобрения вашей заявки\n>> Вы добавляйтесь в Whitelist сервера\n>> Вам дается роль ||<@&1120036780985565234>||\n>> Вам открывается доступ к закрытым каналам\n||<#1120729223447978025>, <#1120084471320956999>, <#1120079386910150677>, <#1120073102865473707>, <#1120688810972418180>, <#1120689662734913537>, ||**",
colour=0x02f71f)
embed.set_author(name="1HP", icon_url="https://files.catbox.moe/qla4at.png")
await ctx.respond(embed=embed, view=FormButton())