Перейти к содержимому

Как посмотреть код бота в дискорде

  • автор:

Гайд Как создавать Discord бота

  1. Перейдите на страницу https://discord.com/developers/applications
  2. Нажмите на New Application. new aplication.png
  3. Введите название приложения, прочитайте Developer Terms of Service (https://discord.com/developers/docs/policies-and-agreements/developer-terms-of-service) и Developer Policy (https://discord.com/developers/docs/policies-and-agreements/developer-policy) и также, я советую вам ознакомиться с https://discord.com/tos, после всего этого нажмите на кнопку Create.
    create an application.png
  1. Перейдите во вкладку Bot.
    selected app.png
  2. Нажмите Add Bot и подтвердите это действие.
    add bot.png

bot token.png

Второй этап — Запуск нашего бота.
Для того чтобы получить токен бота, нажмите на кнопку View Token.

Далее, напишем первый код!

Для удобства буду использовать библиотеку disnake (discord.py fork), но перед написанием кода мы должны создать файл с расширением .py!
Если создали файл — поздравляю, можем приступать к написанию кода!

Дальше запускаем нашего бота. Можно запускать как через cmd, так и через созданный bat файл.
Готово!

Так-же приведу пример команды !ping, которая будет нам отвечать "Понг!"

Здесь мы используем уже декоратор @bot.command()
@bot.command()
принимает в себя аргументы, а именно — name (имя команды, можно сделать команду на русском языке), description (описание команды, больше подходит для команд косой черты) и usage (пример использования команды).

Теперь по команде !ping бот будет отвечать вам Понг!

UPD 30.04. Сейчас покажу как создавать слеш команды (команды косой черты)!
Для этого нам нужно использовать декоратор @bot.slash_command()
Он принимает все те же аргументы, что и текстовые команды.
Пример команды !ping, но уже на слешах:

Небольшое пояснение про Interaction (кратко inter)
Что вообще такое ваш Interaction и с чем его едят?

Создаём Discord-бота на Python

Для установки discord.py воспользуйтесь пакетным менеджером:

Создаём нашего бота

Перейдите на Developer Portal и нажмите на New application.

Вы создали своё приложение, на странице приложение перейдите в Bot >> Add Bot и создайте своего Discord-бота.

Сохраните токен бота! Дальше он нам понадобится!

Если всё прошло успешно, поздравляю, половина дела сделана ��

Добавление бота на сервер

Теперь можно добавить бота на сервер.

Перейдите в OAuth2 >> URL Generator, в Scopes выбираем Bot и ниже — права бота, копируем сгенерированный URL. Вставляем в браузер, и добавляем на наш сервер.

Эхо-бот

Напишем традиционного эхо-бота, и разберём каждую строчку кода.

Нужные нам импорты.

Вспомогательный словарь config в котором храним токен и префикс команд (далее расскажу зачем нужен префикс команд).

Создаём нашего бота, в аргументе передаём префикс.

Декоратор, предназначенный для обработки событий, подробнее здесь.

Создаём асинхронную функцию, с параметром ctx, представляет из себя сообщение.

Проверка, не является ли автор сообщения нашим Discord-ботом. Дело в том, что если бот отправит сообщение, это будет новым событием, и тогда получается цикл.

Создание музыкального бота с помощью Discord.js

Daria Sidorova

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

Установка discord-бота

Создаем новое приложение на портале разработки discord.

Переходим на портал и нажимаем на “new application”.

Затем вводим название приложения и нажимаем на кнопку “create”.

Затем переходим на вкладку бот и нажимаем на “add bot”.

Бот создан! Теперь можно перейти к добавлению его на сервер.

Добавление бота на сервер

Добавляем созданный бот с помощью генератора OAuth2 URL.

Для этого переходим на страницу OAuth2 и выбираем бота в панели scope.

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

Теперь копируем сгенерированный URL и вставляем его в браузер.

Затем выбираем сервер, на который хотим добавить URL и нажимаем на кнопку “authorize”.

Создание проекта

Переходим к созданию проекта с использованием терминала.

Для начала создаем директорию и переходим в нее, используя две следующие команды:

Затем создаем модули проекта с помощью команды npm init. После введения команды будут заданы несколько вопросов. Ответьте на них и продолжайте.

Создаем два файла, в которых мы будем работать.

Теперь откройте проект в текстовом редакторе. Я использую VS Code и открываю его с помощью следующей команды:

Основы Discord js

Прежде чем начать, нужно установить несколько зависимостей.

После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.

Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.

Это все, что нужно выполнить в файле config.json. Приступим к написанию кода javascript.

Сначала импортируем все зависимости.

Затем с помощью токена создаем клиента и логин.

Добавляем несколько базовых listeners, выполняющих метод console.log при запуске.

Теперь можно начать работу с ботом с помощью команды node. Бот должен быть online в discord и в консоль выведется“Ready!”

Чтение сообщений

Бот находится на сервере и может выходить online. Теперь можно начать читать сообщения в чате и отвечать на них.

Для чтения сообщений нужно написать лишь одну простую функцию.

Создаем listener для события message, получаем сообщение и сохраняем его в объект message.

Проверяем: если сообщение пришло от бота, то игнорируем его.

В этой строке проверяется, является ли автором сообщения бот. Сообщение возвращается, если это так.

Затем проверяем, начинается ли сообщение с ранее определенного префикса. Сообщение возвращается, если нет.

После этого проверяем, какую команду нужно запустить. Это можно выполнить с помощью простых операторов if.

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

Узнав, какие команды нужно запустить, можно перейти к их реализации.

Добавление песен

Начнем с добавления команды play. Для этого понадобится песня и гильдия (гильдия представляет собой изолированную коллекцию пользователей и каналов и часто упоминается в качестве сервера). Также понадобится ранее установленная библиотека ytdl.

Для начала создаем map с названием очереди, в котором будут сохранены все песни, введенные в чат.

Затем создаем функцию async под названием execute и проверяем, находится ли пользователь в голосовом чате, и есть ли у бота соответствующее разрешение. Если нет, то пишем сообщение об ошибке и возвращаем.

Переходим к получению информации о песне и сохранении ее в объект song. Для этого используем библиотеку ytdl, которая получает информацию о песне по ссылке на youtube.

Необходимая информация сохраняется в объект song.

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

В этом фрагменте мы проверяем, является ли serverQueue пустым. Если нет добавляем туда песню.

Если serverQueue имеет значение null, создаем контракт.

В этом блоке кода создается контракт, а песня добавляется в массив songs.

Затем присоединяемся к голосовому чату пользователя и вызываем функцию play(), которую затем реализуем.

Проигрывание песен

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

Сначала создаем функцию play, которая обладает двумя параметрами (гильдия и песня, которую нужно проиграть) и проверяет, является ли объект song пустым. Если да, то покидаем голосовой канал и удаляем очередь.

Затем начинаем проигрывать песню с помощью функции playStream() и URL-адреса песни.

В этом фрагменте мы создаем stream и передаем его URL-адресу песни. Также добавляем два listeners, которые обрабатывают события end и error.

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

Теперь можно проиграть песню, введя !play URL в чат.

Пропуск песен

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

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

Остановка песен

Функция stop() похожа на skip(), за исключением того, что массив songs очищается, из-за чего бот удаляет очередь и покидает голосовой чат.

Исходный код для index.js:

Полный исходный код для музыкального бота:

Заключение

У вас все получилось! Надеюсь, эта статья помогла вам разобраться в API Discord и создании с его помощью простого бота.

Бот для Discord API на Python (discord.py) с командами

Бот для Discord API на Python (discord.py) с командами

Сегодня разберём создание бота для популярной соцсети Discord. Эта платформа предназначена для общения посредством голосовых чатов и сообщений и чем-то схожа с телеграмом.

Недавно я столкнулся с задачей написания подобного бота. Поскольку на просторах интернета, нет внятных гайдов, решил сделать свой. Про официальную документацию можно не говорить, там чёрт ногу сломит. В YouTube охватывают лишь самое начало. Я постараюсь более детально погрузиться в discord.py и работу с Discord API.

Структура проекта и установка библиотек

  1. Компьютер или ноутбук
  2. Редактор кода (Notepad++ тоже подойдет).
  3. Python версии 3.9 и выше.
  4. Соединение с интернетом

Установка для Windows:

Установка для MacOS:

Структура максимально простая, все модули для обработки команд будут храниться в директории cogs. Остальное можно структурировать как угодно.

Создание бота и получение токена

Заходим на этот сайт https://discord.com/developers/docs/intro и нажимаем на «applications». После проходим авторизацию (видео инструкция тут ).

Создаем новое приложение:

Дальше переходим во вкладку Bot и создаем бота. Тут вы сможет создать и скопировать токен:

После всех манипуляций выбираем уровень доступа для бота — administrator.

Как добавить бота на сервер

Переходим во вкладку OAuth2 General, ставим такие настройки и сохраняем:

Потом переходим в URL General, выбираем те же самые настройки и копируем ссылку ниже:

Переходим по ссылке и выбираем на какой сервер хотим добавить бота. Добавлять можно только на тот сервер, который вы администрируете (у вас есть права администратора на нем). Дальше следуем иструкциям Discord.

Разработка бота

Main.py

Подробнее остановимся на commands и config .

В commands будет инициализироваться и храниться бот. В дальнейшем через этот объект класса будем обращаться к методам.

Config – там будут храниться все глобальные переменные — токены, ID каналов, ID ролей и т д.

discord_intents – мы наделяем бота полными правами доступа (когда будем добавлять его, то он запросит разрешение для управления)

bot – тут собирается бот. Аргументы: command_prefix — на какой спец символ будет откликаться бот; intents — права доступа.

Пробежимся по функциям.

On_ready – срабатывает при загрузке бота. bot.change_presence — тут мы устанавливаем активность (Discord может показывать во что вы сейчас играете).

Дальше подгружаются все винтики. Почему пакеты в Discord называют винтики? Потому что в официальной документации разработчики назвали именно так;)

