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

Сегодня рассмотрим пример создания простого чат-бота для Discord
на языке Python 3
с использованием популярной библиотеки discord.py
. Данный чат-бот по команде будет присылать стоимость криптовалюты биткоин (Bitcoin), которую будет узнавать с сайта coinmarketcap.com.

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

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

  • 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:_ПУТЬ_ДО_ПАПКИ_PYTHON3ToolsScriptspip3.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
:

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

$ python3 discordpy-chatbot.py

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

!btcprice

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

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

Получение токена и Client ID для вашего бота

Для получения токена и ID бота небходимо создать свое приложение и в разделе General Information скопировать Client ID. А в разделе настроек создать бота и скопировать его токен. Задача не сложная, думаю все с этим справятся.

Собственно пишем бота

Устанавливаем discord.py с помощью pip:

pip install discord

После успешной установки создаем файл bot.py, где будем писать бота. Импортируем все необходимое:

import discord from discord.ext import commands 

Создаем переменную с вашим токеном, про который я писал выше:

TOKEN = 'Ваш токен'
Про токен

Создаем тело бота:

bot = commands.Bot(command_prefix='!') #инициализируем бота с префиксом '!'

Для начала сделаем простенькую команду, аргумент которой бот будет просто пересылать:

 @bot.command(pass_context=True) #разрешаем передавать агрументы async def test(ctx, arg): #создаем асинхронную фунцию бота     await ctx.send(arg) #отправляем обратно аргумент 

И в конце запускаем бота с вашим токеном:

bot.run(TOKEN)

В итоге должно получится вот такое:

Код
 import discord from discord.ext import commands  TOKEN = 'Ваш токен' bot = commands.Bot(command_prefix='!')   @bot.command(pass_context=True)  # разрешаем передавать агрументы async def test(ctx, arg):  # создаем асинхронную фунцию бота     await ctx.send(arg)  # отправляем обратно аргумент   bot.run(TOKEN)  

Теперь необходимо добавить бота на сервер. Сделать это можно с помощью ссылки:

https://discordapp.com/oauth2/authorize?&client_id={Client ID}&scope=bot&permissions={Права, например 66395456}

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

python bot.py

После нескольких секунд, можно заметить его в сети: И наконец-то попробовать отправить команду:

Заключение

Вот так можно легко запустить у себя на сервере бота. Как можно заметить библиотека делает практически все за тебя и остается только добавлять свой функционал с использованием python. В следующий раз я покажу как следить за событиями, подключатся к голосовым каналам (избегая проблем с linux и Windows), использовать роли и права участников и другое. Надеюсь, статья была Вам полезна, удачи!

A modern, easy to use, feature-rich, and async ready API wrapper for Discord written in Python.

  • Modern Pythonic API using async
    and await
    .
  • Proper rate limit handling.
  • 100% coverage of the supported Discord API.
  • Optimised in both speed and memory.

Python 3.5.3 or higher is required

To install the library without full voice support, you can just run the following command:

#
 Linux/OS X
 python3 -m pip install -U discord.py  #
 Windows
 py -3 -m pip install -U discord.py

Otherwise to get voice support you should run the following command:

#
 Linux/OS X
 python3 -m pip install -U discord.py[voice]  #
 Windows
 py -3 -m pip install -U discord.py[voice]

To install the development version, do the following:

$ git clone https://github.com/Rapptz/discord.py $ cd
 discord.py $ python3 -m pip install -U .[voice]
  • PyNaCl (for voice support)

Please note that on Linux installing voice you must install the following packages via your favourite package manager (e.g. apt
, yum
, etc) before running the above commands:

  • libffi-dev (or libffi-devel
    on some systems)
  • python-dev (e.g. python3.6-dev
    for Python 3.6)
import
 discord  class
MyClient
(discord
.Client
):     async
def
on_ready
(self

):         print
('
Logged on as'

, self
.user)      async
def
on_message
(self

, message
):         #
 don't respond to ourselves
if
 message.author ==
self
.user:             return
if
 message.content ==
'
ping'

:             await
 message.channel.send('
pong'

)  client =
 MyClient() client.run('
token'

)
import
 discord from
 discord.ext import
 commands  bot =
 commands.Bot(command_prefix
=
'
>'

)  @bot.command
() async
def
ping
(ctx
):     await
 ctx.send('
pong'

)  bot.run('
token'

)

You can find more examples in the examples directory.

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации