Skip to main content

Ветки

Ветки - это объекты класса Messageable, и их можно рассматривать как подканалы внутри существующих каналов. Они позволяют организовать несколько тем в канале, временно выделив им отдельное пространство.

Методы, связанные с ветками

Создание и удаление веток

Ветку можно создать с помощью метода create_thread() в объектах Message или TextChannel.

threads.py
# Используя объект '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.

threads.py
thread = channel.get_thread(...)  # Вы также можете использовать bot.get_channel(...)

await thread.delete()

Присоединение и покидание веток

Для присоединения к ветке и выхода из неё требуется наличие объекта Thread, в котором вы можете использовать методы join() и leave() соответственно.

threads.py
thread = channel.get_thread(...)  # Вы также можете использовать bot.get_channel(...)

# Присоединение к ветке.
await thread.join()

# Покидание ветки.
await thread.leave()

Здесь рекомендуется использовать блок try-except на случай, если акканут бота не сможет присоединиться к ветке; это может быть связано с отсутствием прав.

Архивирование, разархивирование и блокировка веток

Архивирование ветки, по сути, делает его "доступным только для чтения" для не-модераторов - где они могут просматривать старые сообщения, но не отправлять сами сообщения. Заблокированные ветки могут быть разархивированы только пользователями, имеющими право manage_threads (Управление ветками).

Ветки имеют длительность автоархивирования - период времени, по истечении которого ветка автоматически архивируется без настройки модератором. Эта длительность также может быть установлена аккаунтом бота при создании или редактировании ветки.

threads.py
thread = channel.get_thread(...)

await thread.edit(auto_archive_duration=60)

Настройка ветки для архивирования, разархивирования или блокировки может быть выполнена с помощью метода edit() с помощью параметров archived и locked. Оба этих атрибута принимают логическое значение (bool).

threads.py
thread = channel.get_thread(...)

# Архивирование ветки
await thread.edit(archived=True) # Установите на False, чтобы разархивировать ветку

# Блокировка ветки
await thread.edit(locked=True)

Публичные и приватные ветки

Публичные ветки доступны для всех участников, которые могут просматривать родительский канал ветки. Такие ветки могут быть созданы с помощью метода create_thread(), как описано в предыдущем разделе.

Приватные ветки - это те, которые доступны только модераторам и участникам, приглашенным создателем ветки. Приватную ветку можно создать, указав type в методе create_thread() как private_thread.

threads.py
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.

События веток

Ветки добавляют некоторые новые события шлюза, которые перечислены ниже. Вы можете найти более подробную информацию об этом в документации.