diff --git a/revolt/channel.py b/revolt/channel.py index 3f7016c..de50d8a 100755 --- a/revolt/channel.py +++ b/revolt/channel.py @@ -184,7 +184,7 @@ class TextChannel(Channel, Messageable, EditableChannel): else: self.icon = None - def _get_channel_id(self) -> str: + async def _get_channel_id(self) -> str: return self.id @property diff --git a/revolt/ext/commands/client.py b/revolt/ext/commands/client.py index d759897..d4c678d 100755 --- a/revolt/ext/commands/client.py +++ b/revolt/ext/commands/client.py @@ -21,7 +21,7 @@ __all__ = ( @runtime_checkable class ExtensionProtocol(Protocol): @staticmethod - def setup(client: CommandsClient): + def setup(client: CommandsClient) -> None: raise NotImplementedError class CommandsMeta(type): diff --git a/revolt/ext/commands/command.py b/revolt/ext/commands/command.py index d27770e..5ff5619 100755 --- a/revolt/ext/commands/command.py +++ b/revolt/ext/commands/command.py @@ -93,7 +93,7 @@ class Command: traceback.print_exception(type(error), error, error.__traceback__) @staticmethod - def extract_type(t): + def extract_type(t: Any) -> Any: if origin := get_origin(t): if origin is Annotated: return get_args(t)[1] @@ -101,8 +101,8 @@ class Command: return t @classmethod - async def convert_argument(cls, arg: str, annotation: Any, context: Context): - if annotation is not inspect._empty: + async def convert_argument(cls, arg: str, annotation: Any, context: Context) -> Any: + if annotation is not inspect.Signature.empty: if annotation is str: # no converting is needed - its already a string return arg @@ -128,7 +128,7 @@ class Command: else: raise InvalidLiteralArgument(arg) else: - return await maybe_coroutine(cast(Callable, annotation), arg, context) + return await maybe_coroutine(cast(Callable[[Any, Context], Any], annotation), arg, context) else: return arg diff --git a/revolt/ext/commands/view.py b/revolt/ext/commands/view.py index b5cbe43..7bc13ff 100755 --- a/revolt/ext/commands/view.py +++ b/revolt/ext/commands/view.py @@ -25,7 +25,7 @@ class StringView: return self.temp char = self.next_char() - temp = [] + temp: list[str] = [] while char == " ": char = self.next_char() diff --git a/revolt/types/channel.py b/revolt/types/channel.py index 7f53e39..e8318bb 100755 --- a/revolt/types/channel.py +++ b/revolt/types/channel.py @@ -60,7 +60,7 @@ class _VoiceChannelOptional(TypedDict, total=False): default_permissions: int role_permissions: int -class VoiceChannel(_NonceChannel, _TextChannelOptional, BaseChannel): +class VoiceChannel(_NonceChannel, _VoiceChannelOptional, BaseChannel): server: str name: str description: str diff --git a/revolt/types/gateway.py b/revolt/types/gateway.py index 91aed6b..3687f3d 100755 --- a/revolt/types/gateway.py +++ b/revolt/types/gateway.py @@ -10,6 +10,10 @@ if TYPE_CHECKING: from .member import Member, MemberID from .server import Server from .user import Status, User + from .role import Permission + from .file import File + from .category import Category + from .server import SystemMessagesConfig __all__ = ( "BasePayload", @@ -97,17 +101,33 @@ class ChannelStartTypingEventPayload(BasePayload): ChannelDeleteTypingEventPayload = ChannelStartTypingEventPayload +class ServerUpdateEventPayloadData(TypedDict, total=False): + owner: str + name: str + description: str + icon: File + banner: File + default_permissions: Permission + nsfw: bool + system_messages: SystemMessagesConfig + categories: list[Category] + class ServerUpdateEventPayload(BasePayload): id: str - data: dict + data: ServerUpdateEventPayloadData clear: Literal["Icon", "Banner", "Description"] class ServerDeleteEventPayload(BasePayload): id: str +class ServerMemberUpdateEventPayloadData(TypedDict, total=False): + nickname: str + avatar: File + roles: list[str] + class ServerMemberUpdateEventPayload(BasePayload): id: MemberID - data: dict + data: ServerMemberUpdateEventPayloadData clear: Literal["Nickname", "Avatar"] class ServerMemberJoinEventPayload(BasePayload): @@ -116,19 +136,34 @@ class ServerMemberJoinEventPayload(BasePayload): ServerMemberLeaveEventPayload = ServerMemberJoinEventPayload +class ServerRoleUpdateEventPayloadData(TypedDict, total=False): + name: str + colour: str + hoist: bool + rank: int + class ServerRoleUpdateEventPayload(BasePayload): id: str role_id: str - data: dict + data: ServerRoleUpdateEventPayloadData clear: Literal["Color"] class ServerRoleDeleteEventPayload(BasePayload): id: str role_id: str +UserUpdateEventPayloadData = TypedDict("UserUpdateEventPayloadData", { + "status": Status, + "profile.background": File, + "profile.content": str, + "avatar": File, + "online": bool + +}, total=False) + class UserUpdateEventPayload(BasePayload): id: str - data: dict + data: UserUpdateEventPayloadData clear: Literal["ProfileContent", "ProfileBackground", "StatusText", "Avatar"] class UserRelationshipEventPayload(BasePayload): diff --git a/revolt/user.py b/revolt/user.py index 4bcdef7..56edf8c 100755 --- a/revolt/user.py +++ b/revolt/user.py @@ -82,7 +82,7 @@ class User(Messageable): avatar = data.get("avatar") self.original_avatar = Asset(avatar, state) if avatar else None - relations = [] + relations: list[Relation] = [] for relation in data.get("relations", []): user = state.get_user(relation["_id"])