Ветки
Ветки - это объекты класса Messageable
, и их можно
рассматривать как подканалы внутри существующих каналов. Они позволяют организовать несколько тем в канале, временно
выделив им отдельное пространство.
Методы, связанные с ветками
Создание и удаление веток
Ветку можно создать с помощью метода create_thread()
в объектах Message
или TextChannel
.
# Используя объект 'Message'
message = await channel.fetch_message(1234567890)
await message.create_thread(
name="Это сообщение будет действовать как начальное сообщение ветки.",
auto_archive_duration=60,
)
# Используя объект 'TextChannel'
channel = bot.get_channel(...)
await channel.create_thread(
name="Для этой ветки требуется указать начальное сообщение.",
auto_archive_duration=60,
message=message,
)
Чтобы удалить ветку, вы можете использовать метод delete()
в
объекте Thread
.
thread = channel.get_thread(...) # Вы также можете использовать bot.get_channel(...)
await thread.delete()
Присоединение и покидание веток
Для присоединения к ветке и выхода из неё требуется наличие объекта Thread
,
в котором вы можете использовать методы join()
и leave()
соответственно.
thread = channel.get_thread(...) # Вы также можете использовать bot.get_channel(...)
# Присоединение к ветке.
await thread.join()
# Покидание ветки.
await thread.leave()
Здесь рекомендуется использовать блок try-except
на случай, если акканут бота не сможет присоединиться к ветке; это
может быть связано с отсутствием прав.
Архивирование, разархивирование и блокировка веток
Архивирование ветки, по сути, делает его "доступным только для чтения" для не-модераторов - где они могут
просматривать старые сообщения, но не отправлять сами сообщения. Заблокированные ветки могут быть разархивированы
только пользователями, имеющими право manage_threads
(Управление ветками).
Ветки имеют длительность автоархивирования - период времени, по истечении которого ветка автоматически архивируется без настройки модератором. Эта длительность также может быть установлена аккаунтом бота при создании или редактировании ветки.
thread = channel.get_thread(...)
await thread.edit(auto_archive_duration=60)
Настройка ветки для архивирования, разархивирования или блокировки может быть выполнена с помощью
метода edit()
с помощью параметров archived
и locked
. Оба этих
атрибута принимают логическое значение (bool
).
thread = channel.get_thread(...)
# Архивирование ветки
await thread.edit(archived=True) # Установите на False, чтобы разархивировать ветку
# Блокировка ветки
await thread.edit(locked=True)
Публичные и приватные ветки
Публичные ветки доступны для всех участников, которые могут просматривать родительский канал ветки. Такие ветки могут
быть созданы с помощью метода create_thread()
, как
описано в предыдущем разделе.
Приватные ветки - это те, которые доступны только модераторам и участникам, приглашенным создателем ветки. Приватную
ветку можно создать, указав type
в методе create_thread()
как private_thread
.
channel = bot.get_channel(...)
await channel.create_thread(
name="Название ветки",
auto_archive_duration=60,
type=disnake.ChannelType.private_thread,
)
Приватная ветка может быть создана только в объекте TextChannel
. Тип,
которого можно указать в методе create_thread()
может быть public_thread
, private_thread
или news_thread
.
События веток
Ветки добавляют некоторые новые события шлюза, которые перечислены ниже. Вы можете найти более подробную информацию об этом в документации.