diff --git a/discord/template.py b/discord/template.py index 12429c712..c699e5d5b 100644 --- a/discord/template.py +++ b/discord/template.py @@ -24,7 +24,7 @@ DEALINGS IN THE SOFTWARE. from __future__ import annotations -from typing import Any, Optional, TYPE_CHECKING, overload +from typing import Any, Optional, TYPE_CHECKING from .utils import parse_time, _get_as_snowflake, _bytes_to_base64_data, MISSING from .enums import VoiceRegion from .guild import Guild @@ -34,7 +34,10 @@ __all__ = ( ) if TYPE_CHECKING: + import datetime from .types.template import Template as TemplatePayload + from .state import ConnectionState + from .user import User class _FriendlyHttpAttributeErrorHelper: @@ -77,7 +80,7 @@ class _PartialTemplateState: def _get_guild(self, id): return self.__state._get_guild(id) - async def query_members(self, **kwargs): + async def query_members(self, **kwargs: Any): return [] def __getattr__(self, attr): @@ -127,20 +130,20 @@ class Template: '_state', ) - def __init__(self, *, state, data: TemplatePayload): + def __init__(self, *, state: ConnectionState, data: TemplatePayload) -> None: self._state = state self._store(data) - def _store(self, data: TemplatePayload): - self.code = data['code'] - self.uses = data['usage_count'] - self.name = data['name'] - self.description = data['description'] + def _store(self, data: TemplatePayload) -> None: + self.code: str = data['code'] + self.uses: int = data['usage_count'] + self.name: str = data['name'] + self.description: Optional[str] = data['description'] creator_data = data.get('creator') - self.creator = None if creator_data is None else self._state.create_user(creator_data) + self.creator: Optional[User] = None if creator_data is None else self._state.create_user(creator_data) - self.created_at = parse_time(data.get('created_at')) - self.updated_at = parse_time(data.get('updated_at')) + self.created_at: Optional[datetime.datetime] = parse_time(data.get('created_at')) + self.updated_at: Optional[datetime.datetime] = parse_time(data.get('updated_at')) id = _get_as_snowflake(data, 'source_guild_id') @@ -150,10 +153,10 @@ class Template: source_serialised = data['serialized_source_guild'] source_serialised['id'] = id state = _PartialTemplateState(state=self._state) - guild = Guild(data=source_serialised, state=state) # type: ignore + guild = Guild(data=source_serialised, state=state) # type: ignore - Guild expects a ConnectionState, we're passing a _PartialTemplateState - self.source_guild = guild - self.is_dirty = data.get('is_dirty', None) + self.source_guild: Guild = guild # type: ignore - source_guild_id is a required field on the discord API docs + self.is_dirty: Optional[bool] = data.get('is_dirty', None) def __repr__(self) -> str: return ( @@ -161,7 +164,7 @@ class Template: f' creator={self.creator!r} source_guild={self.source_guild!r} is_dirty={self.is_dirty}>' ) - async def create_guild(self, name: str, region: Optional[VoiceRegion] = None, icon: Any = None): + async def create_guild(self, name: str, region: Optional[VoiceRegion] = None, icon: Any = None) -> Guild: """|coro| Creates a :class:`.Guild` using the template.