Discord py cogs как пользоваться

Обновлено: 01.07.2024

У меня есть довольно большой бот для раздора. Он имеет более 1000 строк кода. Когда я исследовал, как это сделать на youtube и здесь, кажется, ничего не работает. Мне было интересно, может ли кто-нибудь объяснить, как правильно использовать початок, возможно, с примерами фотографий. Я могу показать, какой код у меня есть, чтобы помочь вам понять, чего я хочу.

Например, я хочу, чтобы все мои команды mod были в отдельном файле, просто чтобы он был чище и более организованным. Итак, как мне это сделать? Вот пример моего кода:

Я не знаю, как полностью запустить винтик, что еще импортировать, как вызвать файл. Я хорошо знаю java, но я пытаюсь работать над своими python навыками с диссонансом. Заранее благодарю вас!

1 ответ

Я запустил python3 -m pip install -U discord.py , но он установил только discord.py v0.16.x. Как установить новый discord.py rewrite v1.0? Я удалил старый discord.py с помощью pip uninstall discord.py и повторно запустил pip для установки discord.py, только чтобы снова получить версию v0.16.x.

У меня проблема. Я пишу дискорд-бота с Discord.py. Я использую Python 3.8.1 на моем Raspberry Pi 3B. У меня есть функция load и unload в моем основном файле. Они работают так, как должны. Но у меня есть шестеренки, например легкая: ping. Я могу загрузить ping, но команда не работает (в каждом.

Примечание:

Ниже было написано для более старой версии 0.16, в которой не было хорошей документации по винтикам. Новая версия 1.0 имеет хорошую документацию и полностью изменила структуру винтиков. Если вы используете современную версию discord.py , вам следует ознакомиться с официальной документацией .

Вступление

Каждый винтик состоит из двух частей: класса и функции setup . Почти все функции setup выглядят одинаково:

где Cog -класс cog.

Класс cog содержит все наши команды и события в виде методов.

Основные изменения

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

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

Измените все ссылки на bot , чтобы вместо этого ссылаться на self.bot

Удалите все декораторы bot.event . Прослушиватели событий из вашего cog регистрируются только по имени

Есть также некоторые готы:

Пример

Допустим, у вас есть следующий discord.py бот, bot.py в каталоге src :

Затем вы учитываете эту функциональность в cog src/cogs/maincog.py

И ваш файл bot.py будет выглядеть так

Обратите внимание , что для загрузки расширения в cogs/maincog.py мы используем load_extension("cogs.maincog") .

Другие функции

Винтики также позволяют определить некоторые специальные методы. Большинство из них доступны только в discord.py-rewrite и описаны здесь .

__global_check , ранее __check , выполняется перед каждой командой и должен возвращать True , чтобы эта команда продолжалась.

__local_check выполняется только перед командами из этого винтика.

__global_check_once Я считаю, что это похоже на __global_check , за исключением того, что он проверяет только один раз в случае подкоманд. Я не использовал так много.

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

__before_invoke и __after_invoke запускаются до и после каждой команды из этого винтика соответственно.

Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.

Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.

Мы будем использовать целый ряд инструментов, в том числе Discord API, библиотеки Python, и платформы облачных вычислений под названием Repl.it.

Как создать учетную запись Discord Bot

Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.

Вот шаг к созданию учетной записи Discord Bot.

1. Убедитесь, что вы вошли на сайт Discord.

3. Щелкните кнопку «Новое приложение».


4. Дайте приложению имя и нажмите «Создать».


5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить действие, нажав «Yes, do it!»


Оставьте настройки по умолчанию для Public Bot и Require OAuth2 Code Grant.

Ваш бот создан. Следующим шагом будет копирование токена.


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

Вы можете регенерировать токен, если он случайно станет доступен.

Как пригласить вашего бота присоединиться к серверу

Теперь вам нужно подключить своего пользователя-бота к серверу. Для этого вы должны создать для него URL-адрес приглашения.

Перейдите на вкладку «OAuth2». Затем выберите «бот» в разделе «scopes».



После выбора соответствующих разрешений нажмите кнопку «Copy» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.

Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».

Чтобы добавить бота, вашей учетной записи необходимы разрешения «Управление сервером».

Теперь, когда вы создали пользователя-бота, мы начнем писать код Python для бота.

Как написать код для базового бота Discord с помощью библиотеки discord.py

Мы будем использовать библиотеку Python discord.py, чтобы написать код для бота. discord.py - это оболочка API для Discord, которая упрощает создание бота Discord на Python.

Как создать реплику и установить disocrd.py

Вы можете разработать бота на своем локальном компьютере с помощью любого редактора кода. Однако в этом уроке мы будем использовать Repl.it, потому что это упростит всем пользователям следовать его указаниям. Repl.it - ​​это онлайн-среда IDE, которую вы можете использовать в своем веб-браузере.

Создайте новый Repl и выберите «Python» в качестве языка.

Чтобы использовать библиотеку discord.py, просто напишите import discord вверху main.py . Repl.it автоматически установит эту зависимость, когда вы нажмете кнопку «Run».

Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:

Возможно, вам придется использовать pip3 вместо pip .

Если вы используете Windows, вы должны вместо этого использовать следующую строку:

Как настроить события Discord для вашего бота

Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.

Когда вы создали своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env . Просто замените os.getenv('TOKEN') токеном.

.env файлы используются для объявления переменных среды. На Repl.it большинство создаваемых вами файлов видны всем, но .env файлы видны только вам. Другие люди, просматривающие публичный ответ, не смогут увидеть содержимое файла .env .

Поэтому, если вы разрабатываете на Repl.it, включайте в файл .env только личную информацию, такую ​​как токены или ключи.


Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:

Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.

У нас есть код для бота, поэтому теперь нам просто нужно его запустить.

Как запустить бота

Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.

Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:

В других системах:

Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».


Как улучшить бота

Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».

Мы начнем с добавления функции «$inspire».

Как добавить в бота вдохновляющие цитаты

Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote() и обновить код нашего бота, чтобы вызвать функцию.

Вот обновленный код. После кода я объясню новые части.

Функция get_quote() очень проста. Во-первых, она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.

Затем внутри функции мы используем json.loads() для преобразования ответа API в JSON. Методом проб и ошибок я понял, как перевести цитату из JSON в нужный строковый формат. Цитата возвращается из функции в виде строки.

На этом этапе вы можете запустить свой код и попробовать его.

Как добавить грустные слова в бота

Для начала нам нужно создать список Python, содержащий грустные слова, на которые будет отвечать бот.

Добавьте следующую строку после создания переменной client :

Не стесняйтесь добавлять в список больше слов.

Добавьте следующий список после созданного вами списка sad_words :

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

Вот обновленный код:

Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота.

У меня написан довольно большой бот для Discord. В нем более 1000 строк кода. Когда я исследовал, как это сделать, на Youtube и здесь, похоже, ничего не работает. Мне было интересно, может ли кто-нибудь объяснить, как правильно использовать винтик, возможно, с примерами фотографий. Я могу показать, какой у меня код, чтобы помочь вам понять, чего я хочу.

Например, я хочу, чтобы все мои команды мода были в отдельном файле, чтобы он был чище и организованнее. Итак, как мне это сделать? Вот пример моего кода:

Команды мода Я хочу переместить в отдельный файл с помощью шестеренки

Команды мода Я хочу переместить в отдельный файл с помощью шестеренки

Импорт, который у меня есть

Импорт, который у меня есть

Префикс и каталог

Префикс и каталог

Идентификатор вызывающего токена - идентификатор токена указан выше, не показан на фото:

Идентификатор вызывающего токена - идентификатор токена указан выше, не показан на фото

Я не уверен, как полностью запустить винтик, что еще импортировать, как вызвать файл. Я хорошо знаю Java, но пытаюсь улучшить свои навыки работы с Python с помощью Discord.


5 241 67 67 золотых значков 51 51 серебряный знак 120 120 бронзовых знаков 63 1 1 золотой значок 1 1 серебряный значок 5 5 бронзовых знаков

Примечание:

Приведенное ниже было написано для более старой версии 0.16, в которой не было хорошей документации по винтикам. Новая версия 1.0 имеет хорошую документацию и полностью изменила структуру винтиков. Если вы используете современную версию discord.py , вам следует обратиться к официальной документации .

Вступление

Каждый винтик состоит из двух частей: класса и setup функции. Практически все setup функции выглядят одинаково:

где Cog класс винтика.

Класс cog содержит все наши команды и события как методы.

Основные изменения

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

Измените подписи ваших функций, чтобы включить их self в начало, так как все ваши команды и события теперь являются методами класса cog

Измените все ссылки на bot ссылаться на self.bot вместо

Удалите всех bot.event декораторов. Слушатели событий от вашего процессора регистрируются только на имя

Есть также некоторые подводные камни:

Пример

Допустим, у вас есть следующий бот discord.py bot.py в каталоге src :

Затем вы переносите эту функциональность в винтик. src/cogs/maincog.py

И ваш bot.py файл будет выглядеть так

Обратите внимание, что для загрузки расширения cogs/maincog.py мы используем load_extension("cogs.maincog") .

Другие особенности

Cogs также позволяют определять некоторые специальные методы. Большинство из них доступно только в discord.py-rewrite и задокументированы здесь .

__global_check , ранее __check запускался перед каждой командой и должен возвращаться True для продолжения этой команды.

__local_check запускается только перед командами от этого винтика.

__global_check_once Я считаю, что это похоже на, __global_check за исключением того, что он проверяет только один раз в случае подкоманд. Я этим не пользовался.

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

__before_invoke и __after_invoke выполняются до и после каждой команды от этого процессора соответственно.

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

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

Итак, давайте рассмотрим процесс регистрации учетной записи в Discord. Наверняка многим это будет интересно.

  • Перейдите на официальный сайт Discord, а затем нажмите на кнопку «Загрузить для Windows». Установите программу и перейдите к следующим шагам.

Как пользоваться Дискордом: инструкция для новичков

  • После установки, программа автоматически откроется. Для регистрации учетной записи, кликните по надписи «Зарегистрироваться».

Как пользоваться Дискордом: инструкция для новичков

  • Теперь заполните все необходимые поля и кликните по кнопке «Продолжить».

Как пользоваться Дискордом: инструкция для новичков

  • В завершении создания учетной записи, пройдите тест «Я не робот».

Как пользоваться Дискордом: инструкция для новичков

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

Как пользоваться Дискордом: инструкция для новичков

  • Теперь откройте почту и подтвердите процесс регистрации, чтобы убрать это уведомление и получить доступ ко всем функциям.

Как пользоваться Дискордом: инструкция для новичков

  • После перехода по ссылке подтверждения, также пройдите тест «Я не робот».

Как пользоваться Дискордом: инструкция для новичков

  • Готово! Теперь вы являетесь полноценным пользователем мессенджера Discord.

Общение в Дискорде: друзья и серверы

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

Как пользоваться Дискордом: инструкция для новичков

Как пользоваться Дискордом: инструкция для новичков

Итак, с общением в текстовом чате мы разобрались. А что по поводу голосового чата? Сейчас расскажем пошагово, как позвонить в Дискорде.

  • Нажмите на профиль друга, а затем кликните по иконке телефонной трубки, чтобы начать звонок.

Как пользоваться Дискордом: инструкция для новичков

  • После этого дождитесь набора и принятия вызова. Для окончания разговора, нажмите на кнопку «Завершить звонок».

Как пользоваться Дискордом: инструкция для новичков

  • Если во время разговора собеседник не слышит вас, либо вы не слышите собеседника, то нажмите на « icon-cog ».

Как пользоваться Дискордом: инструкция для новичков

Как пользоваться Дискордом: инструкция для новичков

Как пользоваться Дискордом: инструкция для новичков

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