mekasu0124

Untitled

Feb 10th, 2024
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | None | 0 0
  1. import disnake
  2. import json
  3.  
  4. from disnake.ext import commands
  5. from services.helpers import get_embeds
  6. from services.paginator import CategoryPaginator
  7. from server.database import DatabaseEngine
  8.  
  9. with open("./server/config.json", 'r', encoding="utf-8-sig") as f:
  10.     data = json.load(f)
  11.  
  12. guild_id = [data["guild_id"],]
  13.  
  14. class GeneralCommands(commands.Cog):
  15.     def __init__(self, bot):
  16.         self.bot = bot
  17.         self.db_engine = DatabaseEngine()
  18.  
  19.     @commands.slash_command(
  20.         name = "meks_hub",
  21.         description = "Returns a paginator embed as a \"flip book\" of github repo's",
  22.         guild_ids = guild_id
  23.     )
  24.     async def meks_hub(self, inter):
  25.         await inter.response.defer()
  26.  
  27.         guild = self.bot.get_guild(guild_id[0])
  28.  
  29.         # build table of contents embed
  30.         embed = disnake.Embed(
  31.             color = disnake.Colour.random(),
  32.             title = f"{guild.name} Of Applications",
  33.             description = "Select A Category Below To View Those Projects"
  34.         ).set_thumbnail(url = guild.icon)
  35.  
  36.         topics = ["Beginner Projects", "Intermediate Projects", "WebScraping Projects",
  37.                     "Automation Projects", "TKinter Projects", "Turtle Projects", "OpenCV Projects",
  38.                     "PythonDjango Projects", "Python TTS Projects", "Other Projects"]
  39.  
  40.         options = [
  41.             disnake.SelectOption(label = topic, value=str(i)) for i, topic in enumerate(topics, start=1)
  42.         ]
  43.  
  44.         select = disnake.ui.Select(
  45.             placeholder="Select A Category",
  46.             options=options,
  47.             max_values=1,
  48.             custom_id = "meks_hub_category_selector"
  49.         )
  50.  
  51.         await inter.edit_original_message(embed=embed, components=select)
  52.  
  53.     @commands.Cog.listener(disnake.Event.dropdown)
  54.     async def topic_select(self, inter: disnake.MessageInteraction):
  55.         await inter.response.defer()
  56.  
  57.         if inter.component.custom_id != "meks_hub_category_selector":
  58.             return
  59.        
  60.         if inter.author != inter.message.interaction.author:
  61.             return
  62.  
  63.         # obtain the wanted list of embeds
  64.         index = int(inter.values[0]) - 1
  65.         all_embeds = await get_embeds(self.db_engine)
  66.         embeds = all_embeds[index]
  67.  
  68.         await inter.edit_original_message(embed=embeds[0],view=CategoryPaginator(embeds))
  69.  
  70. def setup(bot):
  71.     bot.add_cog(GeneralCommands(bot))
Advertisement
Add Comment
Please, Sign In to add comment