Помогите команде discord py

Обновлено: 21.11.2024

Discord.py — очень мощный API. Он направлен на то, чтобы сделать создание ботов Discord невероятно простым, но при этом дать пользователю много возможностей. Люди создали игровых ботов, ролевых ботов, модерационных ботов, экономических ботов и многое другое! Carl-bot, Auttaja и многие другие боты используют discord.py. С помощью этого руководства вы сможете научиться им пользоваться.

Установка discord.py

Если у вас уже установлен Python, вам следует установить discord.py с помощью

Выйти из полноэкранного режима

Та-да! discord.py готов к использованию!

Вам нужно будет создать учетную запись для вашего бота. Руководство по этому поводу написано здесь.

Основы бота

При запуске и создании бота вам нужно решить, использовать ли discord.Client или commands.Bot .

  • Легче, чем commands.Bot.
  • Лучше всего, если вы не собираетесь использовать команды
  • Обширная система команд
  • Лучше всего, если у вашего бота будут команды
  • Поддерживает большое количество кода, разбиваемого на "винтики".
  • Поддерживает простое преобразование объектов разногласий.

В этом руководстве мы создадим бота с командами, поэтому мы будем использовать commands.Bot.

Выйти из полноэкранного режима

Мы только что инициализировали класс как объект. Это похоже на идею изобретения, а затем его создание. Мы определили этот класс для переменной bot, которую можно назвать как угодно. Большинство людей используют бота или клиента .

Теперь, когда наш бот определен, мы можем начать с первых команд. команды discord.py.Bot создает такие команды:

Выйти из полноэкранного режима

Выйти из полноэкранного режима

ctx — это контекст нашей команды, который содержит множество данных, которые можно использовать. У него также есть метод send, который позволит нам отправить сообщение на канал, в котором использовалась команда.

Теперь давайте произнесем имя пользователя команды! Для этого мы можем использовать ctx.author :

Выйти из полноэкранного режима

Теперь, когда мы приветствуем пользователя, он скажет Hello mikey 🌌!

Поздравляем! Вы только что написали бота с помощью discord.py! Запустите код, и ваш бот должен подключиться к сети! Когда вы наберете !hello , бот ответит!

Окончательный код:

ПСССТ! Нужны ресурсы для веб-разработки? Ознакомьтесь с этой статьей @devlorenzo!

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

С этого момента предполагается, что у вас установлена ​​библиотека discord.py, а также версия Python 3.6 или выше, поскольку в более ранних версиях отсутствуют все функции, используемые в этом руководстве.

Как видите, первое, что нам нужно сделать, это сообщить боту, какой префикс команды использовать, иначе как он узнает, когда вызывается команда и что он должен ответить?

Этот префикс на самом деле может быть одним из многих вещей, но в этом руководстве я буду использовать только строку "!" для префикса. А пока просто знайте, что можно создавать более сложные префиксы, например разные префиксы для каждого сервера.

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

Далее мы хотим добавить боту команду, чтобы он мог что-то делать. Первая команда, которую мы добавим, это команда !hello, которая отвечает "Hello, world!"

По умолчанию бот игнорирует сообщения других ботов, поэтому отправка !hello от другого бота не приведет к запуску команды.

Это довольно много, даже если вы хорошо знакомы с Python, поэтому позвольте мне объяснить, что делает каждая его часть:

Обратите внимание, что явно задавать имя в декораторе команды необязательно, так как без него команда унаследует имя функции, и часто не понадобится, использовать ли ее — решать вам.

Далее нам нужно запустить бота с его токеном, который вы получили на портале разработчика в 01 — Создание пользователя бота:

Для краткости это небезопасный способ установки используемого токена. Прочтите дополнительную часть о хранении токенов.

Это запускает бота с вашим токеном и абстрагируется от создания цикла событий и запуска бота через сопрограммы.

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

Заинтересованность в создании бота для Discord — обычное знакомство с миром программирования в нашем сообществе.

Использование его в качестве первого проекта по программированию во время обучения — палка о двух концах.Прежде чем научиться создавать бота, необходимо понять большое количество концепций, что делает процесс обучения и завершения проекта более трудным, чем более простые проекты, разработанные специально для начинающих. Однако взамен вы получаете возможность открыть для себя гораздо больше аспектов Python, чем обычно, и это может быть удивительно полезным опытом, когда вы, наконец, достигнете своей цели.

Еще одним замечательным аспектом создания ботов является то, что они имеют огромные возможности для того, что вы можете с ними делать, практически ограниченные только вашим собственным воображением. Это означает, что вы можете продолжать изучать и применять более сложные концепции по мере того, как вы растете как программист, продолжая создавать ботов, поэтому изучение этого может быть полезным и приятным набором навыков.

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

