|
|
@ -51,7 +51,6 @@ if TYPE_CHECKING: |
|
|
|
Sticker as StickerPayload, |
|
|
|
StandardSticker as StandardStickerPayload, |
|
|
|
GuildSticker as GuildStickerPayload, |
|
|
|
ListPremiumStickerPacks as ListPremiumStickerPacksPayload, |
|
|
|
EditGuildSticker, |
|
|
|
) |
|
|
|
|
|
|
@ -227,10 +226,33 @@ class StickerItem(_StickerTag): |
|
|
|
Union[:class:`StandardSticker`, :class:`GuildSticker`] |
|
|
|
The retrieved sticker. |
|
|
|
""" |
|
|
|
data: StickerPayload = await self._state.http.get_sticker(self.id) |
|
|
|
cls, _ = _sticker_factory(data['type']) # type: ignore |
|
|
|
data = await self._state.http.get_sticker(self.id) |
|
|
|
cls, _ = _sticker_factory(data['type']) |
|
|
|
return cls(state=self._state, data=data) |
|
|
|
|
|
|
|
async def fetch_guild(self): |
|
|
|
"""|coro| |
|
|
|
|
|
|
|
Retrieves the guild this sticker belongs to. |
|
|
|
|
|
|
|
Raises |
|
|
|
------ |
|
|
|
NotFound |
|
|
|
The guild this sticker belongs to is not public. |
|
|
|
HTTPException |
|
|
|
An error occurred while fetching the guild. |
|
|
|
|
|
|
|
Returns |
|
|
|
------- |
|
|
|
:class:`Guild` |
|
|
|
The guild this emoji belongs to. |
|
|
|
""" |
|
|
|
from .guild import Guild # Circular import |
|
|
|
|
|
|
|
state = self._state |
|
|
|
data = await state.http.get_sticker_guild(self.id) |
|
|
|
return Guild(state=state, data=data) |
|
|
|
|
|
|
|
|
|
|
|
class Sticker(_StickerTag): |
|
|
|
"""Represents a sticker. |
|
|
@ -362,7 +384,7 @@ class StandardSticker(Sticker): |
|
|
|
:class:`StickerPack` |
|
|
|
The retrieved sticker pack. |
|
|
|
""" |
|
|
|
data: ListPremiumStickerPacksPayload = await self._state.http.list_premium_sticker_packs() |
|
|
|
data = await self._state.http.list_premium_sticker_packs() |
|
|
|
packs = data['sticker_packs'] |
|
|
|
pack = find(lambda d: int(d['id']) == self.pack_id, packs) |
|
|
|
|
|
|
@ -487,7 +509,7 @@ class GuildSticker(Sticker): |
|
|
|
|
|
|
|
payload['tags'] = emoji |
|
|
|
|
|
|
|
data: GuildStickerPayload = await self._state.http.modify_guild_sticker(self.guild_id, self.id, payload, reason) |
|
|
|
data = await self._state.http.modify_guild_sticker(self.guild_id, self.id, payload, reason) |
|
|
|
return GuildSticker(state=self._state, data=data) |
|
|
|
|
|
|
|
async def delete(self, *, reason: Optional[str] = None) -> None: |
|
|
@ -512,6 +534,29 @@ class GuildSticker(Sticker): |
|
|
|
""" |
|
|
|
await self._state.http.delete_guild_sticker(self.guild_id, self.id, reason) |
|
|
|
|
|
|
|
async def fetch_guild(self): |
|
|
|
"""|coro| |
|
|
|
|
|
|
|
Retrieves the guild this sticker belongs to. |
|
|
|
|
|
|
|
Raises |
|
|
|
------ |
|
|
|
NotFound |
|
|
|
The guild this sticker belongs to is not public. |
|
|
|
HTTPException |
|
|
|
An error occurred while fetching the guild. |
|
|
|
|
|
|
|
Returns |
|
|
|
------- |
|
|
|
:class:`Guild` |
|
|
|
The guild this emoji belongs to. |
|
|
|
""" |
|
|
|
from .guild import Guild # Circular import |
|
|
|
|
|
|
|
state = self._state |
|
|
|
data = await state.http.get_sticker_guild(self.id) |
|
|
|
return Guild(state=state, data=data) |
|
|
|
|
|
|
|
|
|
|
|
def _sticker_factory(sticker_type: Literal[1, 2]) -> Tuple[Type[Union[StandardSticker, GuildSticker, Sticker]], StickerType]: |
|
|
|
value = try_enum(StickerType, sticker_type) |
|
|
|