mirror of
https://github.com/stoatchat/python-client-sdk.git
synced 2026-08-27 01:31:19 -04:00
c832bae971
* Add permissions * Add set_permission methods for server and channel * Add to docs * Minor fix * Apply suggestions from code review
70 lines
1.5 KiB
Python
Executable File
70 lines
1.5 KiB
Python
Executable File
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Literal, TypedDict, Union
|
|
|
|
if TYPE_CHECKING:
|
|
from .file import File
|
|
from .message import Message
|
|
|
|
|
|
__all__ = (
|
|
"SavedMessages",
|
|
"DMChannel",
|
|
"Group",
|
|
"TextChannel",
|
|
"VoiceChannel",
|
|
"Channel",
|
|
)
|
|
|
|
class _NonceChannel(TypedDict, total=False):
|
|
nonce: str
|
|
|
|
class BaseChannel(TypedDict):
|
|
_id: str
|
|
|
|
class SavedMessages(_NonceChannel, BaseChannel):
|
|
user: str
|
|
channel_type: Literal["SavedMessage"]
|
|
|
|
class DMChannel(_NonceChannel, BaseChannel):
|
|
active: bool
|
|
recipients: list[str]
|
|
last_message: Message
|
|
channel_type: Literal["DirectMessage"]
|
|
|
|
class _GroupOptional(TypedDict):
|
|
icon: File
|
|
permissions: int
|
|
description: str
|
|
|
|
class Group(_NonceChannel, _GroupOptional, BaseChannel):
|
|
recipients: list[str]
|
|
name: str
|
|
owner: str
|
|
channel_type: Literal["Group"]
|
|
|
|
class _TextChannelOptional(TypedDict, total=False):
|
|
icon: File
|
|
default_permissions: int
|
|
role_permissions: dict[str, int]
|
|
|
|
class TextChannel(_NonceChannel, _TextChannelOptional, BaseChannel):
|
|
server: str
|
|
name: str
|
|
description: str
|
|
last_message: str
|
|
channel_type: Literal["TextChannel"]
|
|
|
|
class _VoiceChannelOptional(TypedDict, total=False):
|
|
icon: File
|
|
default_permissions: int
|
|
role_permissions: int
|
|
|
|
class VoiceChannel(_NonceChannel, _TextChannelOptional, BaseChannel):
|
|
server: str
|
|
name: str
|
|
description: str
|
|
channel_type: Literal["VoiceChannel"]
|
|
|
|
Channel = Union[SavedMessages, DMChannel, Group, TextChannel, VoiceChannel]
|