@@ -0,0 +1,67 @@
|
||||
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}')
|
||||
Reference in New Issue
Block a user