Как сделать кулдаун на команду discord py

Обновлено: 10.07.2024

Гайд для GitHub по написанию бота c помощью discord.py

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

Что нам потребуется?:

  • Стабильное интернет соединение
  • Неплохие знания Питона
  • Умение "гуглить" и находить нужную информацию
  • Среда для написания кода

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

Создание Application'a:

После создания Application'а мы должны перейти во вкладку Bot, а затем нажать на кнопку Add Bot.

Если у вас появилось зеленая надпись по типу: A wild bot has appeared!, значит вы всё сделали правильно и бот у вас уже создан.

Подключаем нашего бота к серверу:

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

Нужно получить Client_ID вашего бота. Для этого мы переходим во вкладку General Information и копируем его нажав на кнопку Copy.

Копируем эту ссылку ==> https://discordapp.com/oauth2/authorize?&client_id=(тут)&scope=bot&permissions=8 . В эту ссылку вместо слова "тут" вставляем наш Client_ID. Скобки естественно убираем. Доп. информация: В нашей ссылке bot&permissions=8 означает что наш permissions integer равен 8. Проще говоря, это число отвечает за то, какие права будут выданы боту при подключении. Этот код можно узнать во вкладке Bot (в которой мы создавали бота). Пролистав вниз, вы сможете сами выбрать нужные вам права, но я советую оставить 8, так как если вы будете сами выбирать права, могут произойти казусные ситуации при работе с ботом.

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

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

Ну вот мы и готовы начать писать код для нашего прекрасного бота. Если вы знаете Python на ОЧЕНЬ низком уровне, я советую воздержаться от создания ботов и заняться чем нибудь более простым.

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

Затем если у вас не установлена библиотека discord.py, вам нужно её устновить. Для этого переходим в командную строку и пишем: pip install discord.py
Внимание, для установки библиотек требуется pip, если он у вас не установлен, то гугл в помощь ^_^

После успешной установки библиотеки, переходим в вашу любимую среду разработки, в моём случае это PyCharm. Затем создаем новый файл Python файл с названием "bot" (такое название не даст вам запутаться) и расширением .py и сразу сохраняем его в нашей папке с проектом.

Первые строчки кода: Начинаем писать скрипт для нашего бота.

Для начала подключаем (импортируем) наши библиотеки:

(можем запустить наш скрипт для проверки работоспособности библиотеки)

Создаем еще один файлик .py названием config, для хранения в нём опасных данных. Почему мы не можем просто создать переменные с этими данными? Всё очень просто. Это самый простой способ защитить себя от злоумышленников. Если кто-то каким-то образом получит ваш код, то не сможет управлять вашим ботом. Все наши токены будут хранится в отдельном файлике.

В файле config.py создаем словарь, к которому мы будем обращаться при работе в ботом:

Сохраняем файл config.py и возвращаемся обратно к файлу bot.py

Импортируем наш файлик config.py:

Написание "тела" для бота и первый запуск:

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

  • Переменная bot - это "тело" нашего бота. Ему мы присваиваем значение commands.Bot с определёнными аргументами.
  • command_prefix=settings['prefix'] - это аргумент, в который мы вписываем значение нашего префикса. settings['prefix'] означает, кто мы обращаемся к словарю settings (который мы импортировали из файла config.py) и обращаемся к ключу prefix, в котором вписано нужное нам значение.

Затем мы можем проверить, запускается наш бот или нет. В библиотеке discord.py есть огромное количество разных ивентов (Event). Одним из них мы сейчас воспользуемся:

@bot.event - говорит нам о том, что ниже будет прописана функция, являющаяся ивентом.

async def on_ready(): - Асинхронная функция (Очень важно все функции создавать асинхронными, так как бот должен выполнять несколько функций в одно время). Ей присваивается значение on_ready, данная функция срабатывает когда бот полностью подключен и готов к работе. Аргументов у этой функции нет.

Создание первой команды:

Настало время создать первую команду для нашего бота:

Можем запускать нашего бота и проверять команду!

Давайте создадим еще одну команду, но уже с использованием посторонней библиотеки. Я возьму библиотеку random. Для начала её нужно подключить. Переходим в cmd (командную строку) и пишем pip install random, после чего начнется скачка библиотеки. Затем в самом начале кода пишем:

