Guest User

Untitled

a guest
May 25th, 2023
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.66 KB | None | 0 0
  1. import disnake
  2. import json
  3.  
  4. from disnake.ext import commands
  5. from datetime import datetime, timedelta
  6.  
  7. with open('./server/config.json','r',encoding='utf-8-sig') as f:
  8.     data = json.load(f)
  9.  
  10. guild_id = [data["guild_id"],]
  11.  
  12. class LiveEvents(commands.Cog):
  13.     def __init__(self,bot):
  14.         self.bot = bot
  15.  
  16.     @commands.slash_command(name="create_live_event",description="Allows a streamer to create a live event",guild_ids=guild_id)
  17.     async def create_live_event(self, inter, name: str, description: str, channel, scheduled_start_time: str, scheduled_end_time: str):
  18.         await inter.response.defer(ephemeral=True)
  19.  
  20.         available_times = await self.get_times()
  21.  
  22.         if scheduled_start_time not in available_times or scheduled_end_time not in available_times:
  23.             return await inter.edit_original_message(f"{inter.author.mention} Your Start/End Time Must Follow The Format - HH:MM AM/PM and Be In 15 Minute Increments")
  24.  
  25.         await inter.guild.create_scheduled_event(
  26.             name = name,
  27.             description = description,
  28.             channel = disnake.utils.get(inter.guild.text_channels, name=channel),
  29.             scheduled_start_time = datetime.strptime(scheduled_start_time, "%I:%M %p"),
  30.             scheduled_end_time = datetime.strptime(scheduled_end_time, "%I:%M %p")
  31.         )
  32.  
  33.         embed = disnake.Embed(
  34.             color = disnake.Colour.random(),
  35.             title = name,
  36.             description = description
  37.         ).add_field(
  38.             name = "Time Frames",
  39.             value = f"Start Time: {scheduled_start_time}\nEnd Time: {scheduled_end_time}\nChannel: {channel}",
  40.             inline = False
  41.         ).set_thumbnail(url = self.bot.user.avatar)
  42.  
  43.         return await inter.edit_original_message(f"{inter.author.mention} Your Event Has Been Created!")
  44.  
  45.     @create_live_event.autocomplete("channel")
  46.     async def create_live_event_autocomplete(self,inter,string):
  47.         guild_voice_channels = [chan.name for chan in inter.guild.voice_channels]
  48.         guild_stage_channels = [chan.name for chan in inter.guild.stage_channels]
  49.  
  50.         all_channels = guild_voice_channels + guild_stage_channels
  51.  
  52.         return [i for i in all_channels if string.lower() in i.lower()]
  53.    
  54.     async def get_times(self):
  55.         start_time = datetime.strptime("12:00 AM", "%I:%M %p")
  56.         end_time = datetime.strptime("11:45 PM", "%I:%M %p")
  57.  
  58.         times = []
  59.  
  60.         while start_time <= end_time:
  61.             x = start_time.strftime("%I:%M %p")
  62.             times.append(x)
  63.             start_time += timedelta(minutes=15)
  64.  
  65.         return [i for i in times]
  66.  
  67. def setup(bot):
  68.     bot.add_cog(LiveEvents(bot))
Advertisement
Add Comment
Please, Sign In to add comment