Skip to content

Commit acbe04f

Browse files
committed
feaT: support for @silent messages
1 parent f5c6e3a commit acbe04f

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

interactions/client/mixins/send.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from typing import TYPE_CHECKING, Any, Iterable, Optional, Union
22

33
import interactions.models as models
4+
from interactions.models.discord.enums import MessageFlags
45

56
if TYPE_CHECKING:
67
from interactions.client import Client
@@ -10,7 +11,7 @@
1011
from interactions.models.discord.message import AllowedMentions, Message, MessageReference
1112
from interactions.models.discord.sticker import Sticker
1213
from interactions.models.discord.snowflake import Snowflake_Type
13-
from interactions.models.discord.enums import MessageFlags
14+
1415

1516
__all__ = ("SendMixin",)
1617

@@ -42,6 +43,7 @@ async def send(
4243
file: Optional["UPLOADABLE_TYPE"] = None,
4344
tts: bool = False,
4445
suppress_embeds: bool = False,
46+
silent: bool = False,
4547
flags: Optional[Union[int, "MessageFlags"]] = None,
4648
delete_after: Optional[float] = None,
4749
**kwargs: Any,
@@ -61,17 +63,24 @@ async def send(
6163
file: Files to send, the path, bytes or File() instance, defaults to None. You may have up to 10 files.
6264
tts: Should this message use Text To Speech.
6365
suppress_embeds: Should embeds be suppressed on this send
66+
silent: Should this message be sent without triggering a notification.
6467
flags: Message flags to apply.
6568
delete_after: Delete message after this many seconds.
6669
6770
Returns:
6871
New message object that was sent.
6972
7073
"""
74+
if not flags:
75+
flags = MessageFlags(0)
7176
if suppress_embeds:
7277
if isinstance(flags, int):
7378
flags = MessageFlags(flags)
7479
flags = flags | MessageFlags.SUPPRESS_EMBEDS
80+
if silent:
81+
if isinstance(flags, int):
82+
flags = MessageFlags(flags)
83+
flags = flags | MessageFlags.SILENT
7584

7685
message_payload = models.discord.message.process_message_payload(
7786
content=content,

interactions/models/discord/enums.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,8 @@ class MessageFlags(DiscordIntFlag): # type: ignore
419419
"""This message failed to mention some roles and add their members to the thread"""
420420
SHOULD_SHOW_LINK_NOT_DISCORD_WARNING = 1 << 10
421421
"""This message contains a abusive website link, pops up a warning when clicked"""
422+
SILENT = 1 << 12
423+
"""This message should not trigger push or desktop notifications"""
422424

423425
# Special members
424426
NONE = 0

interactions/models/internal/context.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,7 @@ async def send(
449449
file: typing.Optional["UPLOADABLE_TYPE"] = None,
450450
tts: bool = False,
451451
suppress_embeds: bool = False,
452+
silent: bool = False,
452453
flags: typing.Optional[typing.Union[int, "MessageFlags"]] = None,
453454
delete_after: typing.Optional[float] = None,
454455
ephemeral: bool = False,
@@ -469,6 +470,7 @@ async def send(
469470
file: Files to send, the path, bytes or File() instance, defaults to None. You may have up to 10 files.
470471
tts: Should this message use Text To Speech.
471472
suppress_embeds: Should embeds be suppressed on this send
473+
silent: Should this message be sent without triggering a notification.
472474
flags: Message flags to apply.
473475
delete_after: Delete message after this many seconds.
474476
ephemeral: Whether the response should be ephemeral
@@ -482,6 +484,8 @@ async def send(
482484
self.ephemeral = True
483485
if suppress_embeds:
484486
flags |= MessageFlags.SUPPRESS_EMBEDS
487+
if silent:
488+
flags |= MessageFlags.SILENT
485489

486490
return await super().send(
487491
content=content,

0 commit comments

Comments
 (0)