Очистить команду Discord Python

Обновлено: 02.07.2024

Заинтересованность в создании бота для 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

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

Существует несколько способов обработки ошибок с помощью discord.py:

  • Обработчики ошибок для каждой команды
  • Обработчики ошибок для каждого процессора
  • Глобальные обработчики ошибок

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

Обработка ошибок для каждой команды

Хорошо! Первый тип обработчика, который мы создадим, — простой для одной команды. Сначала давайте получим базовый код для шестеренки и базовой команды:

  • CommandOnCooldown из-за декоратора времени восстановления
  • MissingPermissions из-за декоратора has_guild_permissions
  • MissingRequiredArgument из-за необходимости члена
  • ConversionError из-за подсказки типа участника
  • CommandInvokeError из-за содержания команды, вызывающей DivisionByZero

Чтобы получить исходную ошибку из CommandInvokeError , вы можете использовать ее исходный атрибут, который возвращает вызвавшее ее исключение.

Теперь перейдем к самому обработчику ошибок. Первое, что нам нужно сделать, чтобы добавить обработчик ошибок, это сообщить discord.py, что мы хотим добавить обработчик ошибок в команду, что мы можем сделать с помощью декоратора ошибок команды:

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

Далее нам нужно добавить функцию, которая будет обрабатывать ошибку:

Отлично! Как видите, функция принимает 2 аргумента, не являющихся собственными: ctx и error, которые являются контекстом команды и возникшей ошибкой. Теперь давайте добавим немного логики в функцию, чтобы показать соответствующую информацию пользователю, чтобы он знал, что пошло не так, как обычно, я объясню, что все делает после, и я призываю вас не копировать этот код, а понять его и работайте над написанием собственного обработчика.

Это много кода, но вот что делает каждая его часть:

  • Во-первых, isinstance — это метод Python, который проверяет, является ли объект экземпляром данного класса. В этом случае мы проверяем, является ли ошибка экземпляром различных ошибок discord.py, чтобы определить, какое сообщение об ошибке мы хотим отправить, поскольку иногда они имеют разные параметры.
  • Первая ошибка — CommandOnCooldown. Здесь мы хотим отправить время в секундах, пока не закончится время восстановления, и пользователь сможет снова использовать команду, что мы можем получить с помощью атрибута ошибки retry_after.
  • Далее для MissingPermissions мы просто хотим сообщить, что у пользователя отсутствуют необходимые разрешения. Также можно отправить именно то разрешение, которого им не хватает, но для простоты я оставлю это здесь, поскольку по умолчанию используются внутренние имена, такие как manage_guild , а не красивые имена Discord, такие как Manage Server
  • Для MissingRequiredArgument мы хотим показать, какой аргумент отсутствует, используя атрибут param ошибки.
  • Теперь, если ошибка не является ни одной из этих, мы хотим отправить общее сообщение о том, что команда не удалась, и мы отправляем это сообщение с параметром delete_after, чтобы сообщение само удалялось через 5 секунд.
  • Наконец, мы хотим, чтобы сообщение, вызвавшее ошибку, также было удалено, чтобы сохранить чат в чистоте. Мы не хотим, чтобы это удалялось немедленно, поэтому мы установили удаление через 5 секунд, что означает, что команда и ответ об ошибке будут удалены примерно в одно и то же время.

По сути, это все, что касается обработчиков команд. Конечно, есть и другие типы ошибок, которые могут возникать в других обстоятельствах, и я настоятельно рекомендую прочитать документацию по исключениям discord.py, чтобы узнать о них больше.

Глобальная обработка ошибок

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

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

Довольно просто, по сути, это стандартный шаблон для шестеренки, как обычно. Далее мы добавим прослушиватель для получения ошибок команды:

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

Это не полный обработчик ошибок. Исключений не хватает, и я не собираюсь их включать. Это делается для того, чтобы отговорить людей от простого копирования обработчика ошибок для себя. Я не могу не подчеркнуть, насколько важно для обучения, чтобы люди пробовали что-то сами, а не копировали код. Для всех ошибок, которые вам, возможно, придется обрабатывать здесь, я советую прочитать документы discord.py по исключениям. Кроме того, некоторые из ошибок здесь имеют несколько производных исключений, таких как UserInputError , во что бы то ни стало нужно сделать более конкретные обработчики ошибок, которые имеют специальные сообщения для каждого исключения!

Как видите, это не сильно отличается от обработчика для каждой команды, но есть несколько заметных отличий:

Carl Bot — это продвинутый бот, который позволяет вам управлять журналами, хранить чаты и создавать роли реакции, как и многие боты сервера Discord, доступные онлайн. Это также выводит AutoMod на новый уровень, не пропуская спам, вложения или ссылки, и наказывает людей, которые публикуют такие материалы.

Как удалить сообщения бота?

Удалить сообщения в Discord так же просто, как навести курсор на сообщение, щелкнуть значок меню из трех точек во всплывающем окне и выбрать параметр «Удалить сообщение». Затем нажмите кнопку «Удалить» во всплывающем окне, чтобы навсегда удалить сообщение.

Как вы используете Discord PY?

Проще всего это сделать с помощью модуля python «PrettyHelp»:

  1. Вы можете установить его с помощью pip, используя pip install -U discord-pretty-help.
  2. Затем импортируйте его из pretty_help import DefaultMenu, PrettyHelp.
  3. Затем вы устанавливаете кнопки меню и заменяете меню справки по умолчанию:

Как вы используете команду бота для очистки диска?

Все, что вам нужно сделать, это ввести «. cleanup» в качестве префикса и введите параметр, на основании которого вы хотите удалять сообщения. Например, чтобы удалить сообщения со ссылками, введите «. очистить ссылки», чтобы удалить все сообщения со ссылками.

Какой бот может удалять сообщения?

Бот MEE6 — один из самых мощных вариантов, которые есть в вашем распоряжении, если вы хотите очистить каналы своего сервера. Как уже упоминалось, он может отправлять до 1000 сообщений за одно действие, хотя вы можете указать любое другое число. Этот бот позволяет удалять сообщения без разбора или только от определенных пользователей.

Есть ли модуль разногласий в python2.7?

Возможно, вы установили его для python2.7, но запустили под python3 и т. д. Скорее всего, у вас обоих есть папка с именем discord в папке вашего проекта. Удалите это. Повторите команду. Вероятно, это случай локальных переопределений. Для проверки полностью выйдите из каталога проекта и выполните следующие команды:

Как установить discord.py без голосовой поддержки?

Как исправить отсутствие модуля с именем «discord»?

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

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