Load и unload — позволяют отключить и подключить винтики. Загрузка происходит с помощью обращения к методам объекта бота.

Reload — по сути вызывает по очереди unload и load.

Цикл for перебирает все файлы и загружает их в первый раз.

Ну и в конце мы запускаем бота, передавая в него токен.

Config.py

Этот файл будет хранить в себе только служебные переменные — токены, ID ролей, ID серверов.

Директория cogs

Everyone.py

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

Вероятно, вы спросите что это за класс. Everyone наследуется от commands.Cog . Винтики работают за счёт объектов — когда мы запускаем бота, то перебираем все объекты и собираем всё вместе.

Для отслеживания команд мы используем декоратор commands.command() . Для корректной работы при создании класса мы передаём в него нашего бота. Дальше описываем в методах логику.

Функция info будет высылать пользователю embed (сообщение) с указанием доступных команд. Внутрь функции передаем ctx (полное его название context) — это полученное сообщение.

Мы создаем объект, в который передаем: заголовок, свет линии с краю, подпись автора и ссылку на изображение. Дальше, обращаясь к методу add_field , добавляем строки с именем и значением — можно их назвать заголовок и текст.

Метод set_footer добавляет маленькую подпись в конце сообщения. В завершение мы обращаемся к await ctx.channel.purge(limit=1) , что удаляет одно сообщение (можно указать любое количество в limit). Await позволяет нам дождаться окончания асинхронного метода.

После этого отправляем сообщение с помощью await ctx.send(embed=embed) , передавая внутрь сформированное сообщение. Или можно просто отправить текст await ctx.send(text=”your message”) .

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

Удобный конструктор embed, который сразу выдает python код, находится тут .

Moder.py

Пройдёмся по функциям сверху вниз.

@commands.has_any_role(config.admin_id_role) — это новый декоратор, он проверяет есть ли у пользователя роль (нужен ID роли). Также можно указывать перечень ролей в массиве (для этого распаковывайте массив).

Mute принимает в себя само сообщение, пользователя (пример @user), и причину. Первым делом мы заготавливаем объект чата, в который будем присылать действия администратора. Потом сам сервер (в документации discord.py сервер называется гильдия). И в конце получаем роль, которую будем давать пользователю.

Когда всё готово, собираем сообщение-уведомление (не забывайте пользоваться конструктором embed тут ). Дальше к объекту пользователя добавляем роль. И отправляем сообщение в логи и в чат, откуда пришла команда. Не забываем удалять отправленную команду.

Unmute зеркальна с функций mute, только для пользователя мы используем метод remove role .

Ban — выгоняет пользователя с сервера и добавляет его в черный список (в дальнейшем его не смогут пригласить на сервер пока он в ЧС).

Для работы в переменных нам потребуется только канал для системы логов. Следом проходим процедуру сборки красивого сообщения и отправляем его как в mute.

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

Kick — с этой функций дела обстоят намного проще, так как у пользователя есть метод для изгнания user.kick .

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

ctx.channel.purge(limit=int(amount)) отвечает за удаление сообщений, в limit передаем полученное значение.

Заключение

Библиотека discord.py не проста в понимании и требует много времени на разбор. Но лучших аналогов для Python не найти из-за обширности API.

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

Для дальнейшего развития советую попытаться добавить в бота интеграцию с базой данных. Например есть хорошая БД MongoDB — на ней можно простроить мощную многоуровневую систему администрирования сервера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Car Rental HPN Inside the Terminal