Browse Source

Merge d44b3cf05e into 26855160f8

pull/10180/merge
owocado 4 weeks ago
committed by GitHub
parent
commit
0f0097224d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 51
      discord/app_commands/models.py
  2. 14
      discord/types/interactions.py

51
discord/app_commands/models.py

@ -26,7 +26,7 @@ from __future__ import annotations
from datetime import datetime
from .errors import MissingApplicationID
from ..flags import AppCommandContext, AppInstallationType
from ..flags import AppCommandContext, AppInstallationType, ChannelFlags
from .translator import TranslationContextLocation, TranslationContext, locale_str, Translator
from ..permissions import Permissions
from ..enums import (
@ -575,6 +575,23 @@ class AppCommandChannel(Hashable):
the application command in that channel.
guild_id: :class:`int`
The guild ID this channel belongs to.
category_id: Optional[:class:`int`]
The category channel ID this channel belongs to, if applicable.
topic: Optional[:class:`str`]
The channel's topic. ``None`` if it doesn't exist.
position: :class:`int`
The position in the channel list. This is a number that starts at 0. e.g. the
top channel is position 0.
last_message_id: Optional[:class:`int`]
The last message ID of the message sent to this channel. It may
*not* point to an existing or valid message.
slowmode_delay: :class:`int`
The number of seconds a member must wait between sending messages
in this channel. A value of ``0`` denotes that it is disabled.
Bots and users with :attr:`~discord.Permissions.manage_channels` or
:attr:`~discord.Permissions.manage_messages` bypass slowmode.
nsfw: :class:`bool`
If the channel is marked as "not safe for work" or "age restricted".
"""
__slots__ = (
@ -583,6 +600,14 @@ class AppCommandChannel(Hashable):
'name',
'permissions',
'guild_id',
'topic',
'nsfw',
'position',
'category_id',
'slowmode_delay',
'last_message_id',
'_last_pin',
'_flags',
'_state',
)
@ -599,6 +624,14 @@ class AppCommandChannel(Hashable):
self.type: ChannelType = try_enum(ChannelType, data['type'])
self.name: str = data['name']
self.permissions: Permissions = Permissions(int(data['permissions']))
self.topic: Optional[str] = data.get('topic')
self.position: int = data.get('position') or 0
self.nsfw: bool = data.get('nsfw') or False
self.category_id: Optional[int] = _get_as_snowflake(data, 'parent_id')
self.slowmode_delay: int = data.get('rate_limit_per_user') or 0
self.last_message_id: Optional[int] = _get_as_snowflake(data, 'last_message_id')
self._last_pin: Optional[datetime] = parse_time(data.get('last_pin_timestamp'))
self._flags: int = data.get('flags', 0)
def __str__(self) -> str:
return self.name
@ -611,6 +644,22 @@ class AppCommandChannel(Hashable):
"""Optional[:class:`~discord.Guild`]: The channel's guild, from cache, if found."""
return self._state._get_guild(self.guild_id)
@property
def flags(self) -> ChannelFlags:
""":class:`~discord.ChannelFlags`: The flags associated with this channel object.
.. versionadded:: 2.6
"""
return ChannelFlags._from_value(self._flags)
def is_nsfw(self) -> bool:
""":class:`bool`: Checks if the channel is NSFW."""
return self.nsfw
def is_news(self) -> bool:
""":class:`bool`: Checks if the channel is a news channel."""
return self.type == ChannelType.news
def resolve(self) -> Optional[GuildChannel]:
"""Resolves the application command channel to the appropriate channel
from cache if found.

14
discord/types/interactions.py

@ -24,12 +24,12 @@ DEALINGS IN THE SOFTWARE.
from __future__ import annotations
from typing import TYPE_CHECKING, Dict, List, Literal, TypedDict, Union
from typing import TYPE_CHECKING, Dict, List, Literal, TypedDict, Union, Optional
from typing_extensions import NotRequired
from .channel import ChannelTypeWithoutThread, ThreadMetadata, GuildChannel, InteractionDMChannel, GroupDMChannel
from .channel import ChannelTypeWithoutThread, GuildChannel, InteractionDMChannel, GroupDMChannel
from .sku import Entitlement
from .threads import ThreadType
from .threads import ThreadType, ThreadMetadata
from .member import Member
from .message import Attachment
from .role import Role
@ -64,6 +64,14 @@ class _BasePartialChannel(TypedDict):
class PartialChannel(_BasePartialChannel):
type: ChannelTypeWithoutThread
topic: NotRequired[str]
position: int
nsfw: bool
flags: int
rate_limit_per_user: int
parent_id: Optional[Snowflake]
last_message_id: Optional[Snowflake]
last_pin_timestamp: NotRequired[str]
class PartialThread(_BasePartialChannel):

Loading…
Cancel
Save