Files
ralf-discord-bot/classes/dis_events.py
T
Marc Ahlgrim 6e35d9e064 Release 0.3
Signed-off-by: Marc Ahlgrim <marc@onemarcfifty.com>
2022-07-22 12:50:06 +02:00

68 lines
2.4 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,
guild_id:str) -> None:
super().__init__(discord_token,client_id,bot_permissions,api_version)
self.guild_id = guild_id
print (f" DiscordEvent Client {client_id} guild {guild_id}")
async def list_guild_events(self) -> 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/{self.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
) -> 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/{self.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}')