32
32
33
33
from . import utils
34
34
from .asset import Asset
35
+ from .emoji import Emoji
35
36
from .enums import (
36
37
ChannelType ,
37
38
EmbeddedActivity ,
@@ -171,7 +172,7 @@ def to_dict(self) -> dict[str, Any]:
171
172
payload : dict [str , Any ] = {
172
173
"name" : self .name ,
173
174
"moderated" : self .moderated ,
174
- } | self .emoji ._to_forum_tag_payload ()
175
+ } | self .emoji ._to_forum_reaction_payload ()
175
176
176
177
if self .id :
177
178
payload ["id" ] = self .id
@@ -195,6 +196,7 @@ class _TextChannel(discord.abc.GuildChannel, Hashable):
195
196
"last_message_id" ,
196
197
"default_auto_archive_duration" ,
197
198
"default_thread_slowmode_delay" ,
199
+ "default_reaction_emoji" ,
198
200
"default_sort_order" ,
199
201
"available_tags" ,
200
202
"flags" ,
@@ -228,7 +230,6 @@ def _update(
228
230
self .name : str = data ["name" ]
229
231
self .category_id : int | None = utils ._get_as_snowflake (data , "parent_id" )
230
232
self ._type : int = data ["type" ]
231
-
232
233
# This data may be missing depending on how this object is being created/updated
233
234
if not data .pop ("_invoke_flag" , False ):
234
235
self .topic : str | None = data .get ("topic" )
@@ -1008,6 +1009,10 @@ class ForumChannel(_TextChannel):
1008
1009
The initial slowmode delay to set on newly created threads in this channel.
1009
1010
1010
1011
.. versionadded:: 2.3
1012
+ default_reaction_emoji: Optional[:class:`str` | :class:`discord.Emoji`]
1013
+ The default forum reaction emoji.
1014
+
1015
+ .. versionadded:: 2.5
1011
1016
"""
1012
1017
1013
1018
def __init__ (
@@ -1022,6 +1027,15 @@ def _update(self, guild: Guild, data: ForumChannelPayload) -> None:
1022
1027
for tag in (data .get ("available_tags" ) or [])
1023
1028
]
1024
1029
self .default_sort_order : SortOrder | None = data .get ("default_sort_order" , None )
1030
+ reaction_emoji_ctx : dict = data .get ("default_reaction_emoji" )
1031
+ if reaction_emoji_ctx is not None :
1032
+ emoji_name = reaction_emoji_ctx .get ("emoji_name" )
1033
+ if emoji_name is not None :
1034
+ self .default_reaction_emoji = reaction_emoji_ctx ["emoji_name" ]
1035
+ else :
1036
+ self .default_reaction_emoji = self ._state .get_emoji (
1037
+ utils ._get_as_snowflake (reaction_emoji_ctx , "emoji_id" )
1038
+ )
1025
1039
1026
1040
@property
1027
1041
def guidelines (self ) -> str | None :
@@ -1061,6 +1075,7 @@ async def edit(
1061
1075
default_auto_archive_duration : ThreadArchiveDuration = ...,
1062
1076
default_thread_slowmode_delay : int = ...,
1063
1077
default_sort_order : SortOrder = ...,
1078
+ default_reaction_emoji : Emoji | int | str | None = ...,
1064
1079
available_tags : list [ForumTag ] = ...,
1065
1080
require_tag : bool = ...,
1066
1081
overwrites : Mapping [Role | Member | Snowflake , PermissionOverwrite ] = ...,
@@ -1113,6 +1128,12 @@ async def edit(self, *, reason=None, **options):
1113
1128
The default sort order type to use to order posts in this channel.
1114
1129
1115
1130
.. versionadded:: 2.3
1131
+ default_reaction_emoji: Optional[:class:`discord.Emoji` | :class:`int` | :class:`str`]
1132
+ The default reaction emoji.
1133
+ Can be a unicode emoji or a custom emoji in the forms:
1134
+ :class:`Emoji`, snowflake ID, string representation (eg. '<a:emoji_name:emoji_id>').
1135
+
1136
+ .. versionadded:: 2.5
1116
1137
available_tags: List[:class:`ForumTag`]
1117
1138
The set of tags that can be used in this channel. Must be less than `20`.
1118
1139
@@ -1329,6 +1350,7 @@ class VocalGuildChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hasha
1329
1350
"user_limit" ,
1330
1351
"_state" ,
1331
1352
"position" ,
1353
+ "slowmode_delay" ,
1332
1354
"_overwrites" ,
1333
1355
"category_id" ,
1334
1356
"rtc_region" ,
@@ -1376,6 +1398,7 @@ def _update(
1376
1398
data , "last_message_id"
1377
1399
)
1378
1400
self .position : int = data .get ("position" )
1401
+ self .slowmode_delay = data .get ("rate_limit_per_user" , 0 )
1379
1402
self .bitrate : int = data .get ("bitrate" )
1380
1403
self .user_limit : int = data .get ("user_limit" )
1381
1404
self .flags : ChannelFlags = ChannelFlags ._from_value (data .get ("flags" , 0 ))
@@ -1483,6 +1506,13 @@ class VoiceChannel(discord.abc.Messageable, VocalGuildChannel):
1483
1506
The ID of the last message sent to this channel. It may not always point to an existing or valid message.
1484
1507
1485
1508
.. versionadded:: 2.0
1509
+ slowmode_delay: :class:`int`
1510
+ The number of seconds a member must wait between sending messages
1511
+ in this channel. A value of `0` denotes that it is disabled.
1512
+ Bots and users with :attr:`~Permissions.manage_channels` or
1513
+ :attr:`~Permissions.manage_messages` bypass slowmode.
1514
+
1515
+ .. versionadded:: 2.5
1486
1516
flags: :class:`ChannelFlags`
1487
1517
Extra features of the channel.
1488
1518
@@ -1791,6 +1821,7 @@ async def edit(
1791
1821
overwrites : Mapping [Role | Member , PermissionOverwrite ] = ...,
1792
1822
rtc_region : VoiceRegion | None = ...,
1793
1823
video_quality_mode : VideoQualityMode = ...,
1824
+ slowmode_delay : int = ...,
1794
1825
reason : str | None = ...,
1795
1826
) -> VoiceChannel | None :
1796
1827
...
0 commit comments