Kod Bota Discord


            import discord
            from discord.ext import commands
            from discord.ui import View, Button
            import requests
            
            # Ustawienia bota
            intents = discord.Intents.default()
            intents.messages = True
            intents.message_content = True
            intents.guilds = True
            intents.members = True
            
            bot = commands.Bot(command_prefix="!", intents=intents)
            
            # Zmienne konfiguracyjne
            DOWOD_CHANNEL_ID_PISANIE = 123456789012345678  # ID kanału, gdzie można składać dowody
            REQUEST_CHANNEL_ID = 123456789012345678       # ID kanału, gdzie dowody są wyświetlane
            FIRST_ACCEPT_ROLE = 987654321098765432        # ID roli nadawanej po pierwszym zaakceptowanym dowodzie
            SECOND_ACCEPT_ROLE = 876543210987654321       # ID roli nadawanej po drugim zaakceptowanym dowodzie
            PISANIE_DOWODU_ROLES = [123456789012345678]   # ID ról, które mogą składać dowody
            
            # Słownik przechowujący informacje o dowodach
            user_proofs = {}
            
            
            def save_all_data():
                pass
            
            
            def has_accept_role(user):
                return True
            
            
            @bot.command
            async def wdowod(ctx):
                # Sprawdzenia czy komenda jest wywoływana w odpowiednim kanale
                if ctx.channel.id != DOWOD_CHANNEL_ID_PISANIE:
                    await ctx.send("Ta komenda jest dostępna tylko na określonym kanale.")
                    return
            
                if not any(role.id in PISANIE_DOWODU_ROLES for role in ctx.author.roles):
                    await ctx.send("Nie masz odpowiednich uprawnień do używania tej komendy.")
                    return
            
                user_id = str(ctx.author.id)
            
                # sprawdza czy chłop ma dowód
                if user_id in user_proofs:
                    await ctx.send("Już złożyłeś dowód. Nie możesz składać więcej dowodów.")
                    return
            
                def check(m):
                    return m.author == ctx.author and isinstance(m.channel, discord.DMChannel)
            
                async def ask_question(prompt):
                    await ctx.author.send(prompt)
                    odpowiedz = await bot.wait_for("message", check=check)
                    return odpowiedz.content
            
                try:
                    postac = int(await ask_question("Która postać (narazie tylko 1)?"))
                    if postac not in [1]:
                        await ctx.author.send("Proszę podać poprawną postać (1).")
                        return
                except ValueError:
                    await ctx.author.send("Proszę podać numer postaci (1).")
                    return
            
                imieNazwisko = await ask_question("Imię i nazwisko:")
                obywatelstwo = await ask_question("Obywatelstwo:")
                plec = await ask_question("Płeć:")
                nickRoblox = await ask_question("Nick Roblox:")
                historiaPostaci = await ask_question("Krótka historia postaci:")
                nickDiscord = await ask_question("Nick Discord:")
            
                dowod_info = {
                    "postac": postac,
                    "imieNazwisko": imieNazwisko,
                    "obywatelstwo": obywatelstwo,
                    "plec": plec,
                    "nickRoblox": nickRoblox,
                    "nickDiscord": nickDiscord,
                    "historiaPostaci": historiaPostaci
                }
            
                # Pobranie danych z Roblox
                try:
                    roblox_user_response = requests.post(
                        "https://users.roblox.com/v1/usernames/users",
                        json={"usernames": [nickRoblox], "excludeBannedUsers": True}
                    )
                    roblox_data = roblox_user_response.json()
            
                    if roblox_data and 'data' in roblox_data and roblox_data['data']:
                        roblox_user_id = roblox_data['data'][0]['id']
                    else:
                        await ctx.author.send(f"Nie znaleziono użytkownika Roblox o podanym nicku: {nickRoblox}")
                        return
                except Exception as e:
                    await ctx.author.send("Wystąpił problem podczas pobierania danych użytkownika Roblox.")
                    print(f"Error fetching Roblox user data: {e}")
                    return
            
                try:
                    roblox_avatar_response = requests.get(f"https://thumbnails.roblox.com/v1/users/avatar?userIds={roblox_user_id}&size=720x720&format=Png")
                    avatar_data = roblox_avatar_response.json()
            
                    if avatar_data and 'data' in avatar_data and avatar_data['data']:
                        roblox_avatar_url = avatar_data['data'][0]['imageUrl']
                    else:
                        await ctx.author.send("Nie udało się pobrać awatara użytkownika Roblox.")
                        return
                except Exception as e:
                    await ctx.author.send("Wystąpił problem podczas pobierania awatara użytkownika Roblox.")
                    print(f"Error fetching Roblox avatar: {e}")
                    return
            
                # Tworzenie embedu
                embed = discord.Embed(title="CA ID Card", color=0xFFFF00)
                embed.add_field(name="👥|Postać", value=postac, inline=False)
                embed.add_field(name="📧|Imie i Nazwisko", value=imieNazwisko, inline=False)
                embed.add_field(name="🌎|Obywatelstwo", value=obywatelstwo, inline=False)
                embed.add_field(name="💞|Płeć", value=plec, inline=False)
                embed.add_field(name="🔑|Nick Roblox", value=nickRoblox, inline=False)
                embed.add_field(name="🪁|Nick Discord", value=nickDiscord, inline=False)
                embed.add_field(name="📋|Historia Postać", value=historiaPostaci, inline=False)
                embed.set_image(url=roblox_avatar_url)
            
                # Klasa przycisków
                class DowodView(View):
                    def __init__(self):
                        super().__init__(timeout=None)
            
                    @discord.ui.button(label="Akceptuję", style=discord.ButtonStyle.green)
                    async def accept_button(self, interaction: discord.Interaction, button: Button):
                        if not has_accept_role(interaction.user):
                            await interaction.response.send_message("Nie masz odpowiednich ról do akceptowania dowodu.", ephemeral=True)
                            return
            
                        # Zapisanie dowodu i nadanie ról
                        user_proofs[user_id] = {"dowod_info": dowod_info, "dowod_count": 0}
                        save_all_data()
                        user_proofs[user_id]['dowod_count'] += 1
            
                        # Nadanie odpowiedniej roli
                        if user_proofs[user_id]['dowod_count'] == 1:
                            role = discord.utils.get(ctx.guild.roles, id=FIRST_ACCEPT_ROLE)
                            if role:
                                await ctx.author.add_roles(role)
                                await ctx.author.send(f"Gratulacje! Otrzymałeś rolę: {role.name}")
                        elif user_proofs[user_id]['dowod_count'] == 2:
                            role = discord.utils.get(ctx.guild.roles, id=SECOND_ACCEPT_ROLE)
                            if role:
                                await ctx.author.add_roles(role)
                                await ctx.author.send(f"Gratulacje! Otrzymałeś rolę: {role.name}")
            
                        await interaction.response.send_message("Dowód został zaakceptowany.", ephemeral=True)
                        self.stop()
            
                    @discord.ui.button(label="Odrzucam", style=discord.ButtonStyle.red)
                    async def reject_button(self, interaction: discord.Interaction, button: Button):
                        if not has_accept_role(interaction.user):
                            await interaction.response.send_message("Nie masz odpowiednich ról do odrzucania dowodu.", ephemeral=True)
                            return
            
                        await interaction.response.send_message("Dowód został odrzucony.", ephemeral=True)
                        self.stop()
            
                # Wysyłanie embedu z przyciskami
                dowod_channel = bot.get_channel(REQUEST_CHANNEL_ID)
                view = DowodView()
                await dowod_channel.send(embed=embed, view=view)
            
            @bot.command()
            async def udowod(ctx):
                if not is_allowed_channel(ctx, DOWOD_CHANNEL_ID):
                    await ctx.send("Ta komenda jest dostępna tylko na określonym kanale.")
                    return
            
                if not any(role.id in PISANIE_DOWODU_ROLES for role in ctx.author.roles):
                    await ctx.send("Nie masz odpowiednich uprawnień do używania tej komendy.")
                    return
            
                user_id = str(ctx.author.id)
            
                if user_id not in user_proofs:
                    await ctx.send("Nie masz żadnych zapisanych dowodów do usunięcia.")
                    return
            
                del user_proofs[user_id]
                save_all_data()
                await ctx.send(f"Dowód użytkownika {ctx.author.mention} został usunięty.")
            
            
            @bot.command()
            async def pdowod(ctx, postac: int):
                if not is_allowed_channel(ctx, DOWOD_CHANNEL_ID):
                    await ctx.send("Ta komenda jest dostępna tylko na określonym kanale.")
                    return
            
                if not any(role.id in PISANIE_DOWODU_ROLES for role in ctx.author.roles):
                    await ctx.send("Nie masz odpowiednich uprawnień do używania tej komendy.")
                    return
            
                user_id = str(ctx.author.id)
            
                if user_id not in user_proofs or postac not in user_proofs[user_id]:
                    await ctx.send(f"Nie znaleziono dowodu dla postaci {postac}.")
                    return
            
                dowod_info = user_proofs[user_id][postac]
                nickRoblox = dowod_info["nickRoblox"]
            
                embed = discord.Embed(title="CA ID Card", color=0xFFFF00)
                embed.add_field(name="👨‍💼 Postać", value=postac, inline=False)
                embed.add_field(name="⏰ Imie i Nazwisko", value=dowod_info["imieNazwisko"], inline=False)
                embed.add_field(name="⚠️ Obywatelstwo", value=dowod_info["obywatelstwo"], inline=False)
                embed.add_field(name="⚠️ Pleć", value=dowod_info["plec"], inline=False)
                embed.add_field(name="🔑 Nick Roblox", value=dowod_info["nickRoblox"], inline=False)
                embed.add_field(name="👨‍💼 Nick Discord", value=dowod_info["nickDiscord"], inline=False)
                embed.add_field(name="⏰ Historia Postać", value=dowod_info["historiaPostaci"], inline=False)
            
                await ctx.send(embed=embed)
            
            bot.run("TOKEN")
        

Pełny kod jest dostępny w repozytorium projektu lub na żądanie!