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

Как хранить id сообщений и аттрибуты viev`ов?

Мне нужно хранить 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())
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Научится работать с базами данных и хранить все данные там. Наиболее простой вариант - sqlite.
Ответ написан
Ваш ответ на вопрос

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

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