Support for Soundboard and VC effects

This commit is contained in:
Andrin
2024-10-09 23:05:17 +02:00
committed by GitHub
parent 59f877fcf0
commit a70217a719
19 changed files with 1185 additions and 26 deletions

View File

@ -93,6 +93,7 @@ if TYPE_CHECKING:
sku,
poll,
voice,
soundboard,
)
from .types.snowflake import Snowflake, SnowflakeList
@ -2515,6 +2516,78 @@ class HTTPClient:
),
)
# Soundboard
def get_soundboard_default_sounds(self) -> Response[List[soundboard.SoundboardDefaultSound]]:
return self.request(Route('GET', '/soundboard-default-sounds'))
def get_soundboard_sound(self, guild_id: Snowflake, sound_id: Snowflake) -> Response[soundboard.SoundboardSound]:
return self.request(
Route('GET', '/guilds/{guild_id}/soundboard-sounds/{sound_id}', guild_id=guild_id, sound_id=sound_id)
)
def get_soundboard_sounds(self, guild_id: Snowflake) -> Response[Dict[str, List[soundboard.SoundboardSound]]]:
return self.request(Route('GET', '/guilds/{guild_id}/soundboard-sounds', guild_id=guild_id))
def create_soundboard_sound(
self, guild_id: Snowflake, *, reason: Optional[str], **payload: Any
) -> Response[soundboard.SoundboardSound]:
valid_keys = (
'name',
'sound',
'volume',
'emoji_id',
'emoji_name',
)
payload = {k: v for k, v in payload.items() if k in valid_keys and v is not None}
return self.request(
Route('POST', '/guilds/{guild_id}/soundboard-sounds', guild_id=guild_id), json=payload, reason=reason
)
def edit_soundboard_sound(
self, guild_id: Snowflake, sound_id: Snowflake, *, reason: Optional[str], **payload: Any
) -> Response[soundboard.SoundboardSound]:
valid_keys = (
'name',
'volume',
'emoji_id',
'emoji_name',
)
payload = {k: v for k, v in payload.items() if k in valid_keys}
return self.request(
Route(
'PATCH',
'/guilds/{guild_id}/soundboard-sounds/{sound_id}',
guild_id=guild_id,
sound_id=sound_id,
),
json=payload,
reason=reason,
)
def delete_soundboard_sound(self, guild_id: Snowflake, sound_id: Snowflake, *, reason: Optional[str]) -> Response[None]:
return self.request(
Route(
'DELETE',
'/guilds/{guild_id}/soundboard-sounds/{sound_id}',
guild_id=guild_id,
sound_id=sound_id,
),
reason=reason,
)
def send_soundboard_sound(self, channel_id: Snowflake, **payload: Any) -> Response[None]:
valid_keys = ('sound_id', 'source_guild_id')
payload = {k: v for k, v in payload.items() if k in valid_keys}
print(payload)
return self.request(
(Route('POST', '/channels/{channel_id}/send-soundboard-sound', channel_id=channel_id)), json=payload
)
# Application
def application_info(self) -> Response[appinfo.AppInfo]: