Skip to content
Merged
21 changes: 14 additions & 7 deletions disnake/mentions.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from __future__ import annotations

from typing import TYPE_CHECKING, Any, List, Union
from typing import TYPE_CHECKING, Any, List, Sequence, Union

from .enums import MessageType

Expand Down Expand Up @@ -69,13 +69,19 @@ def __init__(
self,
*,
everyone: bool = default,
users: Union[bool, List[Snowflake]] = default,
roles: Union[bool, List[Snowflake]] = default,
users: Union[bool, Sequence[Snowflake]] = default,
roles: Union[bool, Sequence[Snowflake]] = default,
replied_user: bool = default,
) -> None:
self.everyone = everyone
self.users = users
self.roles = roles
if users is default or isinstance(users, bool):
self.users = users
else:
self.users = list(users)
if roles is default or isinstance(roles, bool):
self.roles = roles
else:
self.roles = list(roles)
self.replied_user = replied_user

@classmethod
Expand Down Expand Up @@ -108,8 +114,8 @@ def from_message(cls, message: Message) -> Self:

return cls(
everyone=message.mention_everyone,
users=message.mentions.copy(), # type: ignore # mentions is a list of Snowflakes
roles=message.role_mentions.copy(), # type: ignore # mentions is a list of Snowflakes
users=message.mentions.copy(),
roles=message.role_mentions.copy(),
replied_user=bool(
message.type is MessageType.reply
and message.reference
Expand All @@ -119,6 +125,7 @@ def from_message(cls, message: Message) -> Self:
)

def to_dict(self) -> AllowedMentionsPayload:
# n.b. this runs nearly every time a message is sent
parse: List[AllowedMentionTypePayload] = []
data: AllowedMentionsPayload = {} # type: ignore

Expand Down
1 change: 1 addition & 0 deletions tests/test_mentions.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def test_from_message_replied_user() -> None:
message = mock.Mock(Message)
author = Object(123)
message.mentions = [author]
message.role_mentions = []
assert AllowedMentions.from_message(message).replied_user is False

message.type = MessageType.reply
Expand Down
Loading