Рубрики
Без рубрики

Создание бота разногласий с Python и reft.it

В этом руководстве мы будем использовать reft.it и python, чтобы построить раздорный чатбот. Если вы читаете эту тут … Теги от новичков, Python, Reclit, учебник.

В этом руководстве мы будем использовать Repl.it и Python, чтобы построить раздорный чатбот. Если вы читаете этот урок, вы, вероятно, по крайней мере слышали о раздоре и, вероятно, имеют существующий счет. Если нет, Discord – это приложение VoIP и чата, которое предназначено для замены Skype для геймеров. Бот, который мы создаем в этом руководстве, смогут присоединиться к серверу раздора и отвечать на сообщения, отправленные людьми.

Если вы предпочитаете JavaScript, следующая глава – это тот же учебник, используя NODEJS вместо Python.

Вам будет проще следовать, если у вас есть некоторые знания Python и использовали DiscoD или подобное приложение, такие как Skype или Telegram ранее. Мы не будем охватывать самые основы Python, но мы подробно объясним каждую строку кода, поэтому, если у вас есть какой-либо опыт работы с программированием, вы должны быть в состоянии следовать.

Обзор и требования

Мы будем делать все наше кодирование через reft.it Web IDE и разместив наш бот с refl.it, поэтому вам не нужно будет устанавливать какое-либо дополнительное программное обеспечение на вашем компьютере. Для этого учебника вам нужно будет создать Раздор учетная запись (Если у вас уже есть один, вы можете пропустить это). Есть инструкции для того, как это сделать в следующем разделе.

В этом руководстве мы будем охватывать:

  • Создание приложения и пользователя бота в вашей учетной записи
  • Создание сервера на раздоре
  • Добавив свой бот на ваш дискордер

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

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

Вы можете подписаться на бесплатный аккаунт на Страница Rescord Register И можете скачать один из их настольных или мобильных приложений от Главная страница раздора . Вы также можете использовать раздор в браузере.

После того, как у вас есть учетная запись, вы захотите создать приложение раздора. Посетить Страница разработчика разногласия и нажмите кнопку «Новое приложение», как на изображении ниже.

Заполните имя для своего бота и выберите «Создать».

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

Вы также можете переименовать приложение и предоставить описание для вашего бота в этот момент и нажать «Сохранить изменения».

Теперь вы создали приложение раздора. Следующим шагом является добавление бота в это приложение, поэтому отправляйтесь на вкладку «BOT», используя меню слева и нажмите кнопку «Добавить бот», как указано ниже. Нажмите «Да, сделайте это», когда iscord спрашивает, вы уверены ли вы принести новый бот в жизнь.

Последнее, что нам нужно от нашего бота, это токен. Любой, кто имеет токен бота, может доказать, что они владеют ботом, поэтому вам нужно быть осторожным, чтобы не поделиться этим с кем угодно. Вы можете получить токен, нажав «Нажмите, чтобы показать токен», или скопируйте его в буфер обмена, не видя его, нажав «копию».

Обратите внимание на ваш токен или скопируйте его в буфер обмена, так как нам нужно будет добавить его в наш код в ближайшее время.

Создание сервера раздора

Если у вас нет сервера DiscoD, чтобы добавить свой бот, вы можете создать один, вы можете создать один, либо открывая приложение Desktop Rescord, которое вы загрузите ранее или возвращаетесь на домашнюю страницу Rossand в вашем браузере. Нажмите значок «+», указанный восклицательным знаком, как показано ниже, для создания сервера.

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

Добавив свой раздорный бот на ваш дискор

Наш Bot Rescord Bot по-прежнему просто оболочкой на этом этапе, поскольку мы не написали ни один код, чтобы позволить ему ничего делать, но пойдем вперед и добавить его на наш сервер раздора. Чтобы добавить бот на свой сервер, вам понадобится идентификатор клиента на странице «Общая информация», на которой мы рассмотрели ранее, когда мы создали наше REFLBOTAPLICAL (т. Е. Идентификатор клиента, а не секретный токен бота).

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

https://discordapp.com/api/oauth2/authorize?scope=bot&client_id=746269162917331028

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

Выберите сервер, который мы создали на шаге до этого и нажмите кнопку «Авторизация». После завершения CAPTCHA вы должны получить уведомление о несопоре в приложении, рассказывая вам, что ваш бот присоединился к вашему серверу.

Теперь мы можем добраться до забавной части построения мозга для нашего бота!

Создание замены и установки наших зависимостей

Первое, что нам нужно сделать, это создать Python REPL, чтобы написать код для нашего бота раздора. Над repl.it Создайте новую замену, выбирая «Python» как ваш язык.

