В этой статье мы ориентируемся на разработчиков Python, которые интересуют участие в обучении, чтобы построить свои собственные чатбеты на раздоре.
Читатель должен иметь знания о Python. Для установки библиотек и создания функций в Python.
Это должно позволить читателю воспользоваться существующими инструментами Thambot, чтобы построить свой собственный бот.
Вы когда-нибудь задумывались, вы могли бы иметь свой собственный личный помощник? Чтобы помочь вам сделать ваши домашние домашние дела или задачи для вас?
Когда Apple впервые объявила, что его помощник AI называется Siri . В мир во время их одного из их Apple iPhone Release.
Сири забрал мир штормом, на забавных вопросах было тонна статей или видео. Люди просили Сири, как будто Сири была реальной жизнью.
Сегодня мы научимся создавать наш собственный личный помощник, который отвечает вам с GIFS вместо того, чтобы просто слова о раздоре, используя наш любимый Python !!!
Что такое раздор?
Discord – это приложение голоса по IP (VoIP), которое предоставляет как текстовые и голосовые сообщения.
Это популярно среди игроков или других сообществ, которые хотели бы использовать серверы для организации мероприятий.
Сервис похож на Telegram или WhatsApp, которая обеспечивает интеграцию для голосовых вызовов в чате и функциям в игре.
Рост чата
Как там больше людей, которые начали использовать клиентов обмена сообщениями, такие как WhatsApp, Telegram, Facebook Messenger & Slack.
Он вызвал тенденцию создания точков для различных целей, таких как улучшение удовлетворенности клиентов и автоматизации процессов.
Общее использование для чата
Прошли времена, когда ищет решения для решений, включает в себя вы перейти на страницу FAQ или позвоните в центр поддержки клиентов.
Вместо этого они заменяются блестящим новым ботом.
Кто там, чтобы рассказать вам анекдоты, предложить вам решения или там рекомендовать продукты или услуги, которые соответствуют вашим потребностям.
Настраивать
Хорошо, давайте вынум руки и грязные, чтобы начать с настройки нашего сервера.
Мы должны зарегистрировать учетную запись на Раздор Отказ
Настройка дискодового сервера
После создания вашей учетной записи Войдите в систему с вашей недавно созданной учетной записью. Вы будете на Каналы
страница.
Это позволяет добавить Сервер → Плюс Значок, чтобы добавить новый сервер, как показано ниже.
После нажатия на плюс Значок, вы берете на эту страницу с параметрами, чтобы либо создать новый сервер, либо присоединиться к существующему серверу.
Нажмите на кнопку «Создать сервер», затем заполните данные сервера своего собственного сервера и нажмите на Создать кнопка.
Поздравляю!!! Вы только что создали свой первый сервер. Этот сервер будет использоваться для оставшихся этого учебника. Тем временем сделайте перерыв, прежде чем нажать.
Создание приложения и бота
Хорошо, давайте пойдем в Дискорс Разработчик портал Вход и войти с вашей учетной записью.
Как только вы находитесь в портале разработчика, это будет выглядеть что-то подобное.
Выберите кнопку «Новое приложение», чтобы создать новое приложение. Так что ваш бот сможет использовать токен, чтобы взаимодействовать с вашим сервером.
Далее, на левый Ручная сторона боковой панели там имя называется бот
Отказ Нажмите на Бот → Добавить бот
кнопка.
Подсказка будет отображаться для подтверждения создания вашего бота. Игнорируйте его и продолжайте нажать на кнопку «Да, сделайте это».
Добавление бота на ваш сервер
Теперь мы будем продолжить добавление вашего свежего созданного бота на сервер.
Во-первых, нажмите на вкладку Общая информация
На левой стороне приложения вы создали.
Затем нажмите на Скопировать Кнопка, которая находится ниже идентификатора клиента, чтобы скопировать идентификатор клиента.
Это позволяет вам сформировать URL с идентификатором клиента вашего приложения от портала разработчика, как показано ниже.
https://discordapp.com/api/oauth2/authorize?scope=bot&client_id=bot_client_id
Теперь откройте новую вкладку в вашем браузере и отправьтесь до URL-адреса, которую вы только что сформировали.
Вы перенаправлены на сайт, который позволяет вам одобрить Соединение вашего бота на сервер.
Поздравляю!!! Теперь вы закончили Настройка Процесс вашего бота и сервера. Вернитесь к этому руководству снова, когда вы готовы начать кодирование.
Здравствуйте, мир в Server
Добро пожаловать назад, пусть начнет создавать бот. Создайте папку под названием Раздор
Отказ
Далее создайте виртуальную среду под названием Венв
в той же папке.
$ virtualenv --python=python3 venv $ source venv/bin/activate
С помощью виртуальной среды, которую вы создали, мы должны установить библиотеку, как показано ниже:
$ python3 -m pip install -U discord.py
Создайте файл под названием Bot.py
С вашим токеном бота, основанного на портале разработчика под «вкладкой BOT:
import discord token = 'your_discord_bot_token'
Для вашего бота на работу вам нужно создать класс Python под названием Раскрытие
Отказ
Этот класс должен содержать в минуту двух функций, а именно on_ready ()
& On_message ()
как показано ниже:
class DiscordClient(discord.Client): async def on_ready(self): pass async def on_message(self, message): pass
on_ready ()
Функция используется для установления соединения с вашим сервером, используя токен вашего бота:
async def on_ready(): print("Login as") print(self.user) print("-------")
On_message ()
Ответ функции с Привет Сообщение всякий раз, когда пользователь говорит «Привет»:
async def on_message(self, message): # Whenever a user other than bot says "hi" if message.author != self.user: if message.content == 'hi': await message.channel.send('Hello') client = DiscordClient() client.run(token)
После того, как вы включили код для обоих on_ready ()
& On_message ()
Функции. Bot.py
Следует выглядеть так для вашей первой программы бота:
bot.py
import discord token = 'your_discord_bot_token' class DiscordClient(discord.Client): async def on_ready(self): print("Login as") print(self.user) print("-------") async def on_message(self, message): # Whenever a user other than bot says "hi" if message.author != self.user: if message.content == 'hi': await message.channel.send('Hello') client = DiscordClient() client.run(token)
Теперь давайте запустим программу и перейдем на свой сервер, чтобы ввести «Привет» в Общий канал :
$ python bot.py
Потрясающий!!!! Теперь, когда вы сделали свой бот, чтобы сказать «Привет». Давайте перейдем к командам и играть с ним.
Команды раздора
Есть куча полезных команд, связанных с пользователями. Я буду покрывать только основы.
Для получения дополнительной информации о командах, вы можете отправиться на API Справочное руководство Чтобы проверить это.
Магический 8 мяч
Команды должны быть вызваны из Bot2.py
с ? приставка.
Использование команды называется 8ball
Отказ Который ответил предсказанием, когда вы инициируете команду:
bot2.py
from discord.ext.commands import Bot import random token = 'your_bot_token' bot = Bot(command_prefix='?') @bot.event async def on_ready(): print("Login as") print(bot.user.name) print("-------") @bot.command(name='8ball') async def magic_eight_ball(ctx): response =[ 'Without a doubt.', 'Outlook good.', 'Better not tell you now.', 'Cannot predict now.', 'My reply is no.', 'Outlook not so good.', ] await ctx.send(random.choice(response)) bot.run(token)
Давайте выполним Python Program для проверки вновь созданной команды, введя «?»? 8 мяч’.
Что такое контекст?
Обратите внимание, что для каждой команды BOT требуется параметр CTX
быть вызванным.
Который называется Контекст Инициировать различные команды, связанные с ботом.
Использование клиента GiPhy Python
Теперь мы будем интегрировать клиент GiPhy Python, как показано ниже:
$ pip install giphy_client
Как только вы завершили установку клиента GIPHY, давайте отправимся до GiPhy Developer Portal Для регистрации и создания нового приложения. Так что вы можете получить GIPHY API ключ Отказ
Получите 5 лучших популярных GIFS
Для giphy.py
Импортируйте следующее. Который является giphy_client
это помогает инициировать DefaultAPi
и Apiexception
, который занимается различным исключением, связанным с GIPHY API.
PPRINTS ()
Используется для отображения ответа в легко читании формата:
import giphy_client from giphy_client.rest import ApiException from pprint import pprint
Словарь конфигурации использует 3 ключей, а именно API_KEY
который является ключом API GIPHY.
Запрос
Какой план поиска, который вы ищете GIPHY И, наконец, Ограничить
Какое количество GIF, которые возвращаются из результата поиска:
# Create an instance of the API class api_instance = giphy_client.DefaultApi() config = { 'api_key': 'your_api_key', # Giphy API Key, 'limit': 1, 'rating': 'g' } try: api_response = api_instance.gifs_trending_get( config['token'], limit=config['limit'], rating=config['rating']) pprint(api_response) except ApiException as e: print("Exception when calling DefaultApi->gifs_trending_get: %s\n" % e)
Поиск gifs по словам или фразе
Для поиска ваших GIFS по словам, вам необходимо внести следующие изменения.
От .gifs_search_get ()
и добавить дополнительное поле под названием запрос
в обоих config
Переменная и API_Response
как показано ниже:
config = {'api_key': 'your_api_key', 'q': 'cheese', 'limit': 1, 'rating': 'g'} try: api_response = api_instance.gifs_search_get(config['api_key'], limit=config['limit'], rating=config['rating'],q=config['q']) except ApiException as e: print("Exception when calling DefaultApi->gifs_search_get: %s\n" % e)
Случайный GIF.
Чтобы получить случайное GIF, вам нужно удалить оба Запрос
и Ограничить
поле из config
Переменная.
Кроме того, вы должны заменить .gifs_search_get ()
использовать .gifs_random_get.get. ()
как показано ниже.
config = { 'token': 'your_giphy_token', # Giphy API Key. } try: api_response = api_instance.gifs_random_get(config['api_key'])
Давайте сделаем перерыв и начнем применять то, что мы узнали с нашим ботом, чтобы служить GIFS.
Бот, обслуживающий Gifs в Python
Добро пожаловать назад:) Начнем с помощью библиотеки GIPHY для поиска GIF и загрузите ее на свой сервер в качестве ответа для вашего бота в программе Python под названием «Bot2.py».
Отображение GIFS на сервере
Импортировать следующие библиотеки:
import random import giphy_client from discord.ext.commands import Bot from giphy_client.rest import ApiException
После добавления GiPhy Client и Apiexception
Отказ Давайте ревертируем наш оригинальный код, чтобы включить токен GiPhy:
discord_token = 'your_discord_token' giphy_token = 'giphy_api_key' bot = Bot(command_prefix='?') api_instance = giphy_client.DefaultApi()
Поиск GIFS
Давайте теперь создадим функцию под названием search_gifs ()
, где GIPHY API будет искать GIFS.
Как только мы искали 3 GIFS, он будет случайным образом выбрать GIF и отображать URL всякий раз, когда 8ball
Команда называется:
async def search_gifs(query): try: response = api_instance.gifs_search_get(giphy_token, query, limit=3, rating='g') lst = list(response.data) gif = random.choices(lst) return gif[0].url except ApiException as e: return "Exception when calling DefaultApi->gifs_search_get: %s\n" % e
Улучшение команды DiscoD
Теперь мы добавим search_gifs ()
функция в Magic_eight_ball ()
Функция:
@bot.command(name='8ball') async def magic_eight_ball(ctx): response = [ 'Without a doubt.', 'Outlook good.', 'Better not tell you now.', 'Cannot predict now.', 'My reply is no.', 'Outlook not so good.', ] gif = await search_gifs('cheese') await ctx.send(random.choice(response)) await ctx.send('Gif URL : ' + gif)
Как только вы поощрили свой Bot2.py
с библиотекой поиска GIF. Это должно выглядеть ниже:
bot2.py
import random import giphy_client from discord.ext.commands import Bot from giphy_client.rest import ApiException discord_token = 'your_discord_token' giphy_token = 'giphy_api_key' bot = Bot(command_prefix='?') api_instance = giphy_client.DefaultApi() @bot.event async def on_ready(): print("Login as") print(bot.user.name) print("-------") async def search_gifs(query): try: response = api_instance.gifs_search_get(giphy_token, query, limit=3, rating='g') lst = list(response.data) gif = random.choices(lst) return gif[0].url except ApiException as e: return "Exception when calling DefaultApi->gifs_search_get: %s\n" % e @bot.command(name='8ball') async def magic_eight_ball(ctx): response = [ 'Without a doubt.', 'Outlook good.', 'Better not tell you now.', 'Cannot predict now.', 'My reply is no.', 'Outlook not so good.', ] gif = await search_gifs('cheese') await ctx.send(random.choice(response)) await ctx.send('Gif URL : ' + gif) bot.run(discord_token)
Дисплей GIF.
Давайте выполним Bot2.py
Чтобы проверить 8ball
Команда, введя следующую команду для выполнения вашего bot2.py:
$ python bot2.py
Потрясающий!!! Это действительно работает:) Хорошо. Давайте сделаем перерыв и имею kitkat, пока мы начинаем создавать команды реакции GIF.
Отображение реакций на бот
До сих пор мы научились искать GIFS и отображать наши GIFS, когда кому-либо называется команда.
Давайте создадим бот, который подает нам GIFS на основе следующих, которые «Привет», «Добро пожаловать», «Пока» и «До свидания», который называется bot3.py.
:
import random import discord import giphy_client from giphy_client.rest import ApiException discord_token = 'your_discord_token' giphy_token = 'your_giphy_api_key' api_instance = giphy_client.DefaultApi()
Давайте добавим search_gifs ()
Функция, которую мы ранее создавали.
Мы увеличиваем количество GIFS, которые искали 5 вместо 3 GIF. Он будет служить для создания более случайного ответа GIF:
def search_gifs(query): try: return api_instance.gifs_search_get(giphy_token, query, limit=5, rating = 'g') except ApiException as e: return "Exception when calling DefaultApi->gifs_search_get: %s\n" % e
Помимо search_gifs ()
Функция, мы должны добавить в gif_response ()
Какая часть кода разбита из search_gifs ()
Быть уборщиком и простотой понимания:
def gif_response(emotion): gifs = search_gifs(emotion) lst = list(gifs.data) gif = random.choices(lst) return gif[0].url
Привет
Теперь, когда мы добавили search_gifs ()
& gif_response ()
Функции.
Мы должны включить Раскрытие
Класс Python, как показано ниже с on_ready ()
Функция для основной настройки вашего бота.
class DiscordClient(discord.Client): async def on_ready(self): print("Login as") print(self.user) print("-------")
Теперь давайте сосредоточимся на создании логики для бота для ответа, когда пользователь говорит «Привет» или «Привет» к боту:
async def on_message(self, message): # Whenever a user other than bot says "hi" if message.author != self.user: if message.content == 'hi': await message.channel.send('Hi there!!! ' + message.author.mention) await message.channel.send(gif_response('hi')) elif message.content == 'hello': await message.channel.send('Hello :) ' + message.author.mention) await message.channel.send(gif_response('hello'))
bot3.py
import random import discord import giphy_client from giphy_client.rest import ApiException discord_token = 'your_discord_token' giphy_token = 'your_giphy_api_key' api_instance = giphy_client.DefaultApi() def search_gifs(query): try: return api_instance.gifs_search_get(giphy_token, query, limit=5, rating = 'g') except ApiException as e: return "Exception when calling DefaultApi->gifs_search_get: %s\n" % e def gif_response(emotion): gifs = search_gifs(emotion) lst = list(gifs.data) gif = random.choices(lst) return gif[0].url class DiscordClient(discord.Client): async def on_ready(self): print("Login as") print(self.user) print("-------") async def on_message(self, message): # Whenever a user other than bot says "hi" if message.author != self.user: if message.content == 'hi': await message.channel.send('Hi there!!! ' + message.author.mention) await message.channel.send(gif_response('hi')) elif message.content == 'hello': await message.channel.send('Hello :) ' + message.author.mention) await message.channel.send(gif_response('hello')) client = DiscordClient() client.run(discord_token)
Добро пожаловать
Улучшая On_message ()
Функция, чтобы включить ответ «Добро пожаловать» всякий раз, когда пользователь говорит: «Добро пожаловать»:
elif message.content == 'welcome': await message.channel.send(message.author.mention + ' Welcome to the discord channel :)') await message.channel.send(gif_response('welcome'))
Использование Message.author.mention
бот отвечает пользователю
Прощай
Это последний ответ, который мы добавим для бота, чтобы сказать «до свидания» всякий раз, когда пользователь говорит «пока» или «до свидания»:
elif message.content == 'bye': await message.channel.send(message.author.mention + ' May the force be with you') await message.channel.send(gif_response('star wars bye')) elif message.content == "good bye": await message.channel.send(message.author.mention + ' Live long and prosper') await message.channel.send(gif_response('salute'))
Теперь, если вы потеряны до сих пор с несколькими ответами GIF, не волнуйтесь, я включил блок кода для bot3.py
как показано ниже:
bot3.py
import random import discord import giphy_client from giphy_client.rest import ApiException discord_token = 'your_discord_token' giphy_token = 'your_giphy_api_key' api_instance = giphy_client.DefaultApi() def search_gifs(query): try: return api_instance.gifs_search_get(giphy_token, query, limit=5, rating = 'g') except ApiException as e: return "Exception when calling DefaultApi->gifs_search_get: %s\n" % e def gif_response(emotion): gifs = search_gifs(emotion) lst = list(gifs.data) gif = random.choices(lst) return gif[0].url class DiscordClient(discord.Client): async def on_ready(self): print("Login as") print(self.user) print("-------") async def on_message(self, message): # Whenever a user other than bot says "hi" if message.author != self.user: if message.content == 'hi': await message.channel.send('Hi there!!! ' + message.author.mention) await message.channel.send(gif_response('hi')) elif message.content == 'hello': await message.channel.send('Hello :) ' + message.author.mention) await message.channel.send(gif_response('hello')) elif message.content == 'welcome': await message.channel.send(message.author.mention + ' Welcome to the discord channel :)') await message.channel.send(gif_response('welcome')) elif message.content == 'bye': await message.channel.send(message.author.mention + ' May the force be with you') await message.channel.send(gif_response('star wars bye')) elif message.content == "good bye": await message.channel.send(message.author.mention + ' Live long and prosper') await message.channel.send(gif_response('salute')) client = DiscordClient() client.run(discord_token)
Заключение
Ух ты, теперь было довольно кататься, что вы знакомы с созданием бота и используете библиотеку GIPHY.
Давайте подведем обобщению того, что вы узнали в этом руководстве.
Теперь вы узнаете больше о следующем:
- Что такое раздор?
- Рост чата
- Использование клиента GiPhy Python
- Бот, обслуживающий GIFS
- Отображение реакций на бот
Создавая рабочий бот, который обслуживает GIFS для любого пользователя. Вы можете похвастаться этим своим друзьям. Не волнуйтесь, я не буду судить:)
Ваша домашняя работа – подумать о способах улучшения его дальнейшего. Используя другие спокойные API и даже создавать игры с ним.
Я бы порекомендовал вам посмотреть на множество чата, чтобы получить вдохновение Чтобы помочь вам создать интуитивные и веселые боты. Я с нетерпением жду встречи с вашими творениями ботов в будущем.
Дальнейшее чтение
Вот несколько статей и учебных пособий, которые могут помочь вам в расширении вашего бота.
Чтобы быть интерактивными и интуитивно понятными для ваших пользователей, пока я исследую, как создать этот учебник.
- Async Programming в Python с Asyncio
- Ускорить программу Python с параллелизмом
- Создание бота разногласий с Python и reft.it
- Сделать раздор на бот с Python
- Giphy Python Client.
- Почему я создаю автобус дядя
Если вам нравится моя статья, пожалуйста, Зарегистрироваться для макс Рассылка авантюриста Для потрясающего контента я наткнулся на еженедельно в Python , Запуск и Веб-разработка Отказ
Вы также можете Следуйте за я чтобы получить Последние Обновление моей статьи на Dev
Этот пост был изначально размещен в блоге Макса на Сервировка GIFS с раздорным ботом – время чтения: 12 минут и Фото Энди Келли на Unsplash
Оригинал: “https://dev.to/steelwolf180/serving-gifs-with-discord-bot-339n”