A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
discord-py-guide / ui_elements.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cannot retrieve contributors at this time
346 lines (229 sloc) 16.7 KB
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents Copy raw contents
Copy raw contents
Работа с UI-Элементами
Если вы все еще пользуетесь библиотекой discord-py , то для работы с материалами этого руководства вам придется обновиться на более актуальный форк этой библиотеки. Конкретно здесь пойдет речь про PyCord . Подробнее про смысл перехода на эту библиотеку здесь.
как настроить кнопку связи в Discord
Если кто не знал, в дискорд вместе со slash-командами уже давно завезли графические элементы, такие как:
Все эти элементы хранятся в модуле discord.ui и работать с ними очень просто. Для просмотра документации нажмите на интересующий элемент списка выше
Для начала немного теории. Кнопки и выпадающие списки являются такими же элементами сообщения ( discord.Message ), как и вложения (видео/изображения/файлы) ( discord.Message.attachments ), Embed-формы ( discord.Message.embeds ) и прочие доп. элементы кроме основного текста.
Поэтому, когда вы отправляете сообщение с кнопкой, эту кнопку нужно куда-то размещать. Для этого в PyCord имеется специальный класс discord.ui.View , который как раз таки будет содержать в себе все созданные в коде компоненты.
То есть, логика такая:
- Создаем экземпляр View()
- Затем создаем объекты кнопок/выпадающих списков
- Устанавливаем их внутрь формы View и уже эту форму передаем как параметр при отправке сообщения:
view = . . . await channel.send(‘Текст сообщения’, view=view)
Дальше на конкретных примерах будет понятнее.
Работа с кнопками
Кнопки имеют различные стили, которые хранятся в классе discord.ButtonStyle :
Импортируем из модуля discord.ui класс кнопки и класс формы для кнопки:
Кликабельные кнопки в Discord статусе #fyp #fyr #recommended #voice #tutorial
from discord.ui import View, Button
Пусть кнопка создается при вызове команды /create_button :
Для начала создадим форму discord.ui.View , в которую будем размещать кнопку. Из документации видим, что по умолчанию параметр timeout имеет значение 180.0 , что означает, что дискорд будет передавать боту информацию о нажатии на кнопку только в течение 180 секунд, а потом просто забудет про нее. Если вам нужно, чтобы бот работал с кнопкой все время, пока он запущен, то значение параметра следует установить как None
view = View(timeout=None)
Теперь давайте создадим кнопку. Из документации по классу discord.ui.Button видим, что можем передать в конструктор класса параметры:
- label : str — текст кнопки
- emoji : discord.Emoji / str — эмоджи рядом с текстом
- style : discord.ButtonStyle — стиль кнопки
- custom_id : str — пользовательский идентификатор кнопки (для удобства обработки нажатий)
- disabled : bool — состояние кнопки (включена или выключена)
И другие параметры, про которые можно почитать в документации.
Создаем объект кнопки:
button = Button(label=’Кнопка’, style=discord.ButtonStyle.green)
Обработчик нажатия на кнопку
Кнопка есть, теперь надо сделать, чтобы при нажатии на нее вызывалась какая-то функция. Сделаем, чтобы при нажатии на кнопку, текст сообщения отображал последнего пользователя, который ее нажал.
Реализуем это в функции button_callback :
Из документации видим, что при нажатии на кнопку, в обработчик будет передаваться аргумент interaction ( discord.Interaction ), из которого можно получить пользовательский идентификатор кнопки, пользователя, который нажал на кнопку и многое другое.
Не забываем указать, что функция принимает этот аргумент interaction .
async def button_callback(interaction: discord.Interaction): await interaction.message.edit(content=f’Последним на кнопку нажал: interaction.user.
name>’)
Далее присваиваем кнопке обработчик нажатия:
button.callback = button_callback
Добавляем ее в форму view :
view.add_item(button)
И отправляем ответ на команду:
await ctx.respond(view=view)
Должно получиться как-то так (код с пояснениями здесь):
Результат:
Работа с выпадающими списками
Импортируем из модуля discord.ui класс выпадающего списка и класс формы для его размещения:
from discord.ui import View, Select
Пусть выпадающий список создается при вызове команды /create_select_menu :
Для начала создадим форму discord.ui.View , в которую будем размещать выпадающий список. Из документации видим, что по умолчанию параметр timeout имеет значение 180.0 , что означает, что дискорд будет передавать боту информацию о выборе пункта списка только в течение 180 секунд, а потом просто забудет про него. Если вам нужно, чтобы бот работал со списком все время, пока он запущен, то значение параметра следует установить как None
view = View(timeout=None)
Теперь давайте создадим выпадающи список. Из документации по классу discord.ui.Select видим, что можем передать в конструктор класса парамтры:
- custom_id : str — пользовательский идентификатор списка (для удобства обработки выбора значения)
- disabled : bool — состояние списка (включен или выключен)
- min_values : int — минимальное количество элементов, которые должен выбрать пользователь
- max_values : int — максимальное количество элементов, которые может выбрать пользователь
И другие параметры, про которые можно почитать в документации.
Создаем объект выпадающего списка:
select = Select()
Теперь, когда мы имеем пустой выпадающий список, его нужно наполнить элементами, которые сможет выбирать пользователь. Элементы должны быть экземплярами класса discord.SelectOption .
Импортируем этот класс:
from discord import SelectOption
И рассмотрим список параметров его конструктора:
- default : bool — будет ли этот параметр выбран в качестве параметра по умолчанию
- description : str — описание параметра
- label : str — название параметра
- emoji : discord.Emoji / str — эмоджи, который будет отображаться рядом с названием
- value : str — значение параметра, которое не видят пользователи (если не указано, то принимает значение параметра label )
Теперь создадим список параметров. Первый будет выбран по умолчанию ( default=True )
options = [ SelectOption(label=’Яблоко’, emoji=», default=True), SelectOption(label=’Банан’, emoji=»), SelectOption(label=’Апельсин’, emoji=»), ]
Добавляем их в список:
select.options = options
Обработчик выбора параметра
Реализуем обработчик выбора параметра. Сделаем так, чтобы при выборе элемента бот изменял текст сообщения на » выбрал «
Из документации видим, что при выборе параметра, в обработчик будет передаваться аргумент interaction ( discord.Interaction ), из которого можно получить пользовательский идентификатор списка, пользователя, который взаимодействует со списком и многое другое.
Не забываем указать, что функция принимает этот аргумент interaction .
async def select_callback(interaction: discord.Interaction): await interaction.message.edit(content=f’interaction.user.
name> выбрал interaction.data[«values»][0]>’)
Чтобы было понятнее, каким образом interaction.data[«values»][0] возвращает нам выбранный элемент, просто взгляните на структуру объекта interaction.data , при выборе «Банан «:
< «values»: [ «Банан» ], «custom_id»: «603f9ddf258347e9b6c75cb760ab3d52», «component_type»: 3 >
Далее присваиваем обработчик:
select.callback = select_callback
Добавляем список в форму view :
view.add_item(select)
И отправляем ответ на команду:
await ctx.respond(view=view)
Должно получиться как-то так (код с пояснениями здесь):
Результат:
Источник: github.com
Как включить микрофон в Дискорде на ПК нажатием кнопки?
Как включить микрофон в Дискорде на ПК сочетанием клавиш и зачем эта функция нужна? Разберемся вместе – в этом обзоре раскрываем новые возможности мессенджера и учимся настраивать управление под личные нужды.
Как активировать микрофон по кнопке
Прежде чем разбираться, как говорить в Дискорде на кнопку, поговорим о необходимости активации данной опции. Зачем она нужна? Вы сможете включать воспроизведение голоса и отключаться от голосового чата за считанные секунды – одним нажатием. Это удобно, позволяет контролировать передаваемые звуки и говорить тогда, когда действительно нужно и хочется.
На какую кнопку поставить микрофон в Discord – вы решите сами! Мы же рассказываем, что необходимо сделать, чтобы добиться нужного результата:
- Откройте приложение на компьютере и войдите в нужную учетную запись;
- Нажмите на шестеренку настроек на нижней панели слева, рядом с аватаром;
- Войдите в настройки и отыщите в меню слева раздел «Голос и видео» ;
- Перейдите к подразделу «Режим ввода» ;
- Поставьте галочку в строке «Режим рации» .
Именно режим рации позволяет сделать в Дискорде микрофон на кнопку – вы будете активировать работу передающего устройства нажатием определенной комбинации. Пора разобраться, как настроить нужную команду!
- Как только вы поставите отметку в нужной строке, появится дополнительное меню;
- В окне «Сочетание клавиш» нажмите на иконку «Изменить» ;
- Кликайте по кнопкам на клавиатуре – можно выбрать одну клавишу или составить сочетание – от двух до пяти символов. Доступны абсолютно любые значки – в том числе пробел или «Delete».
Внесенные изменения сохраняются автоматически – вы смогли настроить микрофон в Дискорде на кнопку! Теперь при нажатии соответствующей клавиши или сочетания, сможете активировать звукопередачу, собеседники услышат вас в игре. Удобная опция.
В том же меню вы можете дополнительно настроить задержку отключения в режиме рации – просто двигайте ползунок до нужного значения (от нуля до двух секунд).
Пользуясь установленным сочетанием, вы можете включить или отключить микрофон в Дискорде кнопкой, достаточно нажать один или два раза.
Есть ли альтернативные варианты
Вы можете воспользоваться расширенными настройками! Отличная новость?
- Вернитесь к панели слева и перейдите к разделу «Горячие клавиши» ;
- Щелкните по кнопке «Добавить» в верхней части страницы.
Переходим к разделу «Действие». Вы можете выбрать:
- Рация (обычный режим). Удерживайте, чтобы временно включать микро;
- Рация (приоритетный режим). На удержании включается микро, при этом громкость голосов других участников приглушается, пока говорите вы;
- Обратная рация. Временное отключение в режиме активации по голосу;
- Включить/ выключить микро. Ответ на вопрос, как включить и как выключить микрофон в Дискорде на кнопку;
- Включить/ включить обнаружение активации по голосу.
- Напротив появится окно «Горячие клавиши» . Здесь нужно кликнуть по значку «Установить» и набрать сочетание на клавиатуре.
Подробно объяснили, как в Дискорде поставить микрофон на кнопку – теперь вызвать нужную опцию можно одним кликом! Удобная возможность, позволяющая персонализировать мессенджер, максимально подстроить его под свои нужды. Спешите опробовать наши инструкции на практике – вам понравится.
Источник: messenge.ru