Нам не нужно изобретать колесо, так как уже есть отличная обертка Python для API раздора на Github , что делает его намного быстрее, чтобы создать базовый бот Python Roscord. Использовать библиотеку, мы можем просто написать Импорт раздор На вершине main.py Отказ REPL.IT будет справиться с установкой этой зависимости при нажатии кнопки «RUN».

Наш бот почти готов к работе – но нам все еще нужно подключить наш секретный токен. Это разрешит нашему коду для контроля нашего бота.

Настройка авторизации для нашего бота

По умолчанию REPL.IT код является публичным. Это здорово, так как он поощряет сотрудничество и обучение, но мы должны быть осторожны, чтобы не поделиться нашим секретным токеном бота (что дает всем, кто имеет доступ к нему полный контроль над нашим ботом).

Охватить проблему необходимости дать наше Код Доступ к токену, позволяя другим доступа к нашему коду, но не Наш токен, мы будем использовать Переменные среды Отказ На нормальной машине мы установили их непосредственно в нашей операционной системе, но используя reft.it у нас нет доступа к этому. Reft.it позволяет нам установить переменные секретной среды через специальные .env файл.

Во-первых, нам нужно создать новый файл, называемый именно .env.env. . Выберите «Добавить файл» на левой панели, как показано на рисунке ниже, и назовите этот файл .env.env. . Важно не оставлять Отказ с начала.

Откройте этот новый файл и добавьте переменную для определения секретного токена вашего бота (обратите внимание, что это второй токен, который мы получили при настройке бота – отличается от идентификатора клиента, который мы использовали для добавления нашего бота на наш сервер). Это должно выглядеть что-то вроде:

DISCORD_BOT_SECRET=NDcUN5T32zcTjMYOM0Y1MTUy.Dk7JBw.ihrTSAO1GKHZSonqvuhtwta16WU

Вам нужно:

  • Заменить токен (после того, как = знак) с токеном, который раздор дал вам при создании собственного бота.
  • Будьте осторожны о Интервал Отказ В отличие от в Python, если вы поместите пространство по обе стороны от = В вашем .env Файл, эти пробелы будут частью имена переменной или значения, поэтому убедитесь, что у вас нет пробелов вокруг = или в конце линии.
  • Запустите код еще раз. Иногда вам нужно будет обновить всю страницу, чтобы убедиться, что ваши переменные среды успешно загружены.

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

import discord
import os

client = discord.Client()

@client.event
async def on_ready():
    print("I'm in")
    print(client.user)

@client.event
async def on_message(message):
    if message.author != client.user:
        await message.channel.send(message.content[::-1])

token = os.environ.get("DISCORD_BOT_SECRET")
client.run(token)

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

  • Линии 1-2 Импортируйте библиотеку «Разрушить», которую мы установили ранее, и встроенная библиотека операционной системы, которую нам нужно получить доступ к секретному жетону нашего бота.
  • В линия 4 мы создаем раздор Клиент Отказ Это объект Python, который мы будем использовать для отправки различных команд для серверов Discord.
  • В линия 6 Мы говорим, что мы определяем событие для нашего клиента. Эта строка – это декоратор Python, который займет функцию прямо под ним и некоторое время изменить его. Разрешеный бот будет работать асинхронно , что может быть немного запутанным, если вы привыкли работать стандартным Python. Мы не будем здесь глубины асинхронного питона, но если вы заинтересованы в том, что это такое и почему он используется, есть хорошее руководство по адресу FreeCodecamp Отказ Короче, вместо того, чтобы запустить код в нашем файле сверху вниз, мы будем запускать кусочки кода в ответ на определенные события.
  • В Линии 7-9 Мы определяем, какое событие мы хотим ответить, и что должен быть ответ. В этом случае мы говорим, что в ответ на on_ready Событие (когда наш бот успешно присоединяется к серверу), мы должны выводить некоторую информационную серверную сторону (то есть это будет отображаться в нашем выводе REF, но не отправлено в качестве сообщения через раздор). Мы распечатаем простой Я в Сообщение, чтобы увидеть, что бот там и печатает пользователя нашего бота ID (если вы запускаете несколько ботов, это уйдет легче работать, кто делает то, что).
  • Строки 11-14 похожи, но вместо того, чтобы отвечать на on_ready Событие, мы говорим нашим ботам, как обрабатывать новые сообщения. Линия 13 Говорит, что мы только хотим ответить на сообщения, которые не у нас (в противном случае наш бот будет продолжать отвечать на себя – вы можете удалить эту строку, чтобы увидеть, почему это проблема), а также линия 14 говорит, что мы отправим новое сообщение на тот же канал, где мы получили сообщение ( message.channel ) и контент, который мы отправим, будет то же самое сообщение, которое мы получили, но назад ( message.content [:: - 1]:: - 1 – слегка странный, но полезный Python Idiom, чтобы изменить строку или список).

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