Я создал очень простую команду, которая умеет генерировать случайное число от 0 до числа, которого мы зададим сами:

Точно так-же говорим о том что ниже будет команда с помощью строчки @bot.command. Напоиманаю, что bot - это перемеенная, которую мы создали в самом начале. Это наше "тело" для бота. Дольше создаем асинхронную функцию randoms. Почему не random? Потому что название функции не может совпадать с названием библиотеки. Дальше мы передаем 2 аргумеента: ctx и arg. В arg поместиться наше число, которое мы будем задавать. Дальше я использую try, вы спросите зачем? Всё просто. Если мы случайно укажем вместо числа какой-то другой символ, бот в чате выдаст ошибку. Затем мы создаем переменную a - это наше сгенерированное число. Как генерировать числа с помощью библиотеки random вы сможете найти выше по ссылке. Дальше с помощью await ctx.send мы выводим наше число.

Есть еще очень классная "фича" в библиотеке discord.py как стили embed. Их обычно используют для красивого вывода какой либо информации на экран. Например команды help обычно делают с использованием этого стиля. Я создал небольшую и довольно простую функцию, которая называется menu. В неё мы например можем записать каждую команду в боте и указать что она делает. Вот что у меня получилось:

Некоторые строчки я буду пропускать, потому что я их свойства и значения я объяснял выше. В любом случае если вы что-то не поняли я оставлял ссылку на доп. информацию в самом конце гайда. Для начала мы задаем переменную embed, в которой мы будем хранить сам "embed", а так-же его значения. Color - цвет, title - текст, который будет являться "названием". В них мы записываем нужны нам значения. Кстати в color мы так-же можем записывать цвет словами, например "yellow", "white" и так далее. Дальше мы прописываем add_field, эта штука добавляет нам новую "строку" для "embed". В значение name мы записываем имя строки, в value - значение ну и в inline указываем True или False, она меняет расположение строки. Советую поиграться и выбрать самый оптимальный для вас вариант. Последней строчкой в значении embed мы просто указываем переменную, которую мы задали в начале функции.

Есть еще несколько вещей, которые я хотел бы разобрать, но это я сделаю в будущем

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



Как создать своего бота в Дискорде

Что лучше использовать для разработки

Нужно выбрать программную платформу, чтобы создавать собственного бота. Всего у нас есть два варианта: Node.js и всеми полюбившийся Python. Чем они отличаются, вы спросите?

Node.js

Да все очень просто, первый вариант — это среда разработки, использующая JavaScript. Разработчики все оптимизировали, поэтому Node.js позволяет взаимодействовать с устройствами ввода и вывода через свой API. Кроме того, допускается подключать разные языки программирования.

Python

А что второй вариант? Здесь все немного иначе. Python — это среда, использующая высокоуровневую динамическую типизацию. В основном ее используют именно для написания скриптов и создания бота.

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

Используем Python

Обновление Python

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

Установка библиотек

Дальнейшие инструкции такие:

Создаем словарь

Теперь нам нужно обучить своего бота. Сделать это просто — пишем словарь:

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

IDLE Python

Далее нужно посетить сайт разработчиков Discord Developer Portal, просто вбейте наименование в поисковике:

Сохранение кода

Создаем каркас

Теперь нам нужно создать каркас для Discord bot. Здесь придется немного потрудиться, так как будем использовать команды в большом количестве:

Нужно добавить основной код:

async def hello(ctx):

Далее идет функция и выглядит она следующим образом:

Добавление основного кода

Запуск

Ну вот и мы подошли к тому, чтобы проверить работоспособность. После того как свой бот создан, нам нужно снова открыть файл IDLE. Далее прописываем такую команду:

Путь через командную строку

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

Откройте Дискорд с компьютера или телефона, чтобы проверить, есть ли бот в сети. Если вы наблюдаете отсутствие помощника, то проверьте отступы, ведь при программировании в Python нужно строго их соблюдать. Это поможет не стать заложником ошибок, таких как Syntax Error.

Используем библиотеку Node.js и JavaScript

Теперь мы расскажем, как осуществляется настройка бота в php Node.js:

