aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2021-06-10 08:58:10 -0400
committerRapptz <[email protected]>2021-06-10 08:58:10 -0400
commitc251c51cb10ae255917b4f1eb4230360b1d9f943 (patch)
treee171cbcf3259c9a97d03ffc1c67dafcf1b423acd
parentRename Reaction.custom_emoji to Reaction.is_custom_emoji (diff)
downloaddiscord.py-c251c51cb10ae255917b4f1eb4230360b1d9f943.tar.xz
discord.py-c251c51cb10ae255917b4f1eb4230360b1d9f943.zip
Typehint Reaction
-rw-r--r--discord/reaction.py43
1 files changed, 27 insertions, 16 deletions
diff --git a/discord/reaction.py b/discord/reaction.py
index 5764af4a..d9b2b953 100644
--- a/discord/reaction.py
+++ b/discord/reaction.py
@@ -22,12 +22,22 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
"""
+from __future__ import annotations
+from typing import Any, TYPE_CHECKING, Union, Optional
+
from .iterators import ReactionIterator
__all__ = (
'Reaction',
)
+if TYPE_CHECKING:
+ from .types.message import Reaction as ReactionPayload
+ from .message import Message
+ from .partial_emoji import PartialEmoji
+ from .emoji import Emoji
+ from .abc import Snowflake
+
class Reaction:
"""Represents a reaction to a message.
@@ -67,34 +77,35 @@ class Reaction:
"""
__slots__ = ('message', 'count', 'emoji', 'me')
- def __init__(self, *, message, data, emoji=None):
- self.message = message
- self.emoji = emoji or message._state.get_reaction_emoji(data['emoji'])
- self.count = data.get('count', 1)
- self.me = data.get('me')
+ def __init__(self, *, message: Message, data: ReactionPayload, emoji: Optional[Union[PartialEmoji, Emoji, str]] = None):
+ self.message: Message = message
+ self.emoji: Union[PartialEmoji, Emoji, str] = emoji or message._state.get_reaction_emoji(data['emoji'])
+ self.count: int = data.get('count', 1)
+ self.me: bool = data.get('me')
- def is_custom_emoji(self):
+ # TODO: typeguard
+ def is_custom_emoji(self) -> bool:
""":class:`bool`: If this is a custom emoji."""
return not isinstance(self.emoji, str)
- def __eq__(self, other):
+ def __eq__(self, other: Any) -> bool:
return isinstance(other, self.__class__) and other.emoji == self.emoji
- def __ne__(self, other):
+ def __ne__(self, other: Any) -> bool:
if isinstance(other, self.__class__):
return other.emoji != self.emoji
return True
- def __hash__(self):
+ def __hash__(self) -> int:
return hash(self.emoji)
- def __str__(self):
+ def __str__(self) -> str:
return str(self.emoji)
- def __repr__(self):
+ def __repr__(self) -> str:
return f'<Reaction emoji={self.emoji!r} me={self.me} count={self.count}>'
- async def remove(self, user):
+ async def remove(self, user: Snowflake) -> None:
"""|coro|
Remove the reaction by the provided :class:`User` from the message.
@@ -122,7 +133,7 @@ class Reaction:
await self.message.remove_reaction(self.emoji, user)
- async def clear(self):
+ async def clear(self) -> None:
"""|coro|
Clears this reaction from the message.
@@ -144,7 +155,7 @@ class Reaction:
"""
await self.message.clear_reaction(self.emoji)
- def users(self, limit=None, after=None):
+ def users(self, limit: Optional[int] = None, after: Optional[Snowflake] = None) -> ReactionIterator:
"""Returns an :class:`AsyncIterator` representing the users that have reacted to the message.
The ``after`` parameter must represent a member
@@ -168,11 +179,11 @@ class Reaction:
Parameters
------------
- limit: :class:`int`
+ limit: Optional[:class:`int`]
The maximum number of results to return.
If not provided, returns all the users who
reacted to the message.
- after: :class:`abc.Snowflake`
+ after: Optional[:class:`abc.Snowflake`]
For pagination, reactions are sorted by member.
Raises