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

Обслуживание GIFS с раздорным ботом

Строительство раздорты Chatbot с GIPHY API. Теги с Python, учебником, Showdev, Opensource.

В этой статье мы ориентируемся на разработчиков 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 и даже создавать игры с ним.

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

Дальнейшее чтение

Вот несколько статей и учебных пособий, которые могут помочь вам в расширении вашего бота.

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

Если вам нравится моя статья, пожалуйста, Зарегистрироваться для макс Рассылка авантюриста Для потрясающего контента я наткнулся на еженедельно в Python , Запуск и Веб-разработка Отказ

Вы также можете Следуйте за я чтобы получить Последние Обновление моей статьи на Dev

Этот пост был изначально размещен в блоге Макса на Сервировка GIFS с раздорным ботом – время чтения: 12 минут и Фото Энди Келли на Unsplash

Оригинал: “https://dev.to/steelwolf180/serving-gifs-with-discord-bot-339n”