Нажмите большую зеленую кнопку «Запустить» снова, и вы должны увидеть, как ваш бот сообщает об успешном канале присоединиться к выводу ref.

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

.

Как только вы выбрали это, вы сможете отправить сообщение (введя в поле, выделенный ниже) и посмотрите, как ваш бот отвечает!

.

Бот отвечает каждый раз, обращая текст, который мы вводим.

.

Держать наш бот живым

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

Reft.it сохранит ваш код после закрытия вкладки браузера, только если вы используете веб-сервер. Поскольку мы используем библиотеку Python Discord.py, наш бот не требует явного веб-сервера, но мы можем создать сервер и запустить его в отдельном потоке, чтобы сохранить нашу reflive. Мы сделаем это, используя Колбу фреймворк.

Создайте новый файл в вашем проекте под названием step_alive.py и добавьте следующий код:

from flask import Flask
from threading import Thread

app = Flask('')

@app.route('/')
def home():
    return "I'm alive"

def run():
  app.run(host='0.0.0.0',port=8080)

def keep_alive():
    t = Thread(target=run)
    t.start()

Мы не будем пойти на это подробно, так как это не в центре нашего бота, но здесь мы запускаем веб-сервер, который вернется «Я жив», если кто-то посещает его, и мы предоставим метод начать это в Новая тема (оставив основную нить для нашего reft Bot).

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

from keep_alive import keep_alive

В main.py Нам нужно запустить веб-сервер непосредственно перед запуском бота. Добавьте эти три строки в main.py , незадолго до линии с token.environ.get ("discord_bot_secret") :

keep_alive()
token = os.environ.get("DISCORD_BOT_SECRET")
client.run(token)

После этого снова нажав кнопку «Беги» снова, вы должны увидеть некоторые изменения в вашей репре. Для одного вы увидите новую панель в правом верхнем углу, которая показывает веб-выход с вашего сервера. Мы видим, что посещение нашего reft теперь возвращает базовую веб-страницу, показывающую строку «Я жив», которую мы сказали нашим веб-серверу, чтобы вернуться по умолчанию. В нижней правой панели вы также можете увидеть некоторые дополнительные выходные данные с запуска колбы и непрерывно, прослушивания запросов.

Теперь ваш бот останется в живых даже после закрытия вашего браузера или выключение вашей машины для разработки. REP все равно будет убирать свой сервер и убить свой бот после одного часа неактивности, поэтому, если вы не используете свой бот на некоторое время, вам придется войти в REPL и запускать бот снова. В качестве альтернативы вы можете настроить стороннюю сторону (бесплатно!) оказание услуг Как Roomtime Robot Отказ Robot Robot закрепляет ваш сайт каждые 5 минут, чтобы убедиться, что он все еще работает – обычно уведомить вас о неожиданном простоях, но в этом случае постоянные пинги имеют побочный эффект сохранения нашей reflive, поскольку он никогда не пойдет больше часа без получения какой-либо активности.

Выложить и расширение нашего основного бота

Это не очень полезный бот, как есть, но возможности ограничены только вашим творчеством сейчас! Вы можете получить свой бот вход от пользователя, обрабатывать вход и отвечать любым выбранным вами. На самом деле, с основным входом и выходом, которые мы продемонстрировали, у нас есть большинство компонентов любого современного компьютера, все из которых основаны на Архитектура фон Неймана (Мы могли бы легко добавить пропущенную память, имея наш бот, запись в файл, или с небольшим количеством усилий ссылку в A SQLite Batase для постоянного хранения).

Если вы соблюдате вместе с этим руководством, вы будете иметь свой собственный базовый reft Bot, чтобы играть и продлить. Если бы вы просто читали, вы можете легко вилить этот бот в https://repl.it/@garethdwyer1/discord-bot И продлить его, как вы хотите (вам нужно добавить свой собственный токен и воссоздать файл .env файл еще). Счастливый взлом!

Если вы застряли для идей, почему бы не связать свой раздорный бот до Twitch API Чтобы получить уведомление, когда ваши любимые стримеры онлайн, или постройте Текстовое приключение Отказ

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

Оригинал: “https://dev.to/ritza/building-a-discord-bot-with-python-and-repl-it-41be”