Откройте последний файл и пропишите код:

Прописывание данных бота

Префикс можно использовать любой, а токен вы найдете на портале Discord Developer.

Основной код

Файл с ролями comms

Запуск

Чтобы запустить бота нам нужна командная строка:

Запуск бота в КС

Заключение

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

Простой чат-бот для Discord на Python

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

Что потребуется для из средств разработки:

  • Python 3.4.2+ (в Ubuntu 16.04 в коробке сразу идет Python 3.5.2)
  • Pip3 (менеджер пакетов для установки библиотек, в версиях Python 3.4+ входи в коробочную версию)
  • Любой текстовый редактор

В случае, если не установлен pip3, то установка в Ubuntu выглядит так:

$ sudo apt-get install python3-pip

Далее ставим главную библиотеку discord.py — обертка над API Discord для Python 3:

$ pip3 install discord.py

В Windows команда для терминала cmd выглядит также. Но если не настроены пути, то будет появляться ошибка. Тогда можно написать полный путь до pip3 примерно так:

C:\_ПУТЬ_ДО_ПАПКИ_PYTHON3\Tools\Scripts\pip3.exe install discord.py

Уже почти все сделано, осталось написать код. Создаем пустой файл с названием, например, discordpy-chatbot.py. Открываем любым текстовым редактором и вставляем туда код. На Github я привел программный код нашего чат-бота. Вот ссылка, ниже gist:

Осталось изменить значение переменной DISCORD_BOT_TOKEN, в которую необходимо сохранить токен вашего Discord-приложения (чат-бота). Чтобы узнать свой токен, необходимо перейти по адресу https://discordapp.com/developers/applications/me, выбрать в списке необходимый чат-бот или создать новый, и на странице настроек приложения в блоке "Bot" нажать на ссылку "click to reveal", где раскроется токен вашего приложения. Его и нужно занести в переменную DISCORD_BOT_TOKEN:

discord_bot_token

Все готово. Сохраняем файл со скриптом и запускаем чат-бот:

$ python3 discordpy-chatbot.py

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

!btcprice

на что бот вам любезно ответит текущей ценой за 1 биткоин:

discrod_btcprice

Python discord, discord.py, discordapp, howto, python. permalink. 49 776

20 thoughts on “ Простой чат-бот для Discord на Python ”

Я может чего-то не понимаю, но с какой стати мне IDLE пишет, что в модуле discord нет атрибута Client

Столкнулся с такой же ситуацией, удалось решить путем замены python 3.7 на python 3.6

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

Достаточно запустить скрипт бота непосредственно на сервере, например, как описано в статье. В самом простом случае на сервере необходимо установить Python 3, pip3, библиотеку discord.py и просто запустить скрипт в фоновом режиме. Либо можно воспользоваться сервисами, например, Heroku, которые позволяют очень просто запускать пользовательские скрипты на своих серверах.

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

В данном статье, я покажу как можно создать Discord бота. Discord это мессенджер для голосового, видео и текстового общения для любых сообществ [Дискорд Что Это И Как Пользоваться? — Обзор Программы Discord]. А теперь, давайте создадим простого бота, и сделаем ему команду.

Создадим простой бот на сайте Discord Developer Portal — API Docs for Bots and Developers. Потом верхнем правом углу нажимаем на кнопку New Application:

Screenshot 2021-06-09 at 19-03-59 Discord Developer Portal — API Docs for Bots and Developers.jpg

Дальше, Discord попросит вас название вашего бота, пример, назовём его MyBot.​

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

Screenshot 2021-06-09 at 19-11-49 Discord Developer Portal — API Docs for Bots and Developers.jpg

Нажимаем на кнопку Copy, потом создайте простой документ txt, и закиньте его, я назову его token.txt, через пайтон файл, мы позже будем подключаться к нему:

Снимок экрана от 2021-06-09 19-15-26.jpg

Все бота мы создали, теперь мы должны кинуть на наш сервак, как это сделать? Для этого вы должны зайти на сайт: [ Discord - A New Way to Chat with Friends & Communities ] и изменить YOUR_ID на Application ID:

