455da6a9f3
Signed-off-by: Marc Ahlgrim <marc@onemarcfifty.com>
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import json
|
|
from classes.restfulapi import DiscordAPI
|
|
|
|
# #########################################################
|
|
# The class for Discord scheduled events
|
|
# as of 2022-07, discord.py does not support
|
|
# scheduled Events. Therefore we need to use the Rest API
|
|
# #########################################################
|
|
|
|
|
|
class DiscordEvents(DiscordAPI):
|
|
|
|
# def __init__(self,
|
|
# discord_token: str,
|
|
# client_id: str,
|
|
# bot_permissions: int,
|
|
# api_version: int) -> None:
|
|
#
|
|
# super().__init__(discord_token,client_id,bot_permissions,api_version)
|
|
|
|
|
|
async def list_guild_events(self,guild_id) -> list:
|
|
|
|
# Returns a list of upcoming events for the supplied guild ID
|
|
# Format of return is a list of one dictionary per event containing information.
|
|
|
|
event_retrieve_url = f'{self.base_api_url}/guilds/{guild_id}/scheduled-events'
|
|
response_list = await self.get_api(event_retrieve_url)
|
|
return response_list
|
|
|
|
async def create_guild_event(
|
|
self,
|
|
event_name: str,
|
|
event_description: str,
|
|
event_start_time: str,
|
|
event_end_time: str,
|
|
event_metadata: dict,
|
|
event_privacy_level=2,
|
|
channel_id=None,
|
|
guild_id=0
|
|
) -> None:
|
|
|
|
# Creates a guild event using the supplied arguments
|
|
# The expected event_metadata format is event_metadata={'location': 'YOUR_LOCATION_NAME'}
|
|
# We hard code Entity type to "2" which is Voice channel
|
|
# hence we need no Event Metadata
|
|
# The required time format is %Y-%m-%dT%H:%M:%S
|
|
# Event times can use UTC Offsets! - if you omit, then it will be
|
|
# undefined (i.e. UTC / GMT+0)
|
|
|
|
event_create_url = f'{self.base_api_url}/guilds/{guild_id}/scheduled-events'
|
|
event_data = json.dumps({
|
|
'name': event_name,
|
|
'privacy_level': event_privacy_level,
|
|
'scheduled_start_time': event_start_time,
|
|
'scheduled_end_time': event_end_time,
|
|
'description': event_description,
|
|
'channel_id': channel_id,
|
|
'entity_metadata': event_metadata,
|
|
'entity_type': 2
|
|
})
|
|
try:
|
|
await self.post_api(event_create_url,event_data)
|
|
except Exception as e:
|
|
print(f'DiscordEvents.createguildevent : {e}')
|