Основные ссылки¶

Создание учетной записи бота в Discord¶

Идентификатор клиента¶

Ваш идентификатор клиента совпадает с идентификатором пользователя вашего бота. Это понадобится вам при создании URL-адреса приглашения.

Вы можете найти свой идентификатор клиента на странице настроек «Общая информация» вашего приложения в поле «Имя».

Ваш идентификатор клиента не является секретом, и его не нужно хранить в тайне.

Токен бота¶

Ваш токен бота — это токен, который авторизует вашу учетную запись бота с помощью API. Думайте об этом как о ключе доступа к API вашего бота. С помощью своего токена вы можете взаимодействовать с любой частью API, доступной для ботов.

Токен бота можно найти на странице настроек бота вашего приложения в поле "Имя пользователя". Вы можете нажать кнопку "Копировать", чтобы скопировать его, не открывая его вручную.

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

Чтобы сбросить токен, перейдите на страницу настроек бота в своем приложении и нажмите кнопку "Создать заново". Обязательно обновите токен, который вы используете для скрипта бота, на этот новый, так как старый больше не будет работать.

Разрешения, целое число¶

Разрешения Discord обычно представлены целым числом разрешений, которое представляет все разрешенные разрешения.

Если вы хотите создать собственное целое число разрешений, вы можете сгенерировать его на странице настроек бота вашего приложения, расположенной внизу страницы.

Отметьте разрешения, которые вы хотите разрешить, и поле «Целое число разрешений» будет обновлено. Его можно использовать в URL-адресе приглашения бота, чтобы установить разрешения по умолчанию для вашего бота, когда пользователи отправляются его приглашать.

URL-адрес приглашения бота¶

Бот не может использовать ссылку для приглашения на сервер. Вместо этого их должен пригласить участник с разрешением на управление сервером.

Вы можете создать URL-адрес приглашения для своего бота, заменив:

Вы также можете создать его с помощью инструмента "Калькулятор разрешений".

Использование базового клиента ( discord.Client )¶

Ниже приведены основные ресурсы, которые следует прочитать, чтобы ознакомиться с основными функциями discord.py .

Использование расширения команд ( commands.Bot)¶

Он полностью охватывает: * Как создать бота с помощью расширения Commands * Как определить команды и их аргументы * Что такое объект Context * Преобразователи аргументов * Основы обработки ошибок * Проверки команд

Примеры использования¶

Официальные примеры и ресурсы¶

Официальные примеры можно найти в исходном репозитории.

Документация по разрешениям¶

Примеры и ресурсы сообщества¶

Сообщество разработчиков discord.py со временем делилось друг с другом примерами и ссылками.
Ниже представлен список наиболее цитируемых примеров сообщества.

Расширения/Cogs¶

Обработка ошибок¶

Встроить¶

Использование локальных изображений во встраиваниях¶
Ограничения встраивания¶
Элемент Символы
Заголовок 256
Имя поля 256
Значение поля 1024
Описание 2048
Нижний колонтитул 2048
Все встраивание 6000
Элемент Количество
Поля 25

Эмодзи¶

Присутствие активности¶

Обработка изображений¶

Системная служба¶

имя_бота.service

Каталог
/usr/local/lib/systemd/system

Служебные команды
Обновить systemd после изменения файла модуля:
systemctl daemon-reload

Установите запуск службы при загрузке:
systemctl enable botname

Запустить службу сейчас:
systemctl start имя бота

Остановить службу:
systemctl stop имя бота

Просмотр журналов
Все журналы:
journalctl -u имя_бота

Недавние журналы и продолжение печати новых журналов в режиме реального времени:
journalctl -fu mybot

До сих пор все, кто использует ботов в Discord, взаимодействовали с ними одинаково: текстовые команды, где пользователь должен ввести (иногда угадать), какая именно команда должна быть для этого бота, чтобы он работал. Часто это может выглядеть примерно так:

Боты могут значительно повысить ценность серверов, и мы знаем, что они так же важны для Discord, как текстовый чат, голосовые каналы, гифки и смайлики. Вот почему мы хотели сделать их такими же простыми и интуитивно понятными в использовании. С помощью Slash Commands теперь все, что вам нужно сделать, это ввести косую черту «/», чтобы открыть список команд, которые может выполнять бот!

Это означает, что теперь пользователи не только будут лучше осведомлены обо всех доступных командах для вашего бота, но и увидят новые функции по мере их добавления. Кроме того, мы внедрили проверку, состояния ошибок и удобный пользовательский интерфейс, чтобы убедиться, что они могут сделать это правильно с первого раза, особенно на мобильных устройствах (теперь у вас есть еще один союзник в борьбе с автозаменой вашего телефона).

