CoolFace
Apppublic

paelelael/PaelSupport

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
bot.py151 linesDownload Raw Back to root
1import discord
2from discord.ext import commands
3from discord.ui import Button, View, Select
4import os
5
6ROLE_VERIFIED_ID = 1521553615259439156  
7
8# ID Role Sesuai Data Server Anda
9ROLE_COWOK_ID = 1521560704568659998  
10ROLE_CEWEK_ID = 1521560803164028958  
11ROLE_REMAJA_ID = 1521561488509112431  # <18
12ROLE_DEWASA_ID = 1521561563214119153  # 18+
13
14ROLE_PUBG_ID   = 1521561119557157036  
15ROLE_VALO_ID   = 1521561079371530250  
16ROLE_ML_ID     = 1521560980276903988  
17ROLE_ROBLOX_ID = 1521560918989996235  
18ROLE_FF_ID     = 1521560774743687239  
19
20# ID Peran Member Hijau Anda
21ROLE_AKHIR_MEMBER_ID = 1521561563214119153 # Diperbarui otomatis ke ID Member Hijau Anda
22
23intents = discord.Intents.default()
24intents.members = True  
25intents.message_content = True  
26
27bot = commands.Bot(command_prefix='!', intents=intents)
28
29async def periksa_dan_buka_server(interaction: discord.Interaction):
30    guild = interaction.guild
31    user = interaction.user
32    role_akhir = guild.get_role(ROLE_AKHIR_MEMBER_ID)
33    if role_akhir is None: return
34
35    punya_verified = guild.get_role(ROLE_VERIFIED_ID) in user.roles
36    punya_gender = (guild.get_role(ROLE_COWOK_ID) in user.roles) or (guild.get_role(ROLE_CEWEK_ID) in user.roles)
37    punya_umur = (guild.get_role(ROLE_REMAJA_ID) in user.roles) or (guild.get_role(ROLE_DEWASA_ID) in user.roles)
38
39    if punya_verified and punya_gender and punya_umur:
40        if role_akhir not in user.roles:
41            await user.add_roles(role_akhir)
42            await interaction.followup.send("๐ŸŽ‰ Selamat! Kamu telah melengkapi data profil. Seluruh channel Demonology sekarang terbuka!", ephemeral=True)
43
44async def toggle_role(interaction: discord.Interaction, role_id: int, role_name: str):
45    guild = interaction.guild
46    role = guild.get_role(role_id)
47    if role is None: return
48    await interaction.response.defer(ephemeral=True)
49
50    if role in interaction.user.roles:
51        try:
52            await interaction.user.remove_roles(role)
53            await interaction.followup.send(f"Peran **{role_name}** telah dihapus.", ephemeral=True)
54        except discord.Forbidden: pass
55    else:
56        try:
57            await interaction.user.add_roles(role)
58            await interaction.followup.send(f"Kamu sekarang mendapatkan peran **{role_name}**!", ephemeral=True)
59            await periksa_dan_buka_server(interaction)
60        except discord.Forbidden: pass
61
62class VerifyView(View):
63    def __init__(self): super().__init__(timeout=None) 
64    @discord.ui.button(label="Verify ๐Ÿ”“", style=discord.ButtonStyle.green, custom_id="verify_btn")
65    async def verify_button(self, interaction: discord.Interaction, button: Button):
66        guild = interaction.guild
67        role = guild.get_role(ROLE_VERIFIED_ID)
68        if role in interaction.user.roles:
69            await interaction.response.send_message("Kamu sudah terverifikasi!", ephemeral=True)
70        else:
71            await interaction.response.defer(ephemeral=True)
72            await interaction.user.add_roles(role)
73            await interaction.followup.send("Verifikasi berhasil! Silakan lengkapi Get-Role di bawah.", ephemeral=True)
74            await periksa_dan_buka_server(interaction)
75
76class GenderSelect(Select):
77    def __init__(self):
78        options = [
79            discord.SelectOption(label="Cowok โ™‚๏ธ", description="Pilih jika kamu Cowok", value="cowok"),
80            discord.SelectOption(label="Cewek โ™€๏ธ", description="Pilih jika kamu Cewek", value="cewek"),
81        ]
82        super().__init__(placeholder="Pilih Gender kamu di sini...", min_values=1, max_values=1, options=options, custom_id="gender_select_v7")
83    async def callback(self, interaction: discord.Interaction):
84        if self.values == "cowok": await toggle_role(interaction, ROLE_COWOK_ID, "Cowok")
85        elif self.values == "cewek": await toggle_role(interaction, ROLE_CEWEK_ID, "Cewek")
86
87class AgeSelect(Select):
88    def __init__(self):
89        options = [
90            discord.SelectOption(label="Remaja (<18)", description="Kategori umur di bawah 18 tahun", value="remaja"),
91            discord.SelectOption(label="Dewasa (18+)", description="Kategori umur 18 tahun ke atas", value="dewasa"),
92        ]
93        super().__init__(placeholder="Pilih Kategori Umur kamu di sini...", min_values=1, max_values=1, options=options, custom_id="age_select_v7")
94    async def callback(self, interaction: discord.Interaction):
95        if self.values == "remaja": await toggle_role(interaction, ROLE_REMAJA_ID, "Remaja (<18)")
96        elif self.values == "dewasa": await toggle_role(interaction, ROLE_DEWASA_ID, "Dewasa (18+)")
97
98class GameSelect(Select):
99    def __init__(self):
100        options = [
101            discord.SelectOption(label="Mobile Legends", description="Main MLBB", emoji="๐ŸŽฎ", value="ml"),
102            discord.SelectOption(label="PUBG Mobile", description="Main PUBGM", emoji="๐Ÿ”ซ", value="pubg"),
103            discord.SelectOption(label="Valorant", description="Main Valo", emoji="๐ŸŽฏ", value="valo"),
104            discord.SelectOption(label="Roblox", description="Main Roblox", emoji="๐Ÿงฑ", value="roblox"),
105            discord.SelectOption(label="Free Fire", description="Main FF", emoji="๐Ÿ”ฅ", value="ff"),
106        ]
107        super().__init__(placeholder="Pilih Game yang kamu mainkan...", min_values=1, max_values=1, options=options, custom_id="game_select_v7")
108    async def callback(self, interaction: discord.Interaction):
109        if self.values == "ml": await toggle_role(interaction, ROLE_ML_ID, "Mobile Legends")
110        elif self.values == "pubg": await toggle_role(interaction, ROLE_PUBG_ID, "PUBG Mobile")
111        elif self.values == "valo": await toggle_role(interaction, ROLE_VALO_ID, "Valorant")
112        elif self.values == "roblox": await toggle_role(interaction, ROLE_ROBLOX_ID, "Roblox")
113        elif self.values == "ff": await toggle_role(interaction, ROLE_FF_ID, "Free Fire")
114
115class GenderView(View):
116    def __init__(self): super().__init__(timeout=None); self.add_item(GenderSelect())
117class AgeView(View):
118    def __init__(self): super().__init__(timeout=None); self.add_item(AgeSelect())
119class GameView(View):
120    def __init__(self): super().__init__(timeout=None); self.add_item(GameSelect())
121
122@bot.event
123async def on_ready():
124    print(f'Pael Bot telah aktif sebagai {bot.user}')
125    bot.add_view(VerifyView()) 
126    bot.add_view(GenderView())
127    bot.add_view(AgeView())
128    bot.add_view(GameView())
129
130@bot.command()
131@commands.has_permissions(administrator=True)
132async def setup_verify(ctx):
133    embed = discord.Embed(title="Sistem Verifikasi Demonology", description="Klik tombol di bawah untuk verifikasi.", color=discord.Color.red())
134    await ctx.send(embed=embed, view=VerifyView())
135
136@bot.command()
137@commands.has_permissions(administrator=True)
138async def setup_roles(ctx):
139    embed1 = discord.Embed(title="๐ŸŽญ KATEGORI GENDER", description="Silakan tentukan identitas gender Anda di bawah ini.", color=discord.Color.purple())
140    await ctx.send(embed=embed1, view=GenderView())
141    embed2 = discord.Embed(title="โณ KATEGORI USIA (UMUR)", description="Silakan tentukan rentang usia Anda saat ini.", color=discord.Color.blue())
142    await ctx.send(embed=embed2, view=AgeView())
143    embed3 = discord.Embed(title="๐ŸŽฎ KATEGORI GAME INTEREST", description="Pilih game-game yang Anda mainkan di server Demonology agar mudah menemukan teman bermain!", color=discord.Color.green())
144    await ctx.send(embed=embed3, view=GameView())
145
146# SISTEM DOCKING TOKEN RENDER CLOUD
147TOKEN = os.environ.get("TOKEN")
148if TOKEN:
149    bot.run(TOKEN)
150else:
151    print("Error: Variabel TOKEN tidak ditemukan di Render Environment!")