'
Заходим опять в Developer discord нажимаем на кнопку OAuth2 копирум Client ID и ставляете место YOUR_ID на CLIENT ID.

Вот и всё! После чего, Discord попросит на какой сервер, добавить вашего бота:

Screenshot 2021-06-09 at 19-30-26 Discord - A New Way to Chat with Friends Communities.jpg

Допустим он у меня будет называть My Server.

С созданием бота мы разобрались! Теперь, напишем код на пайтоне, и сделаем команду для бота, которые будет приветствовать. Ну для этого вы должны установить библиотеку discord:

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

Команды так же просты в использовании, как и сама программа: просто введите правильный код в окно чата сервера, добавьте любой необходимый префикс — и готово!

Список команд в чате Discord

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

/giphy [текст] — ищет на сайте Giphy анимированный GIF.

/tenor [текст] — ищет на сайте Tenor анимированный GIF.

Команды модерации и поиска MEE6 Bot

MEE6 — популярный робот-модератор чата Discord. Для многих пользователей, которые присоединятся к своему первому серверу Discord или голосовому чату, MEE6 станет первым дружелюбным лицом, с которым они столкнутся.

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

Кроме того, панель управления MEE6 позволяет пользователям программировать свои собственные команды для ботов.

Полный гайд по командам Discord

Команды модерации бота MEE6

MEE6 предлагает набор основных команд модерации чата:

!ban [пользователь] [необязательная причина] — Используется для изгнания одного участника с сервера Discord. Не то, чтобы его можно было взять, но часто необходимое оружие в арсенале любого модератора.

!tempban [участник] [продолжительность] [необязательная причина] — используется для изгнания одного участника с сервера Discord на ограниченный период времени.

!mute [участник] [необязательная причина] — Используется для отключения звука участника, чтобы он не мог участвовать в различных каналах.

!tempmute [участник] [продолжительность] [необязательная причина] — используется для отключения звука участника, чтобы он не мог участвовать в различных каналах в течение ограниченного периода времени.

!unmute [member] — используется для отмены команды отключения звука.

!clear [необязательный член] [необязательный счетчик] — используется для очистки вкладов в определенном канале.

!infractions [member] — Используется, чтобы показать, сколько нарушений имеет конкретный участник против них.

! kick [участник] [необязательная причина] — Используется для удаления пользователя с сервера. Более-менее похоже на бан, но они смогут присоединиться позже.

! slowmode [необязательный тайм-аут] [необязательно выключен] — Используется для включения или выключения медленного режима на определенном канале.

!warn [участник] [необязательная причина] — Используется для предупреждения пользователя о том, что он нарушает правила и вызывает нарушение.

Команды поиска ботов MEE6

Мало того, MEE6 предлагает набор потрясающих команд поиска, позволяющих извлекать информацию обо всем, от покемонов до стримеров Twitch, или вставлять видео и изображения YouTube. Вот полный список команд.

!anime [поисковый запрос] — Используется для поиска аниме на Kitsu.

!imgur [поисковый запрос] — Используется для поиска мемов на Imgur.

!manga [поисковый запрос] — Используется для поиска манги на Kitsu.

!pokemon [поисковый запрос ] — Используется для поиска покемонов в Pokeapi Pokedex.

!twitch [поисковый запрос] — Используется для поиска канала на Twitch.

!urban [поисковый запрос] — используется для поиска сленговых словечек в Городском словаре.

!youtube [поисковый запрос] — используется для поиска видео на YouTube.

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

Программировать собственные команды MEE6 поразительно просто. Он не требует знания Python или синтаксиса и встроен в вашу панель управления MEE6. Но на всякий случай, если вы никогда не делали этого раньше, я здесь, чтобы дать вам быстрый урок

Команды модерации и новизны Dyno Bot в Discord

Если MEE6 — самый любимый модератор чата в Discord, то Dyno вероятно самый полезный из них. Это, наверное, и самое интересное.

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

Команды модерации Dyno Bot

Бот Dyno Discord предлагает самый полный набор команд модерации на платформе, позволяющий вам контролировать каналы вашего сервера — даже с самыми коварными рапскальонами.

?modlogs [пользователь] — используется для получения списка журналов модератора для указанного пользователя.

?note [пользователь] [текст] — используется для создания заметки о конкретном пользователе.

?notes [пользователь] — используется для просмотра заметок, созданных о конкретном пользователе.

?clearnotes [пользователь] — используется для удаления всех заметок, созданных о конкретном пользователе.

?warn [пользователь] [причина] — используется, чтобы предупредить участника о том, что его поведение может нарушить правила сервера.

?warnings [пользователь] — используется для просмотра предупреждений, полученных указанным участником. Он сообщит вам, имеете ли вы дело с преступником, совершившим впервые, или с опытным преступником.

?mute [пользователь] [ограничение] [причина] — используется, чтобы запретить пользователю участвовать в различных каналах сервера.

?unmute [пользователь] [причина] — используется для повторного разрешения пользователю участвовать в различных каналах сервера.

?undeafen [пользователь] — используется для снятия защиты с пользователя.

?kick [пользователь] [причина] — используется для удаления пользователя с сервера.

?ban [пользователь] [лимит] [причина] — Используется для блокировки участника сервера, возможность ограничения на определенный период.

?unban [пользователь или идентификатор] [причина] — используется для разблокировки участника сервера.

?addmod [роль ] — Добавить пользователя в роль модератора.

?members [роль] — используется для перечисления до 90 участников с указанной ролью.

Команды Dyno Bot для новинок

Однако бот Dyno Discord помогает не только модерировать ваш сервер. Dyno — это тоже очень весело! Вот полный список новых команд Dyno:

?cat — генерирует случайное изображение очаровательной кошки из Интернета, которое Dyno немедленно публикует на канале.

?country [код страны] — используется для получения статистики по конкретной стране, включая население, столицу и валюту.

?dadjoke — используется для извлечения случайной отцовской шутки, которая автоматически публикуется в канале. Гарантированно будет настолько же увлекательным, насколько и несмешным!

?dog — генерирует случайное изображение очаровательной собаки из Интернета, которое Dyno немедленно публикует на канале.

?flip — Используется для подбрасывания монеты между орлом и решкой.

?github [имя репозитория] — используется для генерации информации о конкретном репозитории Github.

?itunes [название песни] — используется для получения основной информации о песне, включая имя исполнителя и альбом, из которого она принадлежит.

?norris — используется для генерации случайного факта о Чаке Норрисе. 100% правда в стиле техасских рейнджеров.

?pokemon [имя] — используется для получения основной информации о покемоне, включая способности, тип, вес и рост.

?pug — Создает случайное очаровательное изображение мопса из Интернета, которое Dyno немедленно публикует на канале.

?roll [размер кубика, количество сторон или количество кубиков] — используется для броска кубика или количества кубиков в канале.

?rps [выбор] — Используется для игры в камень-ножницы-бумага с ботом Dyno.

?space — используется для получения информации о Международной космической станции.

Разные команды Dyno Bot

Но это еще не все. Бот Dyno также предлагает ряд других команд, столь же простых, сколь и случайных:

?avatar [пользователь] — используется для создания увеличенной версии изображения аватара пользователя в чате. Хотите знать, как кто-то действительно выглядит? Это команда для вас!

?color [шестнадцатеричное число] — используется для поиска информации о конкретном шестнадцатеричном числе цвета.

?dynoav — Используется для немедленного создания аватара, похожего на Dynoav.

?randomcolor — Генератор случайного шестнадцатеричного цвета, который ваши коллеги-покровители могут наблюдать в канале.

?remindme 09:13:52 PM [остаток] — Создает напоминание в определенном канале.

?whois [упоминание пользователя] — извлекает информацию о конкретном пользователе на сервере, в том числе о том, как долго он был участником, когда была создана его учетная запись и есть ли у него какие-либо роли на сервере.

?distance [координаты] [координаты] — используется для вычисления расстояния между двумя наборами координат.

?Дискриминатор [4 члена] — создает список пользователей, у которых есть определенный номер дискриминатора Discord.

?membercount — генерирует общее количество пользователей на определенном сервере.

?serverinfo — Получает общую информацию о сервере, включая номера участников, количество каналов и текущее количество людей в сети и активных.

•emotes — Создает полный список всех смайликов и эмоций для конкретного сервера.

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