Внедрение Slash-команд также помогает повысить доступность — люди, использующие программы чтения с экрана и другие полезные настройки, смогут использовать вашего бота так же легко, как и в остальной части Discord, поскольку Slash-команды встроены.

Разработчики нашей библиотеки сообщества проделали невероятную работу, помогая сделать Discord API более доступным. Мы также хотим помочь сделать программирование в Discord еще проще. Когда мы начали создавать ботов для Discord, мы все нашли такой пример «начала работы»:

const client = new Discord.Client();client.on('ready', () => console.log(`Вы вошли как $!`);
>);client. on('message', msg => if (msg.content === 'ping') msg.reply('Pong!');
>
>);client.login('токен' );

Вау, это было легко! Но по мере того, как мы строили больше, мы поняли, что это не всегда так просто. Вскоре этот бот из 10 строк кода, работающий на нашем домашнем ПК, превратился в монолит абстрактных обработчиков команд и конфигураций докеров, пока мы отчаянно гуглили «Как увеличить память на VPS» и «Какие намерения шлюза Discord мне нужны? ”

Наша цель с Slash Commands – создать удобный способ общения с ботами на основе мощной, удобной для разработчиков платформы, которая избавит вас от некоторых проблем, связанных с программным обеспечением.

Нужен пользователь? тип 6: ПОЛЬЗОВАТЕЛЬ. Нужен канал, роль, целое число или строка? Для этого есть тип.

"type": 2,
"token": "A_UNIQUE_TOKEN",
"id": "786008729715212999",
"guild_id": "290926798626357999",
/>"channel_id": "645027999969510667",
"data":
"name": "usersearch",
"id": "771825006099989984",
"options" : [
"имя": "пользователь",
"значение": "53908232506183680"
>,
],
"разрешено": "пользователи": " 53908232506183680": "id": "53908232506183680",
"username": "Mason",
"аватар": "a_d5efa99b3eeaa7dd43acca82f5692432",
"дискриминатор": "1337",
>"public_flags": 131141
>
>
>
>
>

У вашего бота есть команда /play, у другого бота на вашем сервере есть команда /play. У каждого бота есть команда /play. В конце концов, у нас закончатся !, ~ и -, чтобы отличить одну команду от другой, и что произойдет, если три бота получат одну и ту же команду?

Поскольку боты получают Slash-команды как определенные события, а не при чтении сообщений в чате, вы и ваши пользователи можете не гадать, каким ботом должна быть команда. Автозаполнение помогает пользователям искать и фильтровать все команды на сервере, что упрощает поиск своей команды /play, а не чужой.

Те из вас, кто использует больших ботов Discord, знают, что хостинг, время безотказной работы и масштабируемость не бесплатны. Подключения к шлюзу могут быть дорогими в обслуживании, а развертывание нового кода означает использование ограничений IDENTIFY на день.

Хотя Slash-команды работают через шлюз, как и любое другое событие, вместо этого вы можете получать их как исходящие веб-перехватчики.

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

Пришло время открыть вам секрет: мы внедрили совершенно новый вид API прямо у вас под носом. Slash-команды — это одна из многих многообещающих функций, созданных на основе новой части нашего API, которую мы называем «Взаимодействия». Это события, инициируемые пользователями, взаимодействующими с вашим ботом — они стандартизированы и отделены от любой отдельной функции или элемента пользовательского интерфейса (другими словами, мы можем создать гораздо больше, чем Slash-команды, и вы сможете воспользоваться преимуществами с небольшими дополнительными действиями). работа).

Взаимодействия доступны как через шлюз, так и через исходящие веб-перехватчики, а это означает, что если вам не нужно постоянное подключение к шлюзу, вам не нужно его поддерживать. «Но подождите, как у вас есть бот без подключения к шлюзу?» Отличный вопрос! Что, если вам не нужен бот? Подробнее о том, как боты и взаимодействия работают вместе, можно прочитать здесь.

Мы все еще усердно работаем над тем, чтобы сделать для вас больше интерактивных функций. Мы будем внимательно следить за тем, как вы их используете, и, как всегда, будем рады услышать от вас.

Команды косой черты доступны на ПК, Android и iOS. Перейдите к документации по API и узнайте, как создавать Slash-команды для своего приложения прямо сейчас!

Если вам нужно вдохновение, посмотрите, что уже сделали некоторые из ваших любимых ботов:

Если вам интересно узнать больше, убедитесь, что вы присоединились к нашему официальному серверу разработчиков Discord, где мы делимся последними новостями, отвечаем на вопросы об API Discord, а иногда даже кратко сообщаем о новых функциях.

Читайте также: