Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import disnake
- import json
- from disnake.ext import commands
- from datetime import datetime, timedelta
- with open('./server/config.json','r',encoding='utf-8-sig') as f:
- data = json.load(f)
- guild_id = [data["guild_id"],]
- class LiveEvents(commands.Cog):
- def __init__(self,bot):
- self.bot = bot
- @commands.slash_command(name="create_live_event",description="Allows a streamer to create a live event",guild_ids=guild_id)
- async def create_live_event(self, inter, name: str, description: str, channel, scheduled_start_time: str, scheduled_end_time: str):
- await inter.response.defer(ephemeral=True)
- available_times = await self.get_times()
- if scheduled_start_time not in available_times or scheduled_end_time not in available_times:
- 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")
- await inter.guild.create_scheduled_event(
- name = name,
- description = description,
- channel = disnake.utils.get(inter.guild.text_channels, name=channel),
- scheduled_start_time = datetime.strptime(scheduled_start_time, "%I:%M %p"),
- scheduled_end_time = datetime.strptime(scheduled_end_time, "%I:%M %p")
- )
- embed = disnake.Embed(
- color = disnake.Colour.random(),
- title = name,
- description = description
- ).add_field(
- name = "Time Frames",
- value = f"Start Time: {scheduled_start_time}\nEnd Time: {scheduled_end_time}\nChannel: {channel}",
- inline = False
- ).set_thumbnail(url = self.bot.user.avatar)
- return await inter.edit_original_message(f"{inter.author.mention} Your Event Has Been Created!")
- @create_live_event.autocomplete("channel")
- async def create_live_event_autocomplete(self,inter,string):
- guild_voice_channels = [chan.name for chan in inter.guild.voice_channels]
- guild_stage_channels = [chan.name for chan in inter.guild.stage_channels]
- all_channels = guild_voice_channels + guild_stage_channels
- return [i for i in all_channels if string.lower() in i.lower()]
- async def get_times(self):
- start_time = datetime.strptime("12:00 AM", "%I:%M %p")
- end_time = datetime.strptime("11:45 PM", "%I:%M %p")
- times = []
- while start_time <= end_time:
- x = start_time.strftime("%I:%M %p")
- times.append(x)
- start_time += timedelta(minutes=15)
- return [i for i in times]
- def setup(bot):
- bot.add_cog(LiveEvents(bot))
Advertisement
Add Comment
Please, Sign In to add comment