| |
| import discord |
| from discord import app_commands |
| from discord.ext import commands |
|
|
| |
| HELP_DATA = { |
| "Getting Started & Economy": { |
| "description": "Welcome to sueni.bot! Here is your core daily loop to build your wealth.", |
| "commands": [ |
| ("`susp`", "Type this directly in chat (no slash) to drop a random character! (8m cooldown)"), |
| ("`/sudaily`", "Claim your free 100 Coins every 24 hours."), |
| ("`/subalance`", "Check your current Coins and Hero Dust."), |
| ("`/sushop view`", "Browse the Void Shop to buy Time Winders and Dust Caches."), |
| ("`/sumail`", "π¬ Check your inbox for system messages, auction payouts, and free rewards!") |
| ] |
| }, |
| "Inventory & Wishlist": { |
| "description": "Manage your growing collection using unique alphanumeric codes.", |
| "commands": [ |
| ("`/suinventory [series]`", "Page through your character collection. Use the dropdown to inspect cards!"), |
| ("`/suinfo <code>`", "Inspect ANY character card globally by its code to see stats and ownership."), |
| ("`/sufavourite <code>`", "Add a card you see on the market to your personal Wishlist."), |
| ("`/suwishlist`", "View all your favourited cards.") |
| ] |
| }, |
| "Progression & Crafting": { |
| "description": "Turn your duplicate and unwanted cards into raw power.", |
| "commands": [ |
| ("`/suascend <code> [levels]`", "Spend Coins and Dust to level up a character (Max Lvl 100)."), |
| ("`/sufuse <target_code> <sacrifice_code>`", "Sacrifice an exact duplicate to unlock Constellations (Max C6 Awakened!)."), |
| ("`/suscrap <code>`", "Destroy an unwanted card to receive Coins or Dust (Yield depends on C/R/SR/SSR/UR)."), |
| ("`/suforge`", "Spend 500 Hero Dust to guarantee a random SSR or UR drop!") |
| ] |
| }, |
| "Vanguard & Combat": { |
| "description": "Build your ultimate team to activate Elemental/Rarity Synergies and fight players.", |
| "commands": [ |
| ("`/suteam view`", "View your active 3-character Vanguard, Total Power, and Elemental Synergies."), |
| ("`/suteam equip <slot> <code>`", "Assign a character to Slot 1, 2, or 3."), |
| ("`/suhunt <target>`", "Attack a player on the Global Hit List to steal their Coins and Dust!"), |
| ("`/suduel <target>`", "Challenge another player to a high-stakes PvP battle, wagering Coins, Dust, or Cards.") |
| ] |
| }, |
| "Expeditions (Idle)": { |
| "description": "Send your characters out into the world to gather passive income.", |
| "commands": [ |
| ("`/suexp start <code> <duration>`", "Send a character away for 4, 8, 12, or 24 hours."), |
| ("`/suexp claim <code>`", "Welcome your character back and collect their Coins and Dust."), |
| ("`/suexp list`", "View the countdown timers for all your active expeditions.") |
| ] |
| }, |
| "Market & Trading": { |
| "description": "The player-driven global economy. Buy, sell, and trade characters!", |
| "commands": [ |
| ("`/sumarket view`", "Browse the paginated global marketplace for characters."), |
| ("`/sumarket list <code> <price> <currency>`", "Put one of your characters up for sale (10% Black Market Tax applies!)."), |
| ("`/sumarket buy <listing_id>`", "Purchase a character directly from the market."), |
| ("`/sutrade <user> <my_code> <their_code>`", "Propose a direct 1-for-1 character swap with another player.") |
| ] |
| }, |
| "Profile & Leaderboards": { |
| "description": "Flex your wealth, titles, and rarest pulls with gorgeous UI.", |
| "commands": [ |
| ("`/suprofile [user]`", "View your dynamic visual profile and 8-card cosmetic grid."), |
| ("`/sudisplay set <slot> <code>`", "Equip a card to slots 1-8 on your visual profile."), |
| ("`/sutitle list` & `/sutitle equip`", "View and equip your unlocked achievements."), |
| ("`/suleaderboard <category>`", "Check the Top Wealth, Dust, Collectors, Grinders, or Pity rankings.") |
| ] |
| } |
| } |
|
|
| class HelpDropdown(discord.ui.Select): |
| def __init__(self): |
| options = [ |
| discord.SelectOption(label="Getting Started & Economy", description="The basics, drops, and daily loop", emoji="π°"), |
| discord.SelectOption(label="Inventory & Wishlist", description="Inspect and manage your collection", emoji="π"), |
| discord.SelectOption(label="Progression & Crafting", description="Ascension, Constellations, and Forging", emoji="βοΈ"), |
| discord.SelectOption(label="Vanguard & Combat", description="Synergies, Bounties, and PvP Duels", emoji="βοΈ"), |
| discord.SelectOption(label="Expeditions (Idle)", description="Passive resource gathering", emoji="ποΈ"), |
| discord.SelectOption(label="Market & Trading", description="Player-driven global economy", emoji="πͺ"), |
| discord.SelectOption(label="Profile & Leaderboards", description="Visual grids, titles, and rankings", emoji="π") |
| ] |
| super().__init__(placeholder="Choose a category to explore...", min_values=1, max_values=1, options=options) |
|
|
| async def callback(self, interaction: discord.Interaction): |
| category = self.values[0] |
| data = HELP_DATA[category] |
| |
| embed = discord.Embed( |
| title=f"{category} Guide", |
| description=f"*{data['description']}*", |
| color=discord.Color.blue() |
| ) |
| |
| for cmd, desc in data["commands"]: |
| embed.add_field(name=cmd, value=desc, inline=False) |
| |
| embed.set_footer(text="Sueni Bot Framework | Use the dropdown menu to navigate") |
| |
| await interaction.response.edit_message(embed=embed) |
|
|
|
|
| class HelpView(discord.ui.View): |
| def __init__(self): |
| super().__init__(timeout=180) |
| self.add_item(HelpDropdown()) |
|
|
|
|
| class HelpCog(commands.Cog): |
| def __init__(self, bot): |
| self.bot = bot |
|
|
| @app_commands.command(name="suhelp", description="View the interactive guide on how to play the game") |
| async def help_command(self, interaction: discord.Interaction): |
| embed = discord.Embed( |
| title="π Sueni Bot Guide", |
| description="Welcome to sueni.bot! Use the dropdown menu below to learn about the different systems, commands, and how to build the ultimate Vanguard team.", |
| color=discord.Color.blurple() |
| ) |
| embed.set_thumbnail(url=self.bot.user.display_avatar.url) |
| |
| view = HelpView() |
| await interaction.response.send_message(embed=embed, view=view) |
|
|
| async def setup(bot): |
| await bot.add_cog(HelpCog(bot)) |
|
|