Телеграм бот для поддержки своими руками / Хабр
Представьте, что у вас есть свой канал в Телеге. Допустим, вы высказываете непопулярную политическую точку зрения и, соответственно, ловите хейт в личку со стороны читателей и проходящих мимо.
Или, например, вы продаете что-то через свой канал. Клиентов так много, что один «продажник» (=вы) не справляется. Или поддержка вашего бизнеса отвечает всем в публичном чате, который прикреплен к вашему каналу. Но многие стесняются задать вопросы, так как их могут увидеть, поэтому пишут в личку, что не масштабируется.
Проблем много, а решение одно: сделать Телеграм бот, который будет работать посредником между вашими клиентами и командой поддержки.
Мое мнение: это самый лучшее применение телеграм ботов за всю историю их существования. На втором месте — рассылка закрытой информации через бота только проплатившим пользователям.
Самый популярный конструктор таких ботов — Livegrambot. Он позволяет сделать тоже самое, но при этом бот будет писать вашим пользователям «я сделан через Livegrambot», выпрашивая деньги у вас. Будучи умелым создателем Телеграм ботов, я решил сделать свой аналог, но уже с открытым исходным кодом и легким способом запустить его бесплатно на бесплатные серверы.
Ниже я расскажу, как в 1 клик запустить такого бота и как он технически устроен.
TL;DR: Код выложил сюда: https://github.com/ohld/telegram-support-bot
Юзер стори или как с этим ботом работать.
Действующие лица:
Ваши Пользователи (читатели канала, клиенты),
Закрытый Чат Поддержки (где сидят те, кто будет отвечать на вопросы Пользователей),
Бот (которому Пользователи будут писать свои вопросы).
Вот так это все будет работать:
Вы публикуете ссылку на Бота,
Пользователи пишут в него свои вопросы,
Бот пересылает их сообщения в ваш Чат Поддержки,
В этом чате вы или ваши помощники отвечают на сообщение (через reply),
Бот пересылает ответ обратно пользователю от своего лица, скрывая аккаунт отвечающего.
Такая схема неплохо масштабируется: достаточно нанять больше Агентов поддержки, и все Пользователи получат свои ответы вовремя и через бота.
Как это все запустить? Желательно, без навыков.
Планируя дизраптнуть платный аналог, необходимо продумать онбординг. Большинству проще заплатить, чем самому разбираться в коде, технологии и деплое. К счастью, я фанат Heroku, а именно там можно бесплатно хостить свой код, нажав всего одну кнопку.
В README.md я добавил волшебную кнопку от Heroku, которая поможет запустить код из репозитория. После нажатия, при наличии аккаунта на Heroku (который можно создать также по 1 кнопке), вы увидите такую картину:
Heroku уже понял, какие данные нужно запросить у вас, у создателя, чтобы все завелось автоматически. Давайте пройдемся по этим параметрам:
— App name: название приложения в системе Heroku. Можно придумать любое.
— Choose a region: где Хероку запустит ваш код. Можно выбрать любое место.
— HEROKU_APP_NAME
: впишите сюда тоже самое, что указали выше в App name (это важно для того, чтобы завести тг бота через вебхуки).
— TELEGRAM_SUPPORT_CHAT_ID
: айдишник чата, куда Телеграм бот будет пересылать сообщения пользователей. Как узнать его — смотрите ниже.
— TELEGRAM_TOKEN
: токен вашего бота, который можно получить у BotFather.
Как узнать TELEGRAMSUPPORTCHAT_ID
Способов много, но самый простой — это добавить вот этого бота в ваш созданный приватный чат. Этот бот возвращает все данные, которые ему присылает Телеграм, в частности событие «меня добавили в чат», откуда вы и сможете извлечь chat_id
.
Как реализовать такого бота?
Ниже будет много технической информации. Мы же на Хабре, поэтому я решил добавить этот раздел для любителей разобраться в коде и при необходимости его адаптировать. Это раздел можно спокойно пропустить, если хотите.
Примеры кода я буду писать на языке Python и использовать библиотеку python-telegram-bot
. Итогда я буду вставлять ссылки на GitHub (гит), чтобы легко можно было найти этот кусок кода в моем репозитории.
Хендлеры (обработчики событий)
Для нашей задумки необходимы всего 3 хендлера (гит):
from telegram.ext import Updater from telegram.ext import CommandHandler, MessageHandler, Filters updater = Updater(TELEGRAM_TOKEN) dp = updater.dispatcher # Для приветственного сообщения и для "к вам подключился {username}" dp.add_handler(CommandHandler('start', start)) # Для пересылки из бота в чат поддержки dp.add_handler(MessageHandler(Filters.chat_type.private, forward_to_chat)) # Для пересылки ответа из чата обратно пользователю dp.add_handler(MessageHandler(Filters.chat(TELEGRAM_SUPPORT_CHAT_ID) & Filters.reply, forward_to_user))
С командой /start все понятно. Юзер нажал — прислать приветственное сообщение — прислать в чат поддержки о том, что подключился новый юзер (гит).
def start(update, context):
update. message.reply_text(WELCOME_MESSAGE)
user_info = update.message.from_user.to_dict()
context.bot.send_message(
chat_id=TELEGRAM_SUPPORT_CHAT_ID,
text=f"? Connected {user_info}.",
)
В случае пересылки ботом сообщения пользователя из лички в чат поддержки, тоже все просто (гит):
def forward_to_chat(update, context):
update.message.forward(chat_id=TELEGRAM_SUPPORT_CHAT_ID)
В случае отправление ответа (reply) на пересланное сообщение, необходимо скопировать содержимое сообщения и отправить его от лица бота. Если аналогично сделать .forward
, то будет виден отправитель. А тут как раз недавно в Telegram Bot API добавили возможность удобно копировать содержимое сообщения (гит):
def forward_to_user(update, context):
user_id = update.message.reply_to_message.forward_from.id
context.bot.copy_message(
message_id=update.message.message_id,
chat_id=user_id,
from_chat_id=update. message.chat_id
)
Бесплатный деплой на Heroku
Чтобы захостить это все бесплатно на Heroku, бот должен быть запущен в режиме Webhook, а не Pooling. Разница их в том, что вебхук «слушает новые сообщения от Телеги», а пулинг «периодически запрашивает». Чтобы запрашивать, сервер должен работать постоянно (условно, каждую секунду запрашивать у серверов Телеграмма новые сообщения, которые кто-то написал в бот). Однако, в случае с вебхуками, сервер может просто ждать, когда серверы Телеграмма сами отправят нам новые обновления бота.
Этот факт критически важен, если мы хотим бесплатно пользоваться услугами Heroku (который по факту дает нам свои серверы в аренду). Хероку любит «усыплять» простаивающие машины, которые пробуждаются в момент нового входящего запроса. Именно новые сообщения от серверов Телеграмма и будут пробуждать наш сервер тогда, когда необходимо переслать пользовательское сообщение из лички бота в наш чат поддержки.
Для того, чтобы настроить Webhook, необходимо поднять вебсервер, который будет слушать входящие сообщения по endpoint. Сказать Телеграму: «присылай события бота мне на сервер — по этому адресу». Также нужно как-нибудь защититься от злоумышленников, которые могут отправить на наш вебсервер событие, прикинувшись сервером телеги. Также телеграм требует, чтобы все работало https.
Звучит сложно, однако Heroku автоматически и бесплатно обеспечит https, а вебсервер для вебхука уже встроен в библиотеку python-telegram-bot
. Если добавить секретный токен вашего бота в URL, по которому вы будете слушать события от Телеги, то можно защититься от стороннего вмешательства.
Вот как можно запустить Телеграм бот в webhook-режиме (гит) через эту библиотеку:
# запускаем слушающий вебсервер
updater.start_webhook(
listen="0.0.0.0",
port=PORT, # HEROKU требует, чтобы порт вебсервера задавался через переменные окружения
url_path=TELEGRAM_TOKEN # добавляем секретное значение в адрес, который слушаем
)
# говорим Телеграму: "присылай события бота по этому адресу"
updater.bot.set_webhook(f"https://{HEROKU_APP_NAME}. herokuapp.com/{TELEGRAM_TOKEN}")
updater.idle()
Помните, мы отдельно задавали переменную окружения HEROKU_APP_NAME
, куда копипастили название нашей Heroku App? Дело в том, что эта переменная используется в адресе, по которому Heroku запускает наш вебсервер. Но при этом, имя приложения Хероку нельзя получить изнутри, поэтому решение «скопипастить название App Name в отдельную переменную окружения» для меня звучит норм.
Что дальше?
Допустим, вы запустили бота, у вас уже много клиентов и вы хотите усовершенствовать функционал телеграм бота. Что можно сделать?
Во-первых, можно сохранять список пользователей, которые как-нибудь контактировали с ботом. Это пригодится как для выстраивания воронок, так и для массовой рассылки им сообщения через бота. Во-вторых, можно улучшить сервис со стороны агентов поддержки: в сообщения добавить кнопки с ссылками на CRM, спрашивать у пользователей качество ответа, выводить больше информации о подключенном юзере и запрашивать у них контакты.
Спасибо за просмотр. Теперь вы знаете, как можно сделать и бесплатно задеплоить Телеграм бота поддержки. Полный код проекта (вместе с волшебной кнопкой «задеплой это на хероку») лежит тут. В своем Телеграм канале я делюсь опытом разработки больших телеграм ботов, делюсь датасетами и продуктовой аналитикой. Заходите.
А какие другие популярные юзкейсы Телеграм ботов вы бы выделили? Напишите в комментариях.
Боты в Telegram что это такое и как они работают
Что такое боты в Telegram?
Боты – это специальные программы, выполняющие различные функции и упрощающие жизнь их пользователей. Написанные для платформы Telegram, они предназначены для выполнения самых разных функций: от получения новостей до поиска информации и даже торговли акциями. Главное задачей бота является автоматический ответ после введенной ему пользователем команды. При этом, работая непосредственно через интерфейса Telegram, программа имитирует действия живого юзера, за счет чего пользование таким ботом гораздо удобно и понятно.
Именно поэтому, многие компании, развивающие бизнес через интернет, используют возможности ботов по нескольким причинам:
- Они позволяют задействовать очередной канал коммуникации с целевой аудиторией (в России Телеграмом пользуется около 10 миллионов человек).
- Они быстро выполняют однообразную работу, позволяя разгрузить наемных сотрудников, тем самым экономя деньги компании.
Желаете попробовать бота в своей компании или узнать, какую пользу он может вам принести? Напишите нам об этом и мы поможем вам с этим.
Виды ботов в Telegram
В Telegram используется один общий вид ботов, которых от обычных юзеров отличает только наличие приставки «bot» в имени. Сами же боты делятся на несколько направлений:
- Чат-боты. Представляют из себя простейший чат, имитирующий общение на заданную пользователем тематику.
- Боты-информаторы. Отдельный вид ботов, главная цель которых — информирование пользователя о тех или иных событиях (новости, мероприятия, публикации и т. п.).
- Игровые боты. Боты, в которых можно поиграть в различные игры. По большей части, это текстовые версии разных игр времен Combats.ru
- Боты-асистенты. Боты, разработанные различными онлайн-сервисами как дополнение к основной веб-версии.
На самом деле, четкого деления нет, т.к. некоторые боты содержат сразу несколько механик и успешно выполняют множество пользовательских задач. С их помощью можно переводить, обучаться, тестировать, искать информацию, играть в игры и даже пользоваться другими сервисами и взаимодействовать с вещами, имеющими выход в глобальную сеть (популярный нынче «интернет-вещей»). Все боты в Телеграме являются бесплатными, но в 2017 году Павлом Дуровым была анонсирована возможность настроить и платное пользование такими программами.
Благодаря этому, боты стали карманными помощниками, пользоваться которыми можно даже не покидая мессенджер. Они предоставляют возможность решать элементарные задачи при помощи мгновенных команд, при все эти программы не нуждаются в установке и не занимают отдельное место в памяти вашего девайса.
Как они работают
Алгоритм работы бот-утилит достаточно прост. Сообщения, команды и запросы, отправленные пользователями, передаются на программное обеспечение, запущенное на серверах разработчиков. Посреднический анонимный сервер Telegram обрабатывает шифрование и осуществляет обратную связь между утилитой и пользователем.
Взаимодействие между пользователем и ботом выглядит следующим образом:
Пользователь бота отдает ему команду -> Бот передает команду на сервер -> Программа на сервере обрабатывает полученный от бота запрос -> Сервер отдает ответ боту -> Бот выводит ответ на экран приложения пользователю.
И этот цикл повторяется раз за разом, когда вы нажимаете на кнопки и взаимодействуете с любым телеграм-ботом.
Вы общаетесь с серверами с помощью простого HTTPS-интерфейса, который представляет собой упрощенную версию API Telegram. По другому этот интерфейс можно назвать программным каталогом или бот-алгоритмом. Подробнее о том, как работает бот в телеграмм можно узнать, став разработчиком программного обеспечения. Новые bot-утилиты создаются с помощью специальной утилиты @BotFather, который значительно упрощает процесс девелопмента.
Школьники «Сириуса» создали чат-бот для подготовки к ЕГЭ — Российская газета
Участники программы «Алгоритмы и анализ данных» в сочинском «Сириусе» создали чат-бот, который поможет российским школьникам готовиться к ЕГЭ.
— По каждому предмету единого госэкзамена так много примеров задач, что ни у одного ребенка не будет столько времени, чтобы решить их все. Школьники «Сириуса» создали умный чат-бот, который умеет определять сильные и слабые стороны ученика, — рассказали в пресс-службе образовательного центра. — Пользователю бота предлагают выполнить задания. Бот хвалит за те, с которыми человек справился, а дальше выбирает из огромной базы примеров те, которые получаются у школьника не так хорошо. В будущем умный чат-бот сможет посоветовать, какие темы нужно повторить, анализируя, как старшеклассник решает задания. Участники проекта применили интеллектуальные алгоритмы, чтобы бот искал похожие задачи и мог выстроить траекторию обучения пользователей.
Кстати, это далеко не все «умные» проекты, созданные участниками программы «Алгоритмы и анализ данных». Один из самых интересных проектов — анализ мозговой активности. В «Сириус» привезли специальное оборудования для считывания сигналов головного мозга. Школьники научились анализировать эти сигналы и создали алгоритм, с помощью которого можно управлять фигурами в компьютерной игре не джойстиком или мышкой, а силой мысли. В будущем, чтобы направлять своих персонажей в играх, нужно будет лишь подумать «иди вправо, прыгай, иди влево». Это произведет революцию в компьютерных играх, уверяют в образовательном центре
Виртуальный робот дает ученику задачки и проверяет, как хорошо тот справляется
Другое применения этой технологии — набирать сообщения на телефоне мыслями. По мнению экспертов, это станет возможно уже в ближайшем будущем. Чтобы методы искусственного интеллекта заработали, им нужна обучающая выборка — примеры того, как это делать. Как их получить? Оборудование во время эксперимента считывает сигналы. Участника просят думать о чем-то конкретном, например о букве «а». И программа считывает этот пример и запоминает. Дальше ее учат находить среди всего шума и массива информации эти сигналы. Чтобы понимать, о чем думает человек. Именно с такой концепцией обучения машин и познакомились школьники.
Что такое боты и как они работают | События в мире — оценки и прогнозы из Германии и Европы | DW
Боты — это программы, которые управляют фейковыми аккаунтами в соцсетях. При этом они имитируют поведение настоящих пользователей: подписываются на других юзеров, лайкают, репостят, оставляют под чужими постами заготовленные комментарии. Особенно много их в микроблоге Twitter — по некоторым данным, около трети всех аккаунтов.
Обычно боты работают вместе. В самой крупной из разоблаченных сетей было 350 тысяч фальшивых аккаунтов, которые постили случайные цитаты из «Звездных войн». Чаще всего боты распространяют рекламу. Они могут сообщать погоду или отвечать на вопросы клиентов на сайтах компаний. Но бывает, что эти программы используют в политических целях. Особенно активны они были в начале конфликта России и Украины, во время кризиса с беженцами в Германии, выборов президента США в 2016 году.
Взаимными лайками и перепостами они искусственно выводят в тренды заказные темы или хэштеги.
Например, в 2015-2016 годах в Германии с их помощью активно раскручивались посты и хештеги против беженцев. И хотя в соцсетях хватало и страниц в поддержку их приезда, без аналогичной помощи ботов они выглядели куда менее популярными. В итоге могло сложиться ложное впечатление, что большинство немцев — против, а особенной популярностью в стране пользуются партии, критикующие политику «открытых дверей».
Так боты могут влиять на общественное мнение. Они смещают акценты, раскручивают фейковые новости, дискредитируют определенные точки зрения, атакуют в интернете конкретных людей.
Как отличить бота от обычного интернет-пользователя
Однозначно определить бота довольно сложно — даже «верифицированные» соцсетью аккаунты (в «Твиттере», например, они отмечены голубой «галочкой») могут управляться ботом. Скорее, можно говорить о том, насколько высока вероятность, что перед вами бот. Для этого нужно внимательно изучить подозрительный профиль.
Чем меньше в нем личной информации, тем вероятнее, что это бот. Иногда боты используют имена, сгенерированные с помощью алгоритма: они выглядят как случайные комбинации букв и цифр. Бывает, что фотография профиля женская, а имя — мужское. Обратите внимание на подписчиков: часто у бота почти нет друзей, либо среди них — другие боты.
Что за фото стоит на аватарке? Боты крадут чужие снимки. Проверить, нет ли других аккаунтов с тем же фото, можно через обратный поиск по картинкам в Google.Картинки или Yandex.Images.
Другие признаки бота
Кроме того, бота может выдать ненормальная активность. Если пользователь зарегистрировался недавно и ежедневно постит по несколько сотен твитов, — это бот. По мнению исследователей из Оксфордского университета, бота выдают даже 50 твитов в день либо в принципе их одинаковое количество ежедневно.
Почитайте, что именно постит этот аккаунт? Одинаковые темы, тональность, ретвиты одних и тех же СМИ без личных комментариев характерны скорее для бота.
Надежнее всего понаблюдать за странным аккаунтом какое-то время. Если сомнений не осталось, сообщите о нем администраторам социальной сети — бота должны заблокировать.
Проверить вероятность того, что какой-то аккаунт (в том числе и ваш), может принадлежать боту (или выглядеть, как будто это так), можно тут.
Другие выпуски проекта DW «Как выжить в соцсетях» смотрите здесь.
Смотрите также:
Готовый чат-бот для недвижимости Ai-Chat
Готовый чат-бот для недвижимости Ai-ChatКоличество состоявшихся чатов:
85230
Получено целевых обращений:
8404
Подключено сайтов:
65
Как получать подключить чат-бота на сайт?
5 простых шагов
Внедрение
Настраиваем базу диалогов чат-бота под конкретный объект недвижимости
Установка
Добавляем виджет на сайт
Обращения
Получаем обращения клиентов
Аналитика
Улучшение базы диалогов, алгоритмов общения с клиентами
Результат
Увеличение продаж
Подписка или лиды?
Выберите тариф
0₽
Бесплатно
- 2 недели для теста
- 24/7 или ночной режим
- Полная техническая поддержка
- Отчет по результату тестирования
- Интеграция с Сomagic/Calltouch
ЗАКАЗАТЬ
CPA
Стоимость за лид по запросу
- Неограниченное количество сайтов
- Поддержка мессенджеров
- 24/7 или ночной режим
- Полная техническая поддержка
- Интеграция с Сomagic/Calltouch/CRM
ЗАКАЗАТЬ
28 000₽
ежемесячно
- Неограниченное количество лидов
- Поддержка мессенджеров
- 24/7 или ночной режим
- Полная техническая поддержка
- Интеграция с Сomagic/Calltouch/CRM
ЗАКАЗАТЬ
Эти клиенты получают обращения с чатов каждый день!
Кейсы и результаты
Слово нашим клиентам
Отзывы
Дело в том, что у нас достаточно небольшой отдел продаж – всего 2 человека, я и менеджер по продажам. Нам достаточно тяжело быстро реагировать на обращения Клиентов через чаты (аналогичных JivoSite, LiveTex и т.д.), т.к. одновременно кто-то из нас может находится на показе (наш офис находится в доме, который мы продаем), кто-то принимает входящий звонок, поэтому в момент поступления обращения Клиента из чата мы не можем по объективным причинам оперативно ответить, что приводит к потери лида. Появилась идея автоматизировать процесс, создав бота, владеющего базовой информацией по реализуемому проекту, способного отвечать на стандартные вопросы и главное, способного получить телефонный номер Клиента, по которому впоследствии мы могли бы перезвонить. Коллеги из «AI-chat» нашли для нас такое решение – ЧАТ-БОТ, в который были загружены данные о нашем проекте.
Александра Малкерова
Руководитель Отдела продаж
ГК «Орехово»
«С помощью чат-бота мы увеличиваем охват посетителей сайта, которым интересен проект, но они не решаются позвонить и задать вопрос. Автоматизированный консультант работает круглые сутки и без выходных, за счет этого мы получаем дополнительные обращения в нерабочее время.»
Бурдиладзе Нино
Руководитель направления маркетинга
Химки Групп
Будем рады пообщаться
Контакты
© 2021 Все права защищены
Directum Bot
Не все сотрудники работают в информационных системах компании. Однако во внутренних процессах участвуют все работники — исполняют поручения, оформляют заявления, получают на ознакомление документы.
С Directum Bot рабочая информация из корпоративных систем становится доступна каждому сотруднику. Прямо из мессенджера можно пользоваться сервисами компании и отправлять запросы во внутренние службы.
Directum Bot — инструмент, позволяющий оперативно решать повседневные задачи:
- получать доступ к корпоративной системе в любом месте и в любое время;
- запускать бизнес-процессы в привычном интерфейсе мессенджера.
Для работы достаточно мобильного устройства с доступом в интернет.
Решение предназначено как для рядовых сотрудников, так и для руководителей высшего звена.
Описание решения
Работа с решением ведется при помощи диалогов с чат-ботом мессенджера (Viber, Telegram и др.). Чат-бот отвечает на вопросы и самостоятельно задает их в рамках предварительно настроенных процессов.
Directum Bot позволяет автоматизировать различные бизнес-процессы компании, например, запрос справок и оформление сервисных заявок. В поставку решения включены готовые процессы: исполнение поручений, ознакомление с документами, проведение опросов, оформление заявлений. На их основе компания может быстро создать свои уникальные процессы.
Чат-бота можно настроить исходя из потребностей организации:
- в рамках одного чат-бота регулировать доступ к командам его меню. Например, создать уникальный набор команд для руководителей и других категорий сотрудников.
- создать нескольких чат-ботов с разной функциональностью. Например, корпоративный чат-бот для сотрудников и внешний чат-бот для клиентов.
Благодаря сервисам интеграции и обмена Directum Bot легко становится частью автоматизированных бизнес-процессов организации. Например, когда сотрудник в мессенджере запрашивает справку 2-НДФЛ, в Directum отправляется задание бухгалтеру.
Список сотрудников, имеющих доступ к решению, настраивает администратор.
Бизнес-эффект
- Вовлечение в цифровое взаимодействие всех сотрудников, в том числе тех, кто не работает за компьютером.
- Снижение затрат на подключение к информационным системам. Чтобы работать с решением, пользователю достаточно установить мессенджер на мобильном устройстве и авторизоваться в чате Directum Bot.
- Быстрое подключение пользователей к решению. Мессенджер прост в использовании и всегда под рукой.
- Легкая автоматизация бизнес-процессов компании посредством чат-бота.
Как создать телеграм-бота | База знаний Selectel
С помощью ботов можно упростить себе задачу коммуникации с пользователями, создав для них умного помощника. Боты понимают текстовые команды и могут обращаться к API вашего вебсайта, сервиса или быть самостоятельным продуктом с уникальными услугами.
Обычно, для создания бота требуется сервер, но в этой статье мы разберём подход, позволяющий обойтись без него. Он идеален при резких колебаниях количества запросов и прекрасно выдерживает пиковые нагрузки.
Настроить Телеграм-бота на Облачных функциях, используя официальный API и заготовленный нами пример, можно в 3 этапа:
- Запрограммировать логику работы Телеграм-бота.
- Зарегистрировать нового бота в Telegram.
- Связать бота и его логику воедино.
Запрограммировать логику работы Телеграм-бота
Чтобы упростить задачу, мы написали пример такого бота. Его исходный код доступен по ссылке github.com/selectel/cloud-telegram-bot. Он понимает команды:
/start
с приветственным сообщением;/sticker
с ответом в виде стикера;/getwebhook
чтобы вы могли получить информацию о настройках вашего бота;/setwebhook
для настройки вашего бота, но об этом позже.
Пройдите следующие шаги с нашим примером бота, чтобы освоиться:
- Скачайте исходный код как архив («Clone or download» → «Download ZIP») и распакуйте его.
- Внутри должно быть:
- «setup.py» с минимальным кодом, чтобы Python-окружение приняло содержимое папки за модуль для установки;
- «requirements.txt» с описанием зависимостей;
- «bot» — папка с исходным кодом нашего бота.
- Выделите все эти файлы и папки, а затем создайте из них новый ZIP-архив, тогда исходный код внутри архива не будет иметь лишних папок (как в случае с архивом, скачанным с github).
- Перейдите в Облачная Платформа → Функции → Создать функцию, подробнее.
- Задайте имя, например, «Bot».
- Загрузите ZIP-файл в качестве Исполняемого кода.
- Укажите Путь к файлу в архиве как «/bot/tele_bot.py».
- Укажите Вызываемую функцию в коде как «main».
- Добавьте переменную окружения «TOKEN», но пока не задавайте для неё значения, мы коснёмся этого на следующем этапе.
- Нажмите кнопку Сохранить и развернуть.
- Поставьте галочку, что нужна Публичная ссылка.
Теперь у нас есть API, реализующее логику ответов бота. Следующим этапом мы зарегистрируем его в Telegram.
Зарегистрировать нового бота в Telegram
Чтобы Telegram знал о существовании нашего бота, его нужно зарегистрировать. Для этого существует только один способ:
- Найдите бота @BotFather в Телеграм. Это официальный бот, созданный специально для управления ботами.
Отправьте ему команду:
/newbot
@BotFather спросит вас, как вы назовёте вашего бота. Следующим сообщением отправьте его название, заканчивающееся на «_bot».
Запишите полученный токен от @BotFather — это ключ для работы с Telegram API.
Теперь у нас API, регистрация бота в Telegram и его токен. Осталось связать это вместе.
Как связать бота и его логику воедино?
На этом этапе надо сделать так, чтобы бот знал токен пользователя, а Telegram знал, где его API:
- Найдите переменную окружения «TOKEN» в настройках функции. Мы оставили её пустой на первом этапе.
- Укажите в этой переменной токен вашего бота, который получили от @BotFather.
- Нажмите Сохранить и развернуть.
Далее нужно направить сообщения, которые пользователи отправляют в Telegram, нашему боту — в то API, которое для него создали.
Способ 1. Через бота @SelectelServerless_bot
- Найдите бота @SelectelServerless_bot в Телеграме.
Введите команду:
/setwebhook <Токен от вашего бота> <URL от облачной функции>
Бот ответит тем, что получит из Telegram API. Если всё хорошо, это будет «true».
Чтобы удостовериться в том, что всё корректно, отправьте команду:
/getwebhook <Токен от вашего бота>
В ответ должна прийти информация о webhook, в том числе указанный вами URL.
Способ 2. Из заготовленной формы
Откройте форму (или скопируйте её к себе в Облачное хранилище). Вставьте токен от вашего бота в первое поле, URL облачной функции во второе и нажмите на кнопку «Set Webhook». Произойдёт обращение к api.telegram.org, и вы увидите результат.
Примечание: может понадобиться наличие VPN.
Итог
Готов для работы бот, доступный в Телеграме, отвечающий на команды и способный автоматически масштабироваться под нагрузкой и без сервера.
Определение бота от Merriam-Webster
\ летучая мышь \варианты: или реже дно
: личинка овна особенно : одно заражение лошади
1 ботанический; ботаник; ботаника
1 : робот Беннет имеет в виду… нового полицейского робота.Он похож на находящегося рядом робота Albuquerque Bomb Squad — у обоих есть камеры, шарнирно-сочлененная рука, механический захват и гусеницы, похожие на танки. Но бот Бенетта другой; у него есть мозги. — Популярная наука 2а : компьютерная программа, которая выполняет автоматические повторяющиеся задачи : agent sense 5 Несколько торговых «ботов» будут отслеживать цены на онлайн-товары от различных поставщиков.- Сэм Винсент Меддис особенно : предназначен для выполнения злонамеренного действия. Эти программы-боты работают круглосуточно, выискивая миллионы случайных IP-адресов в поисках дыр, через которые можно пролезть. — Дженнифер Танакаб : компьютер, зараженный ботом, который может использоваться в злонамеренных целях как часть сети зараженных компьютеров. Затем эти прокси-серверы отправляли инструкции рабочим ботам в заданных шаблонах, включая шаблоны для создания спама.- Джефф Хехт
3 : компьютерная программа или персонаж (как в игре), предназначенный для имитации действий человека.
Как создать бота Discord на Python — Настоящий Python
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python.Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Создание бота Discord на Python
В мире, где видеоигры так важны для многих людей, общение и сообщество вокруг игр имеют жизненно важное значение. Discord предлагает и то, и другое в одном хорошо продуманном пакете. В этом руководстве вы узнаете, как создать бота Discord на Python, чтобы максимально использовать возможности этой фантастической платформы.
К концу этой статьи вы узнаете:
- Что такое Discord и почему он так ценен
- Как создать бота Discord через Портал разработчиков
- Как создавать подключения к Discord
- Как обрабатывать события
- Как принимать команды и проверять предположения
- Как взаимодействовать с различными API Discord
Вы начнете с того, что узнаете, что такое Discord и почему он так ценен.
Что такое раздор?
Discord — это платформа голосового и текстового общения для геймеров.
Игроки, стримеры и разработчики используют Discord для обсуждения игр, ответов на вопросы, общения во время игры и многого другого. У него даже есть игровой магазин с критическими отзывами и услугой подписки. Это почти универсальный магазин для игровых сообществ.
Хотя есть много вещей, которые вы можете создать с помощью API Discord, в этом руководстве основное внимание будет уделено конкретному результату обучения: как создать бота Discord на Python.
Что такое бот?
Популярность Discord растет. Таким образом, автоматические процессы, такие как блокировка неподходящих пользователей и реагирование на запросы пользователей, жизненно важны для процветания и роста сообщества.
Автоматизированные программы, которые выглядят и действуют как пользователи и автоматически реагируют на события и команды в Discord, называются пользователями-ботами . Пользователи ботов Discord (или всего ботов ) имеют практически неограниченное количество приложений.
Например, предположим, что вы управляете новой гильдией Discord, и пользователь присоединяется к ней впервые.Взволнованный, вы можете лично обратиться к этому пользователю и поприветствовать его в своем сообществе. Вы также можете рассказать им о своих каналах или попросить их представиться.
Пользователь чувствует себя желанным гостем и наслаждается обсуждениями, которые происходят в вашей гильдии, а он, в свою очередь, приглашает друзей.
Со временем ваше сообщество разрастается настолько, что уже невозможно лично связаться с каждым новым членом, но вы все равно хотите послать им что-нибудь, чтобы признать их новым членом гильдии.
С помощью бота можно автоматически реагировать на присоединение нового члена к вашей гильдии. Вы даже можете настроить его поведение в зависимости от контекста и контролировать, как он взаимодействует с каждым новым пользователем.
Это здорово, но это лишь один небольшой пример того, как бот может быть полезным. У вас есть так много возможностей проявить творческий подход к ботам, если вы знаете, как их создавать.
Примечание: Хотя Discord позволяет создавать ботов, которые имеют дело с голосовой связью, эта статья будет придерживаться текстовой части службы.
При создании бота необходимо выполнить два основных этапа:
- Создайте пользователя бота на Discord и зарегистрируйте его в гильдии.
- Напишите код, который использует API Discord и реализует поведение вашего бота.
В следующем разделе вы узнаете, как создать бота Discord на портале разработчиков Discord.
Как создать бота Discord на портале разработчиков
Прежде чем вы сможете погрузиться в какой-либо код Python для обработки событий и создания захватывающей автоматизации, вам необходимо сначала создать несколько компонентов Discord:
- Счет
- Приложение
- Бот
- Гильдия
Вы узнаете больше о каждой детали в следующих разделах.
Как только вы создадите все эти компоненты, вы свяжете их вместе, зарегистрировав своего бота в своей гильдии.
Вы можете начать с портала разработчиков Discord.
Создание учетной записи Discord
Первое, что вы увидите, это целевая страница, на которой вам нужно будет либо войти в систему, если у вас уже есть учетная запись, либо создать новую:
Если вам нужно создать новую учетную запись, нажмите кнопку «Регистрация» под «Вход в систему» и введите данные своей учетной записи.
Важно: Вам нужно будет подтвердить свой адрес электронной почты, прежде чем вы сможете продолжить.
Когда вы закончите, вы будете перенаправлены на главную страницу портала разработчиков, где вы создадите свое приложение.
Создание приложения
Приложение позволяет вам взаимодействовать с API Discord, предоставляя токены аутентификации, назначая разрешения и т. Д.
Чтобы создать новое приложение, выберите Новое приложение :
Затем вам будет предложено назвать ваше приложение.Выберите имя и нажмите Создать :
Поздравляем! Вы подали заявку на Discord. На появившемся экране вы увидите информацию о своем приложении:
Имейте в виду, что для любой программы, взаимодействующей с API Discord, требуется приложение Discord, а не только боты. API, связанные с ботами, — это лишь часть всего интерфейса Discord.
Однако, поскольку это руководство посвящено созданию бота Discord, перейдите на вкладку Bot в левом списке навигации.
Создание бота
Как вы узнали в предыдущих разделах, пользователь-бот — это тот, кто слушает и автоматически реагирует на определенные события и команды в Discord.
Чтобы ваш код действительно отображался в Discord, вам нужно создать пользователя-бота. Для этого выберите Добавить бота :
Когда вы подтвердите, что хотите добавить бота в свое приложение, вы увидите нового пользователя бота на портале:
Обратите внимание, что по умолчанию ваш пользователь-бот унаследует имя вашего приложения.Вместо этого обновите имя пользователя на что-то более похожее на бота, например RealPythonTutorialBot
и Сохранить изменения :
Теперь бот настроен и готов к работе, но куда?
Пользователь-бот бесполезен, если он не взаимодействует с другими пользователями. Затем вы создадите гильдию, чтобы ваш бот мог взаимодействовать с другими пользователями.
Создание гильдии
Гильдия (или сервер , как его часто называют в пользовательском интерфейсе Discord) — это определенная группа каналов, на которых пользователи собираются для общения.
Примечание: Хотя гильдия и сервер взаимозаменяемы, в этой статье будет использоваться термин гильдия в первую очередь потому, что в API используется один и тот же термин. Термин сервер будет использоваться только для обозначения гильдии в графическом интерфейсе.
Например, вы хотите создать пространство, где пользователи могут собраться вместе и рассказать о вашей последней игре. Вы бы начали с создания гильдии. Тогда в вашей гильдии у вас может быть несколько каналов, например:
- Общее обсуждение: Канал, где пользователи могут говорить о чем угодно
- Спойлеры, Осторожно: Канал для пользователей, которые закончили вашу игру, чтобы рассказать обо всех открытиях в конце игры.
- Объявления: Канал, где вы можете сообщать об обновлениях игры и обсуждать их.
Создав свою гильдию, вы приглашаете других пользователей в нее.
Итак, чтобы создать гильдию, зайдите на свою домашнюю страницу в Discord:
С этой домашней страницы вы можете просматривать и добавлять друзей, личные сообщения и гильдии. Отсюда выберите значок + в левой части веб-страницы, чтобы Добавить сервер :
Будет представлено два варианта: Создать сервер и Присоединиться к серверу . В этом случае выберите Create a server и введите имя вашей гильдии:
Когда вы закончите создание своей гильдии, вы сможете увидеть пользователей справа и каналы слева:
Последний шаг в Discord — зарегистрировать своего бота в новой гильдии.
Добавление бота в гильдию
Бот не может принимать приглашения, как обычный пользователь. Вместо этого вы добавите своего бота, используя протокол OAuth3.
Технические детали: OAuth3 — это протокол для работы с авторизацией, при котором служба может предоставить клиентскому приложению ограниченный доступ на основе учетных данных приложения и разрешенных областей.
Для этого вернитесь на портал разработчика и выберите страницу OAuth3 в левой навигационной панели:
В этом окне вы увидите Генератор URL-адресов OAuth3.
Этот инструмент генерирует URL-адрес авторизации, который обращается к API-интерфейсу Discord OAuth3 и разрешает доступ к API с использованием учетных данных вашего приложения.
В этом случае вы захотите предоставить пользователю-боту вашего приложения доступ к API Discord, используя учетные данные OAuth3 вашего приложения.
Для этого прокрутите вниз и выберите bot из SCOPES options и Administrator из BOT PERMISSIONS :
Теперь Discord сгенерировал URL-адрес авторизации вашего приложения с выбранной областью действия и разрешениями.
Заявление об ограничении ответственности: Хотя мы используем Administrator для целей данного руководства, вы должны быть максимально детализированы при предоставлении разрешений в реальном приложении.
Выберите Скопируйте рядом с URL-адресом, который был создан для вас, вставьте его в свой браузер и выберите свою гильдию из раскрывающихся опций:
Нажмите Авторизовать , и все готово!
Примечание: Вы можете получить reCAPTCHA, прежде чем двигаться дальше.В таком случае вам нужно будет доказать, что вы человек.
Если вы вернетесь в свою гильдию, то увидите, что бот добавлен:
Таким образом, вы создали:
- Приложение , которое ваш бот будет использовать для аутентификации с помощью API Discord
- Пользователь-бот , который вы будете использовать для взаимодействия с другими пользователями и событиями в вашей гильдии.
- Гильдия , в которой будут активны ваша учетная запись пользователя и ваш пользователь-бот
- Аккаунт Discord , с помощью которого вы создавали все остальное, и который вы будете использовать для взаимодействия со своим ботом.
Теперь вы знаете, как создать бота Discord с помощью портала разработчика.Затем начинается самое интересное: реализация вашего бота на Python!
Как создать бота Discord на Python
Поскольку вы учитесь создавать бота Discord на Python, вы будете использовать discord.py
.
discord.py
— это библиотека Python, которая исчерпывающе реализует API Discord эффективным и питоническим способом. Это включает использование реализации Python Async IO.
Начните с установки discord.py
с pip
:
$ pip install -U discord.ру
Теперь, когда вы установили discord.py
, вы будете использовать его для создания первого подключения к Discord!
Создание подключения к Discord
Первым шагом в реализации вашего пользователя-бота является создание подключения к Discord. С discord.py
вы делаете это, создавая экземпляр Client
:
# bot.py
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
клиент = разлад.Клиент ()
@ client.event
async def on_ready ():
print (f '{client.user} подключился к Discord!')
client.run (ТОКЕН)
Клиент
— это объект, который представляет соединение с Discord. Клиент
обрабатывает события, отслеживает состояние и обычно взаимодействует с API Discord.
Здесь вы создали клиент
и реализовали его обработчик событий on_ready ()
, который обрабатывает событие, когда клиент
установил соединение с Discord и завершил подготовку данных, отправленных Discord, например в качестве состояния входа, данных гильдии и канала и т. д.
Другими словами, on_ready ()
будет вызываться (и ваше сообщение будет напечатано), как только клиент
будет готов к дальнейшим действиям. Подробнее об обработчиках событий вы узнаете позже в этой статье.
Когда вы работаете с секретами, такими как токен Discord, рекомендуется считывать его в свою программу из переменной среды. Использование переменных среды поможет вам:
- Избегайте передачи секретов в систему управления версиями
- Использование разных переменных для сред разработки и производства без изменения кода
Хотя вы можете экспортировать DISCORD_TOKEN = {your-bot-token}
, более простым решением является сохранение .env
на всех машинах, на которых будет выполняться этот код. Это не только проще, поскольку вам не нужно экспортировать
свой токен каждый раз, когда вы очищаете оболочку, но и защищает вас от сохранения ваших секретов в истории оболочки.
Создайте файл с именем .env
в том же каталоге, что и bot.py
:
# .env
DISCORD_TOKEN = {ваш-бот-токен}
Вам необходимо заменить {your-bot-token}
на токен вашего бота, который вы можете получить, вернувшись на страницу Bot на портале разработчика и нажав Копировать в разделе TOKEN :
Оглядываясь назад на бота .py
, вы увидите библиотеку под названием dotenv
. Эта библиотека удобна для работы с файлами .env
. load_dotenv ()
загружает переменные среды из файла .env
в переменные среды вашей оболочки, чтобы вы могли использовать их в своем коде.
Установите dotenv
с трубкой
:
$ pip install -U python-dotenv
Наконец, client.run ()
запускает ваш Client
, используя токен вашего бота.
Теперь, когда вы настроили как bot.py
, так и .env
, вы можете запустить свой код:
$ python bot.py
RealPythonTutorialBot # 9643 подключился к Discord!
Отлично! Ваш клиент
подключился к Discord с помощью токена вашего бота. В следующем разделе вы построите этот Client
, взаимодействуя с другими API Discord.
Взаимодействие с API Discord
Используя Client
, вы получаете доступ к широкому спектру API Discord.
Например, предположим, вы хотите записать на консоль имя и идентификатор гильдии, в которой вы зарегистрировали своего пользователя-бота.
Сначала вам нужно добавить новую переменную среды:
# .env
DISCORD_TOKEN = {ваш-бот-токен}
DISCORD_GUILD = {имя-вашей-гильдии}
Не забывайте, что вам нужно будет заменить два заполнителя на фактические значения:
-
{ваш-бот-токен}
-
{your-guild-name}
Помните, что Discord вызывает on_ready ()
, который вы использовали ранее, после того, как клиент
установил соединение и подготовил данные.Таким образом, вы можете полагаться на данные гильдии, доступные внутри on_ready ()
:
# bot.py
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
ГИЛЬДИЯ = os.getenv ('DISCORD_GUILD')
client = discord.Client ()
@ client.event
async def on_ready ():
для гильдии в client.guilds:
если guild.name == ГИЛЬДИЯ:
перерыв
Распечатать(
f '{client.user} связан со следующей гильдией: \ n'
f '{guild.name} (id: {guild.я бы})'
)
client.run (ТОКЕН)
Здесь вы просмотрели данные гильдии, которые Discord отправил client
, а именно client.guilds
. Затем вы нашли гильдию с совпадающим именем и напечатали отформатированную строку в stdout
.
Примечание: Несмотря на то, что на этом этапе обучения вы можете быть вполне уверены, что ваш бот подключен только к одной гильдии (так что client.guilds [0]
будет проще), важно понимать, что бот Пользователь может быть связан со многими гильдиями.
Следовательно, более надежное решение — пройти через client.guilds
, чтобы найти тот, который вы ищете.
Запустите программу, чтобы увидеть результат:
$ python bot.py
RealPythonTutorialBot # 9643 связан со следующей гильдией:
RealPythonTutorialServer (идентификатор: 571759877328732195)
Отлично! Вы можете увидеть имя своего бота, имя вашего сервера и идентификационный номер сервера.
Еще одна интересная информация, которую вы можете получить из гильдии, — это список пользователей, которые являются членами гильдии:
# бот.ру
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
ГИЛЬДИЯ = os.getenv ('DISCORD_GUILD')
client = discord.Client ()
@ client.event
async def on_ready ():
для гильдии в client.guilds:
если guild.name == ГИЛЬДИЯ:
перерыв
Распечатать(
f '{client.user} связан со следующей гильдией: \ n'
f '{guild.name} (id: {guild.id}) \ n'
)
members = '\ n -' .join ([member.name члена в guild.members])
print (f'Члены гильдии: \ n - {members} ')
клиент.запустить (ТОКЕН)
Перебрав guild.members
, вы вытащили имена всех членов гильдии и напечатали их с форматированной строкой.
Когда вы запустите программу, вы должны увидеть хотя бы имя учетной записи, с которой вы создали гильдию, и имя самого пользователя-бота:
$ python bot.py
RealPythonTutorialBot # 9643 связан со следующей гильдией:
RealPythonTutorialServer (идентификатор: 571759877328732195)
Члены гильдии:
- aronq2
- RealPythonTutorialBot
Эти примеры едва касаются поверхности API, доступных на Discord, обязательно ознакомьтесь с их документацией, чтобы увидеть все, что они могут предложить.
Далее вы узнаете о некоторых служебных функциях и о том, как они могут упростить эти примеры.
Использование служебных функций
Давайте еще раз посмотрим на пример из последнего раздела, где вы напечатали имя и идентификатор гильдии бота:
# bot.py
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
ГИЛЬДИЯ = os.getenv ('DISCORD_GUILD')
client = discord.Client ()
@ client.event
async def on_ready ():
для гильдии в клиенте.гильдии:
если guild.name == ГИЛЬДИЯ:
перерыв
Распечатать(
f '{client.user} связан со следующей гильдией: \ n'
f '{guild.name} (id: {guild.id})'
)
client.run (ТОКЕН)
Вы можете очистить этот код, используя некоторые служебные функции, доступные в discord.py
.
discord.utils.find ()
— это утилита, которая может улучшить простоту и читаемость этого кода, заменив цикл на
интуитивно понятной абстрактной функцией:
# бот.ру
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
ГИЛЬДИЯ = os.getenv ('DISCORD_GUILD')
client = discord.Client ()
@ client.event
async def on_ready ():
guild = discord.utils.find (лямбда g: g.name == ГИЛЬДИЯ, client.guilds)
Распечатать(
f '{client.user} связан со следующей гильдией: \ n'
f '{guild.name} (id: {guild.id})'
)
client.run (ТОКЕН)
find ()
принимает функцию, называемую предикатом , которая определяет некоторые характеристики элемента в итерации, которую вы ищете.Здесь вы использовали в качестве предиката анонимную функцию определенного типа, называемую лямбда.
В этом случае вы пытаетесь найти гильдию с тем же именем, что и та, которую вы сохранили в переменной среды DISCORD_GUILD
. Как только find ()
находит в итерации элемент, удовлетворяющий предикату, он вернет этот элемент. Это по сути эквивалентно оператору break
в предыдущем примере, но более чистое.
раздор.py
даже абстрагировался от этой концепции на один шаг дальше с помощью утилиты get ()
:
# bot.py
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
ГИЛЬДИЯ = os.getenv ('DISCORD_GUILD')
client = discord.Client ()
@ client.event
async def on_ready ():
гильдия = discord.utils.get (client.guilds, имя = ГИЛЬДИЯ)
Распечатать(
f '{client.user} связан со следующей гильдией: \ n'
f '{guild.name} (id: {guild.id})'
)
клиент.запустить (ТОКЕН)
get ()
принимает аргументы итерации и некоторые ключевые слова. Ключевое слово arguments представляет атрибуты элементов в итерируемом объекте, которые должны быть удовлетворены, чтобы функция get ()
возвратила элемент.
В этом примере вы определили name = GUILD
как атрибут, который должен быть удовлетворен.
Технические детали: Под капотом get ()
фактически использует аргументы ключевого слова attrs
для построения предиката, который затем использует для вызова find ()
.
Теперь, когда вы изучили основы взаимодействия с API, вы немного углубитесь в функцию, которую вы использовали для доступа к ним: on_ready ()
.
Ответ на события
Вы уже узнали, что on_ready ()
— это событие. Фактически, вы могли заметить, что он определяется как таковой в коде декоратором client.event
.
Но что такое событие?
Событие — это то, что происходит в Discord, которое вы можете использовать для запуска реакции в вашем коде.Ваш код будет прислушиваться к событиям, а затем реагировать на них.
Используя пример, который вы уже видели, обработчик события on_ready ()
обрабатывает событие, когда клиент
установил соединение с Discord и подготовил данные своего ответа.
Итак, когда Discord запускает событие, discord.py
направляет данные события в соответствующий обработчик событий на вашем подключенном клиенте
.
В файле discord.py
есть два способа реализовать обработчик событий:
- Использование клиента
.событие
декоратор - Создание подкласса
Client
и переопределение его методов обработчика
Вы уже видели реализацию с использованием декоратора. Затем посмотрим, как создать подкласс Client
:
# bot.py
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
класс CustomClient (discord.Client):
async def on_ready (сам):
print (f '{self.user} подключился к Discord!')
client = CustomClient ()
клиент.запустить (ТОКЕН)
Здесь, как и раньше, вы создали клиентскую переменную
и вызвали .run ()
с вашим токеном Discord. Однако реальный клиент
отличается. Вместо использования обычного базового класса клиент
является экземпляром CustomClient
, который имеет переопределенную функцию on_ready ()
.
Нет никакой разницы между двумя стилями реализации событий, но в этом руководстве в первую очередь будет использоваться версия декоратора, потому что она похожа на то, как вы реализуете команды Bot
, и это тема, о которой вы немного расскажете.
Технические детали: Независимо от того, как вы реализуете свой обработчик событий, одно должно быть согласованным: все обработчики событий в файле discord.py
должны быть сопрограммами.
Теперь, когда вы узнали, как создать обработчик событий, давайте рассмотрим несколько различных примеров обработчиков, которые вы можете создать.
Приветствие новых членов
Ранее вы видели пример реакции на событие, когда член присоединяется к гильдии. В этом примере ваш пользователь-бот может отправить им сообщение, приветствуя их в сообществе Discord.
Теперь вы реализуете это поведение в своем Client
, используя обработчики событий, и проверите его поведение в Discord:
# bot.py
импорт ОС
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
client = discord.Client ()
@ client.event
async def on_ready ():
print (f '{client.user.name} подключился к Discord!')
@ client.event
async def on_member_join (член):
ожидание member.create_dm ()
ждите member.dm_channel.Отправить(
f'Привет, {member.name}, добро пожаловать на мой сервер Discord! '
)
client.run (ТОКЕН)
Как и раньше, вы обработали событие on_ready ()
, распечатав имя пользователя-бота в форматированной строке. Новым, однако, является реализация обработчика событий on_member_join ()
.
on_member_join ()
, как следует из названия, обрабатывает событие присоединения нового члена к гильдии.
В этом примере вы использовали member.create_dm ()
для создания канала прямого сообщения.Затем вы использовали этот канал для .send ()
прямого сообщения этому новому участнику.
Технические детали: Обратите внимание на ключевое слово await
перед member.create_dm ()
и member.dm_channel.send ()
.
await
приостанавливает выполнение окружающей сопрограммы до завершения выполнения каждой сопрограммы.
А теперь давайте проверим новое поведение вашего бота.
Сначала запустите новую версию бота .py
и дождитесь запуска события on_ready ()
, записывая ваше сообщение на stdout
:
$ python bot.py
RealPythonTutorialBot подключился к Discord!
Теперь перейдите в Discord, войдите в систему и перейдите к своей гильдии, выбрав ее в левой части экрана:
Выберите Пригласить людей рядом со списком гильдий, в котором вы выбрали свою гильдию. Установите флажок с надписью Установить эту ссылку, чтобы срок ее действия не истекал , и скопируйте ссылку:
Теперь, когда ссылка для приглашения скопирована, создайте новую учетную запись и присоединитесь к гильдии, используя ссылку для приглашения:
Во-первых, вы увидите, что Discord по умолчанию познакомил вас с гильдией с помощью автоматического сообщения.Что еще более важно, обратите внимание на значок в левой части экрана, который уведомляет вас о новом сообщении:
Когда вы выберете его, вы увидите личное сообщение от вашего пользователя-бота:
Отлично! Ваш пользователь-бот теперь взаимодействует с другими пользователями с минимальным кодом.
Далее вы узнаете, как отвечать на определенные сообщения пользователя в чате.
Ответ на сообщения
Давайте расширим предыдущую функциональность вашего бота, обработав событие on_message ()
.
on_message ()
возникает, когда сообщение публикуется в канале, к которому у вашего бота есть доступ. В этом примере вы ответите на сообщение '99! '
с остротой из телешоу Brooklyn Nine-Nine:
@ client.event
async def on_message (сообщение):
если message.author == client.user:
возвращаться
brooklyn_99_quotes = [
'Я человеческая форма 💯 смайлика.',
'Bingpot!',
(
'Прохладный. Круто круто круто круто круто круто '
«без сомнения, без сомнения, без сомнения, без сомнения.'
),
]
если message.content == '99! ':
response = random.choice (brooklyn_99_quotes)
ждите message.channel.send (ответ)
Основная часть этого обработчика событий просматривает message.content
, проверяет, равно ли оно '99! '
, и в ответ отправляет случайную цитату в канал сообщения, если это так.
Другая важная штука:
, если message.author == client.user:
возвращаться
Поскольку клиент
не может отличить пользователя-бота от обычного пользователя, обработчик on_message ()
должен защищать от потенциально рекурсивного случая, когда бот отправляет сообщение, которое он сам может обработать.
Для иллюстрации предположим, что вы хотите, чтобы ваш бот слушал, как пользователи говорят друг другу «С Днем Рождения»
. Вы можете реализовать обработчик on_message ()
следующим образом:
@ client.event
async def on_message (сообщение):
если "с днем рождения" в message.content.lower ():
await message.channel.send ('С Днем Рождения! 🎈🎉')
Помимо потенциально спамовой природы этого обработчика событий, он также имеет разрушительный побочный эффект. Сообщение, которым отвечает бот, содержит то же сообщение, которое он собирается обработать!
Итак, если один человек на канале говорит другому «С Днем Рождения», то бот тоже перезвонит… снова… и снова… и снова:
Вот почему так важно сравнить сообщение .автор
на client.user
(ваш пользователь-бот) и игнорирует любые его собственные сообщения.
Итак, давайте исправим bot.py
:
# bot.py
импорт ОС
случайный импорт
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
client = discord.Client ()
@ client.event
async def on_ready ():
print (f '{client.user.name} подключился к Discord!')
@ client.event
async def on_member_join (член):
ожидание member.create_dm ()
жду члена.dm_channel.send (
f'Привет, {member.name}, добро пожаловать на мой сервер Discord! '
)
@ client.event
async def on_message (сообщение):
если message.author == client.user:
возвращаться
brooklyn_99_quotes = [
'Я человеческая форма 💯 смайлика.',
'Bingpot!',
(
'Прохладный. Круто круто круто круто круто круто '
«без сомнения, без сомнения, без сомнения, без сомнения».
),
]
если message.content == '99! ':
response = random.choice (brooklyn_99_quotes)
жду сообщения.channel.send (ответ)
client.run (ТОКЕН)
Не забудьте указать import random
в верхней части модуля, поскольку обработчик on_message ()
использует random.choice ()
.
Запускаем программу:
$ python bot.py
RealPythonTutorialBot подключился к Discord!
Наконец, зайдите в Discord, чтобы проверить это:
Отлично! Теперь, когда вы увидели несколько различных способов обработки некоторых распространенных событий Discord, вы узнаете, как бороться с ошибками, которые могут вызывать обработчики событий.
Обработка исключений
Как вы уже видели, discord.py
— это система, управляемая событиями. Этот акцент на событиях распространяется даже на исключения. Когда один обработчик событий вызывает Exception
, Discord вызывает on_error ()
.
По умолчанию on_error ()
записывает сообщение об ошибке и трассировку стека на stderr
. Чтобы проверить это, добавьте специальный обработчик сообщений в on_message ()
:
# бот.ру
импорт ОС
случайный импорт
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
client = discord.Client ()
@ client.event
async def on_ready ():
print (f '{client.user.name} подключился к Discord!')
@ client.event
async def on_member_join (член):
ожидание member.create_dm ()
ждать member.dm_channel.send (
f'Привет, {member.name}, добро пожаловать на мой сервер Discord! '
)
@ client.event
async def on_message (сообщение):
если message.author == client.Пользователь:
возвращаться
brooklyn_99_quotes = [
'Я человеческая форма 💯 смайлика.',
'Bingpot!',
(
'Прохладный. Круто круто круто круто круто круто '
«без сомнения, без сомнения, без сомнения, без сомнения».
),
]
если message.content == '99! ':
response = random.choice (brooklyn_99_quotes)
ждите message.channel.send (ответ)
elif message.content == 'поднять исключение':
поднять Discord.DiscordException
client.run (ТОКЕН)
Новый обработчик сообщений raise-exception
позволяет вызывать DiscordException
по команде.
Запустите программу и введите raise-exception
в канал Discord:
Теперь вы должны увидеть Exception
, которое было вызвано вашим обработчиком on_message ()
в консоли:
$ python bot.py
RealPythonTutorialBot подключился к Discord!
Игнорирование исключения в on_message
Отслеживание (последний вызов последний):
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/client.py", строка 255, в _run_event
ждать coro (* args, ** kwargs)
Файл "бот.py ", строка 42, в on_message
поднять Discord.DiscordException
discord.errors.DiscordException
Исключение было перехвачено обработчиком ошибок по умолчанию, поэтому выходные данные содержат сообщение Игнорирование исключения в on_message
. Давайте исправим это, обработав эту конкретную ошибку. Для этого вы перехватите DiscordException
и вместо этого запишете его в файл.
Обработчик события on_error ()
принимает событие
в качестве первого аргумента.В этом случае мы ожидаем, что событие
будет 'on_message'
. Он также принимает * args
и ** kwargs
как гибкие, позиционные и ключевые аргументы, передаваемые исходному обработчику событий.
Итак, поскольку on_message ()
принимает единственный аргумент, сообщение
, мы ожидаем, что args [0]
будет сообщением
, которое пользователь отправил в канал Discord:
@ client.event
async def on_error (событие, * args, ** kwargs):
с открытым ('err.log ',' a ') как f:
если event == 'on_message':
f.write (f'Необработанное сообщение: {args [0]} \ n ')
еще:
поднимать
Если исключение Exception
возникло в обработчике события on_message ()
, вы .write ()
форматируемую строку в файл err.log
. Если другое событие вызывает исключение
, тогда мы просто хотим, чтобы наш обработчик повторно вызвал исключение, чтобы вызвать поведение по умолчанию.
Запуск бота.py
и отправьте сообщение об исключении ошибки
еще раз, чтобы просмотреть вывод в err.log
:
$ cat err.log
Необработанное сообщение: 4084 pinned = False author = >
Вместо только трассировки стека у вас есть более информативная ошибка, показывающая сообщение
, которое заставило on_message ()
вызвать исключение DiscordException
, сохраненное в файл для более длительного хранения.
Технические детали: Если вы хотите принять во внимание фактическое исключение Exception
при записи сообщений об ошибках в err.log
, вы можете использовать функции из sys
, такие как exc_info ()
.
Теперь, когда у вас есть некоторый опыт обработки различных событий и взаимодействия с API Discord, вы узнаете о подклассе Client
под названием Bot
, который реализует некоторые удобные функции, специфичные для ботов.
Подключение бота
A Bot
— это подкласс Client
, который добавляет немного дополнительных функций, которые могут быть полезны при создании пользователей-ботов. Например, Bot
может обрабатывать события и команды, вызывать проверки и многое другое.
Прежде чем перейти к особенностям, характерным для Bot
, преобразуйте bot.py
для использования Bot
вместо клиента
:
# bot.py
импорт ОС
случайный импорт
из dotenv import load_dotenv
# 1
от разлада.команды импорта ext
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
# 2
bot = commands.Bot (command_prefix = '!')
@ bot.event
async def on_ready ():
print (f '{bot.user.name} подключился к Discord!')
bot.run (ТОКЕН)
Как видите, Bot
может обрабатывать события так же, как Client
. Однако обратите внимание на различия между Client
и Bot
:
-
Бот
импортирован с дискаdiscord.ext.Команды
модуль. - Для инициализатора
Bot
требуетсяcommand_prefix
, о котором вы узнаете больше в следующем разделе.
Библиотека расширений ext
предлагает несколько интересных компонентов, которые помогут вам создать Discord Bot
. Одним из таких компонентов является команда Command
.
Использование бота
КомандыВ общих чертах, команда — это приказ, который пользователь дает боту, чтобы он что-то сделал.Команды отличаются от событий, потому что они:
- Произвольно определено
- Вызывается пользователем напрямую
- Гибкие с точки зрения интерфейса
С технической точки зрения, Command
— это объект, заключающий в себе функцию, которая вызывается текстовой командой в Discord. Текстовая команда должна начинаться с префикса_команды
, определенного объектом Bot
.
Давайте посмотрим на старое событие, чтобы лучше понять, как оно выглядит:
# бот.ру
импорт ОС
случайный импорт
вносить разлад
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
client = discord.Client ()
@ client.event
async def on_message (сообщение):
если message.author == client.user:
возвращаться
brooklyn_99_quotes = [
'Я человеческая форма 💯 смайлика.',
'Bingpot!',
(
'Прохладный. Круто круто круто круто круто круто '
«без сомнения, без сомнения, без сомнения, без сомнения».
),
]
если message.content == '99! ':
ответ = случайный.выбор (brooklyn_99_quotes)
ждите message.channel.send (ответ)
client.run (ТОКЕН)
Здесь вы создали обработчик события on_message ()
, который получает строку сообщения
и сравнивает ее с предопределенной опцией: '99! '
.
Используя команду
, вы можете преобразовать этот пример в более конкретный:
# bot.py
импорт ОС
случайный импорт
из команд импорта discord.ext
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
bot = commands.Bot (command_prefix = '!')
@ bot.command (имя = '99 ')
async def nine_nine (ctx):
brooklyn_99_quotes = [
'Я человеческая форма 💯 смайлика.',
'Bingpot!',
(
'Прохладный. Круто круто круто круто круто круто '
«без сомнения, без сомнения, без сомнения, без сомнения».
),
]
response = random.choice (brooklyn_99_quotes)
ждать ctx.send (ответ)
bot.run (ТОКЕН)
Есть несколько важных характеристик, которые следует понимать при использовании команды
:
Вместо использования бота
.событие
, как и раньше, вы используетеbot.command ()
, передавая команду вызова (имя
) в качестве аргумента.Функция теперь будет вызываться только при упоминании в чате
! 99
. Это отличается от событияon_message ()
, которое запускалось каждый раз, когда пользователь отправлял сообщение, независимо от содержимого.Команда должна начинаться с восклицательного знака (
!
), потому что этоcommand_prefix
, который вы определили в инициализаторе для вашегоBot
.Любая функция
Command
(технически называемая обратным вызовомctx
, который является контекстомContext
, окружающим вызванную командуCommand
.
A Контекст
содержит такие данные, как канал и гильдия, из которых пользователь вызвал команду
.
Запускаем программу:
Теперь, когда ваш бот запущен, вы можете перейти в Discord, чтобы опробовать свою новую команду:
С точки зрения пользователя, практическое отличие состоит в том, что префикс помогает формализовать команду, а не просто реагировать на конкретное событие on_message ()
.
Это дает и другие большие преимущества. Например, вы можете вызвать команду ! Help
, чтобы увидеть все команды, которые обрабатывает ваш Bot
:
Если вы хотите добавить описание к своей команде, чтобы сообщение help
было более информативным, просто передайте описание help
в декоратор .command ()
:
# bot.py
импорт ОС
случайный импорт
из команд импорта discord.ext
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
bot = commands.Bot (command_prefix = '!')
@ bot.command (name = '99 ', help =' Отвечает случайной цитатой из Бруклина 99 ')
async def nine_nine (ctx):
brooklyn_99_quotes = [
'Я человеческая форма 💯 смайлика.',
'Bingpot!',
(
'Прохладный. Круто круто круто круто круто круто '
«без сомнения, без сомнения, без сомнения, без сомнения».
),
]
response = random.choice (brooklyn_99_quotes)
ждать ctx.send (ответ)
bot.run (ТОКЕН)
Теперь, когда пользователь вызывает команду ! Help
, ваш бот представит описание вашей команды:
Имейте в виду, что все эти функции существуют только для подкласса Bot
, а не суперкласса Client
.
Команда
имеет еще одну полезную функцию: возможность использовать преобразователь Converter
для изменения типов своих аргументов.
Автоматическое преобразование параметров
Еще одно преимущество использования команд — это возможность преобразовывать параметров.
Иногда требуется, чтобы параметр был определенного типа, но аргументы функции Command
по умолчанию являются строками. Преобразователь Converter
позволяет преобразовать эти параметры в ожидаемый тип.
Например, если вы хотите создать команду
для вашего пользователя-бота, чтобы имитировать бросание кубиков (зная, что вы уже узнали), вы можете определить ее так:
@ bot.command (name = 'roll_dice', help = 'Имитирует бросание игральных костей.')
async def roll (ctx, number_of_dice, number_of_sides):
игральные кости = [
str (random.choice (диапазон (1, число_сторон + 1)))
для _ в диапазоне (число_кости)
]
ожидание ctx.send (',' .join (игральные кости))
Вы определили roll
для получения двух параметров:
- Количество бросаемых кубиков
- Количество граней на матрицу
Затем вы украсили его .command ()
, чтобы вы могли вызвать его с помощью команды ! roll_dice
. Наконец, вы .send ()
результаты в сообщении обратно на канал
.
Хотя это выглядит правильным, это не так. К сожалению, если вы запустите bot.py
и вызовете команду ! Roll_dice
в своем канале Discord, вы увидите следующую ошибку:
$ python bot.py
Игнорирование исключения в команде roll_dice:
Отслеживание (последний вызов последний):
Файл "/ Пользователи / alex.ronquillo / .pyenv / versions / discord-venv / lib / python3.7 / site-packages / discord / ext / commands / core.py ", строка 63, в упаковке
ret = ждать coro (* аргументы, ** kwargs)
Файл "bot.py", строка 40, в рулоне
для _ в диапазоне (число_кости)
TypeError: объект 'str' нельзя интерпретировать как целое число
Вышеупомянутое исключение явилось прямой причиной следующего исключения:
Отслеживание (последний вызов последний):
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/ext/commands/bot.py ", строка 860, в invoke
ждать ctx.command.invoke (ctx)
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/ext/commands/core.py", строка 698, в вызове
ожидание введено (* ctx.args, ** ctx.kwargs)
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/ext/commands/core.py", строка 72, в оболочке
поднять CommandInvokeError (exc) из exc
discord.ext.commands.errors.CommandInvokeError: команда вызвала исключение: TypeError: объект 'str' не может быть интерпретирован как целое число
Другими словами, range ()
не может принимать str
в качестве аргумента.Вместо этого это должно быть int
. Хотя вы можете преобразовать каждое значение в int
, есть способ лучше: вы можете использовать преобразователь Converter
.
В файле discord.py
преобразователь Converter
определен с использованием аннотаций функций Python 3:
@ bot.command (name = 'roll_dice', help = 'Имитирует бросание игральных костей.')
async def roll (ctx, number_of_dice: int, number_of_sides: int):
игральные кости = [
str (random.choice (диапазон (1, число_сторон + 1)))
для _ в диапазоне (число_кости)
]
ждать ctx.send (',' .join (игра в кости))
Вы добавили аннотации : int
к двум параметрам, которые должны иметь тип int
. Повторите команду еще раз:
С этим небольшим изменением ваша команда работает! Разница в том, что теперь вы конвертируете аргументы команды в int
, что делает их совместимыми с логикой вашей функции.
Примечание: Преобразователь
может иметь любой вызываемый тип, а не только типы данных. Аргумент будет передан вызываемому объекту, а возвращаемое значение будет передано команде
.
Далее вы узнаете об объекте Проверить
и о том, как он может улучшить ваши команды.
Проверка командных предикатов
A Check
— это предикат, который оценивается перед выполнением команды
, чтобы убедиться, что контекст Context
, окружающий вызов команды
, действителен.
В предыдущем примере вы сделали что-то подобное, чтобы убедиться, что пользователь, отправивший сообщение, которое обрабатывает бот, сам не является пользователем-ботом:
если сообщение.автор == client.user:
возвращаться
Команды Расширение
обеспечивает более чистый и удобный механизм для выполнения этого вида проверки, а именно использование объектов Check
.
Чтобы продемонстрировать, как это работает, предположим, что вы хотите поддерживать команду ! Create-channel
, которая создает новый канал. Однако вы хотите разрешить администраторам только создавать новые каналы с помощью этой команды.
Во-первых, вам нужно создать новую роль участника в админке.Войдите в гильдию Discord и выберите {Имя сервера} → Настройки сервера меню:
Затем выберите Роли в левом списке навигации:
Наконец, выберите знак + рядом с РОЛИ и введите имя admin
и выберите Сохранить изменения :
Итак, вы создали роль администратора ,
, которую можно назначить определенным пользователям. Затем вы обновите bot.py
до . Проверьте
роль пользователя, прежде чем разрешить ему инициировать команду:
# бот.ру
импорт ОС
вносить разлад
из команд импорта discord.ext
из dotenv import load_dotenv
load_dotenv ()
ТОКЕН = os.getenv ('DISCORD_TOKEN')
bot = commands.Bot (command_prefix = '!')
@ bot.command (имя = 'создать-канал')
@ commands.has_role ('админ')
async def create_channel (ctx, channel_name = 'real-python'):
guild = ctx.guild
existing_channel = discord.utils.get (guild.channels, name = имя_канала)
если не существует_канал:
print (f'Создание нового канала: {channel_name} ')
жду гильдию.create_text_channel (имя_канала)
bot.run (ТОКЕН)
В bot.py
у вас есть новая функция Command
с именем create_channel ()
, которая принимает необязательное channel_name
и создает этот канал. create_channel ()
также украшен проверкой Check
с именем has_role ()
.
Вы также используете discord.utils.get ()
, чтобы не создавать канал с тем же именем, что и у существующего канала.
Если вы запустите эту программу как она есть и введите ! Create-channel
в свой канал Discord, вы увидите следующее сообщение об ошибке:
$ python bot.py
Игнорирование исключения в команде create-channel:
Отслеживание (последний вызов последний):
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/ext/commands/bot.py", строка 860, в вызове
ждать ctx.command.invoke (ctx)
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7 / site-packages / discord / ext / commands / core.py ", строка 691, в invoke
ждать self.prepare (ctx)
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/ext/commands/core.py", строка 648, готовится
ждать self._verify_checks (ctx)
Файл "/Users/alex.ronquillo/.pyenv/versions/discord-venv/lib/python3.7/site-packages/discord/ext/commands/core.py", строка 598, в _verify_checks
Raise CheckFailure ('Функция проверки для команды {0.qualified_name} завершилась неудачно.'. format (self))
разлад.ext.commands.errors.CheckFailure: не удалось выполнить функции проверки для команды create-channel.
Этот CheckFailure
говорит, что has_role ('admin')
не прошел. К сожалению, эта ошибка выводится только на stdout
. Лучше бы сообщить об этом пользователю в канале. Для этого добавьте следующее событие:
@ bot.event
async def on_command_error (ctx, ошибка):
если isinstance (ошибка, commands.errors.CheckFailure):
await ctx.send ('У вас нет правильной роли для этой команды.')
Это событие обрабатывает событие ошибки от команды и отправляет информативное сообщение об ошибке обратно в исходный контекст
вызванной команды
.
Попробуйте все еще раз, и вы должны увидеть ошибку в канале Discord:
Отлично! Теперь, чтобы решить эту проблему, вам нужно назначить себе роль администратора и :
. С ролью admin ваш пользователь пройдет проверку
и сможет создавать каналы с помощью команды.
Примечание: Имейте в виду, что для назначения роли ваш пользователь должен иметь правильные разрешения. Самый простой способ убедиться в этом — войти в систему под пользователем, с которым вы создали гильдию.
Когда вы снова наберете ! Create-channel
, вы успешно создадите канал real-python :
Также обратите внимание, что вы можете передать необязательный аргумент channel_name
, чтобы присвоить каналу любое имя!
В этом последнем примере вы объединили команду
, событие, Check
и даже утилиту get ()
, чтобы создать полезного бота Discord!
Заключение
Поздравляем! Теперь вы узнали, как создать бота Discord на Python.Вы можете создавать ботов для взаимодействия с пользователями в гильдиях, которые вы создаете, или даже ботов, которых другие пользователи могут приглашать для взаимодействия со своими сообществами. Ваши боты смогут отвечать на сообщения и команды, а также на множество других событий.
В этом уроке вы узнали основы создания собственного бота Discord. Теперь вы знаете:
- Что такое Discord
- Почему
discord.py
так ценен - Как сделать бота Discord на портале разработчиков
- Как создать соединение Discord в Python
- Как обрабатывать события
- Как создать соединение
Bot
- Как использовать команды, проверки и конвертеры бота
Чтобы узнать больше о мощном Discord .py
и выведите своих ботов на новый уровень, ознакомившись с их обширной документацией. Кроме того, теперь, когда вы знакомы с API Discord в целом, у вас есть лучшая основа для создания других типов приложений Discord.
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Создание бота Discord на Python
ботов в Microsoft Teams — Команды
- 2 минуты на чтение
В этой статье
Бот, также называемый чат-ботом или диалоговым ботом, — это приложение, которое выполняет простые и повторяющиеся автоматизированные задачи, выполняемые пользователями, например службой поддержки клиентов или службой поддержки.Примеры ботов в повседневном использовании включают ботов, которые предоставляют информацию о погоде, бронируют столики на ужин или предоставляют информацию о поездках. Взаимодействие с ботом может быть быстрым вопросом и ответом или сложным разговором, обеспечивающим доступ к службам.
Разговорные боты позволяют пользователям взаимодействовать с вашим веб-сервисом с помощью текста, интерактивных карточек и модулей задач.
Разговорные боты невероятно гибки и могут быть адаптированы для обработки нескольких простых команд или сложных задач на основе искусственного интеллекта и обработки естественного языка.Они могут быть одним из аспектов более крупного приложения или быть полностью автономными.
Поиск правильного сочетания карточек, текста и модулей задач — ключ к созданию полезного бота. На следующем изображении показан пользователь, разговаривающий с ботом в чате один на один, используя как текстовые, так и интерактивные карточки:
Каждое взаимодействие между пользователем и ботом представлено как действие. Когда бот получает действие, он передает его своим обработчикам действий. Дополнительные сведения см. В разделе «Обработчики активности ботов».
Кроме того, боты — это приложения с диалоговым интерфейсом. Вы можете взаимодействовать с ботом с помощью текста, интерактивных карточек и речи. Бот ведет себя по-разному в зависимости от того, является ли беседа канальным или групповым чатом или беседой один на один. Разговоры обрабатываются через соединитель Bot Framework. Для получения дополнительной информации см. Основы разговора.
Вашему боту требуется контекстная информация, такая как данные профиля пользователя, для доступа к соответствующему контенту и улучшения взаимодействия с ботом.Дополнительные сведения см. В разделе получить контекст команд.
Вы также можете отправлять и получать файлы через бота, используя API-интерфейсы Graph или API-интерфейсы ботов Teams. Дополнительные сведения см. В разделе отправка и получение файлов через бота.
Кроме того, ограничение скорости используется для оптимизации ботов, используемых в вашем приложении Teams. Чтобы защитить Microsoft Teams и ее пользователей, API-интерфейсы ботов предоставляют ограничение скорости для входящих запросов. В разделе Оптимизация бота с ограничением скорости в Teams.
Благодаря API-интерфейсам Microsoft Graph для звонков и онлайн-собраний приложения Microsoft Teams теперь могут взаимодействовать с пользователями с помощью голоса и видео.Для получения дополнительной информации см. Боты для звонков и встреч.
Вы можете использовать API-интерфейсы ботов Teams для получения информации для одного или нескольких участников чата или команды. В статье об изменениях API-интерфейсов ботов Teams для получения членов команды или чата.
См. Также
Создать бота для команд
Следующий шаг
Позвоните по телефону с помощью специального бота для Google Chat
Обновите календарь и автоответчик, отправив одно сообщение своему настраиваемому боту.
Последнее обновление: август 2019 г.
Когда вы просыпаетесь с плохим самочувствием, последнее, что вам нужно сделать, это войти в рабочий аккаунт и обновите свой статус в нескольких приложениях. С этим решение, вы просто отправляете сообщение «Я болен» настраиваемому боту в Google Чат, и он включит ваше сообщение об отсутствии на работе в Gmail и заблокирует ваш день в Google Календаре.
Основные характеристики
- Использует Google Chat API для создания чат-бота, которого вы может отправлять сообщения так же, как участник-человек.
- Бот реализован с использованием Apps Script, что позволяет быстро разработка и бесперебойная работа.
- Использует API Gmail для настройки отсутствия пользователя на рабочем месте. автоответчик.
- Блокирует календарь пользователя с помощью Calendar API.
Попробовать
Сначала создайте сценарий:
- Щелкните здесь, чтобы открыть код бота в редакторе кода скрипта приложений.
- Щелкните пункт меню Файл> Создать копию , чтобы получить собственную копию.Ты можешь позже получите доступ к этой копии в Центре разработчиков Google Workspace.
Затем создайте проект Google Cloud для использования с ним:
- Создайте новый проект в консоли разработчика Google Cloud. Назовите его «Call in Sick», выберите расчетный счет , если будет предложено, и нажмите СОЗДАТЬ . Более подробную информацию о том, как настроить биллинг, можно найти здесь.
- Когда создание проекта будет завершено, в в правом верхнем углу страницы. Щелкните Create Project: Call in Sick открыть проект.
- Откройте экран согласия OAuth. Страница настроек для проект.
- В поле Имя приложения введите «Attendance Bot» и нажмите кнопку Сохранить кнопку внизу.
- Откройте страницу Gmail API в библиотеке API и нажмите кнопку ENABLE .
- Откройте страницу Project settings для проекта.
- Скопируйте значение, указанное в Номер проекта .
Затем настройте свой сценарий для использования нового проекта и разверните его:
- Вернитесь в редактор кода скрипта приложений Google Apps, щелкните пункт меню Ресурсы> Проект Cloud Platform .
- Введите номер проекта в текстовое поле и щелкните Set Project . Когда После запроса нажмите Подтвердить .
- По завершении нажмите кнопку Close или X , чтобы закрыть диалог.
- Щелкните пункт меню Опубликовать> Развернуть из манифеста .
- Рядом с записью Последняя версия (Голова) нажмите Получить идентификатор .
- Выберите и скопируйте значение Deployment ID .
- Закройте диалоговое окно и окно Deployments .
Затем настройте Google Chat API для создания своего бота:
- Вернувшись в консоль Google Cloud Developers, откройте Google Chat API в библиотеке API и щелкните Кнопка ВКЛЮЧИТЬ .
- После включения API щелкните вкладку Configuration .
- На вкладке Configuration сделайте следующее:
- В поле Имя бота введите «Бот посещаемости».
- В поле URL-адрес аватара введите
https: // goo.Гл / кв2ЕНА
. - В поле Описание введите «Позвонить в больницу с помощью бота».
- В разделе Функциональность выберите Бот работает в личных сообщениях .
- В разделе Параметры подключения выберите проект Apps Script и вставьте ID развертывания вашего сценария в текстовое поле.
- В разделе Разрешения выберите Конкретных людей и группу в своем домен . В текстовом поле под раскрывающимся меню введите свой адрес электронной почты. адрес.
- Щелкните Сохранить изменения.
- После сохранения изменений убедитесь, что статус в Google Chat API На странице отображается статус бота LIVE — доступно пользователям .
Наконец, проверьте, что ваш бот работает:
- Откройте Google Chat.
- Нажмите Найдите людей, комнаты, ботов> Отправить сообщение боту .
- Из списка выберите созданного вами Attendance Bot .
- Отправить боту сообщение «Я болею».
- Нажмите кнопку КОНФИГУРИРОВАТЬ и авторизуйте доступ к своей учетной записи.
- В открывшейся карточке нажмите УСТАНОВИТЬ ОТПУСК В GMAIL и ЗАБЛОКИРОВАТЬ ДЕНЬ В КАЛЕНДАРЕ кнопок.
Следующие шаги
Чтобы узнать больше о том, как был создан бот, следуйте этой кодовой таблице для подробные инструкции по каждому этапу процесса. Вы также можете просмотреть полный исходный код этого решения на GitHub, если вы хотите сразу перейти к концу.
Обратная связь
Удалось ли вам запустить решение?
Если у вас есть идея другого решения, которое вы хотели бы увидеть в нашем галерея отправить заявку на Система отслеживания проблем GitHub.
Создание ботов — Документация — Facebook для разработчиков
Боты в чате
В то время как в группах боты могут асинхронно потреблять и обмениваться информацией в группе людей, боты в чате лучше всего подходят для прямого взаимодействия в реальном времени с одним человеком или определенная группа людей.
Например, чат-бот может использоваться для отправки кому-либо важных напоминаний или уведомлений о предстоящем событии, таком как интервью или встреча. Рабочие чат-боты также могут использоваться для общения с пользователем и выполнения последующих действий на основе полученных отзывов.
Эта модель взаимодействия основана на тех же концепциях, которые используются в платформе обмена сообщениями. В результате рабочие чат-боты могут использовать такие функции, как постоянное меню, быстрые ответы и шаблоны, чтобы улучшить взаимодействие с пользователем.
Бот может отвечать только на ветку чата, участником которой является бот (чат 1-1 или чаты групп). Кроме того, у бота должно быть разрешение Сообщение любому участнику .
Чат между ботами
Если бот имеет разрешение «Сообщение любому участнику », ему будет разрешено отправлять прямое сообщение любому человеку на рабочем месте через его адрес электронной почты или идентификатор рабочего места через API отправки сообщений.
Бот в новом сообщении typeahead
Разрешение Message Any Member также позволяет вашему боту появляться в заголовках в рабочих поверхностях чата.
Бот в новом сообщении с типом вперед
Подписавшись на веб-перехватчики Page Message, ваш бот также будет получать уведомления, когда пользователь отправляет сообщение вашему боту, и вы можете создать поток беседы, комбинируя отправку и получение.
Беседа между ботами и пользователями
Чат между ботами и группами
Боты также могут создавать, управлять и добавлять в потоки группового чата с несколькими людьми.Боты могут создавать новые групповые цепочки, указав список получателей, и могут переименовывать цепочки, чтобы создавать обсуждения в чате на определенные темы с определенными людьми.
Именованная ветка с конкретными людьми, созданная ботом.
Включение ботов для групповых чатов
Чтобы разрешить боту создавать групповые чаты с пользователями Workplace, откройте панель разрешений в диалоговом окне Edit Custom Integration и установите флажок Разрешить этой интеграции работать в групповых чатах .
Включение настраиваемого бота интеграции для поддержки группового чата.
При включении поддержки группового чата ваш бот будет отображаться в заголовках Добавить людей в существующей цепочке группового чата. Затем он будет получать веб-перехватчики для каждого сообщения, отправленного людьми в этом потоке, и может отвечать на этот поток, используя свой идентификатор потока
.
Добавление бота в групповой чат, затем @-упоминание бота
Создание новых именованных потоков
Чтобы создать новый поток с определенными получателями, сделайте запрос POST
к конечной точке / me / messages
, указав массив из идентификаторов получателей
и исходной полезной нагрузки сообщения
следующим образом:
POST / me / messages { "получатель": { "идентификаторы": [] }, "message": }
Вы получите ответную полезную нагрузку, которая включает поток с идентификатором
, который вы можете использовать для последующих сообщений.
Если вы снова используете ту же конечную точку с тем же списком получателей, будет создан новый поток. Чтобы отправить последующие сообщения в уже созданный поток, сделайте запрос POST
к конечной точке / me / messages, используя thread_id
в полезной нагрузке получателя , как показано ниже:
POST / me / messages { "получатель": { "thread_key":}, "message": }
Чтобы переименовать поток, созданный вашим ботом, сделайте запрос POST
к ребру / {thread} / threadname
следующим образом:
POST / t_/ имя потока { "имя": "новое имя" }
Обратите внимание на необходимость префикса thread_id
с " t_
" в пути ребра.
Вы также можете получить список участников потока, выполнив GET-запросы на ребре / {thread} /? Fields = members
, как показано ниже:
GET / t_/? Fields = members
Вы также можете добавлять и удалять участников из потоков, отправив запросы POST
или DELETE
на границу / {thread} / members
следующим образом:
POST t_/ участники { "кому": [ ] } УДАЛИТЬ t_ / участников { "кому": [ ] }
Карма-бот для Slack
Дата вступления в силу: 30 мая 2018 г.
Sliday Limited («нас», «мы» или «наш») управляет http: // karmabot.веб-сайт чата («Сервис»).
Эта страница информирует вас о нашей политике в отношении сбора, использования и раскрытия личных данных при использовании нашего Сервиса, а также о вариантах, которые вы связали с этими данными.
Мы используем ваши данные для предоставления и улучшения Сервиса. Используя Сервис, вы соглашаетесь на сбор и использование информации в соответствии с этой политикой. Если иное не определено в настоящей Политике конфиденциальности, термины, используемые в настоящей Политике конфиденциальности, имеют то же значение, что и в наших Положениях и условиях, доступных по адресу http: // karmabot.чат
Определения
Служба
Служба - это веб-сайт http://karmabot.chat, управляемый Sliday Limited
Личные данные
Личные данные означают данные о живом человеке, которого можно идентифицировать из этих данных (или из той и другой информации, которая находится в нашем распоряжении или может стать нашей).
Данные об использовании
Данные об использовании - это данные, автоматически собранные либо в результате использования Сервиса, либо из самой инфраструктуры Сервиса (например, продолжительность посещения страницы).
Файлы cookie
Файлы cookie - это небольшие фрагменты данных, хранящиеся на вашем устройстве (компьютере или мобильном устройстве).
Контроллер данных
Контроллер данных означает физическое или юридическое лицо, которое (самостоятельно, совместно или совместно с другими лицами) определяет цели, для которых и каким образом любая личная информация используется или должна быть , обработанный.
Для целей настоящей Политики конфиденциальности мы являемся Контролером ваших Персональных данных.
Обработчики данных (или поставщики услуг)
Обработчик данных (или поставщик услуг) означает любое физическое или юридическое лицо, которое обрабатывает данные от имени Контроллера данных.
Мы можем использовать услуги различных поставщиков услуг для более эффективной обработки ваших данных.
Субъект данных (или пользователь)
Субъектом данных является любое живое лицо, которое использует наш Сервис и является субъектом Персональных данных.
Сбор и использование информации
Мы собираем несколько различных типов информации для различных целей, чтобы предоставлять вам и улучшать наш Сервис.
Типы собираемых данных
Персональные данные
При использовании нашего Сервиса мы можем попросить вас предоставить нам определенную личную информацию, которая может быть использована для связи или идентификации вас («Личные данные»). Личная информация может включать, но не ограничивается:
- Адрес электронной почты
- Имя и фамилия
- Файлы cookie и данные об использовании
Мы можем использовать ваши Личные данные для связи с вами с помощью информационных бюллетеней, маркетинговых или рекламных материалов и другая информация, которая может вас заинтересовать.Вы можете отказаться от получения каких-либо или всех этих сообщений от нас, перейдя по ссылке для отказа от подписки или инструкциям, содержащимся в любом электронном письме, которое мы отправляем, или связавшись с нами.
Данные об использовании
Мы также можем собирать информацию о том, как осуществляется доступ к Услуге и как она используется («Данные об использовании»). Эти данные об использовании могут включать такую информацию, как адрес интернет-протокола вашего компьютера (например, IP-адрес), тип браузера, версия браузера, страницы нашего Сервиса, которые вы посещаете, время и дата вашего посещения, время, проведенное на этих страницах, уникальные идентификаторы устройств и другие диагностические данные.
Отслеживание и данные файлов cookie
Мы используем файлы cookie и аналогичные технологии отслеживания для отслеживания активности в нашем Сервисе и хранения определенной информации.
Файлы cookie - это файлы с небольшим объемом данных, которые могут включать анонимный уникальный идентификатор. Файлы cookie отправляются в ваш браузер с веб-сайта и хранятся на вашем устройстве. Также используются технологии отслеживания: маяки, теги и скрипты для сбора и отслеживания информации, а также для улучшения и анализа нашего Сервиса.
Вы можете указать своему браузеру отказаться от всех файлов cookie или указать, когда они отправляются.Однако, если вы не принимаете файлы cookie, вы не сможете использовать некоторые части нашего Сервиса.
Примеры файлов cookie, которые мы используем:
- Файлы cookie сеанса. Мы используем файлы cookie сеанса для работы нашего Сервиса.
- Файлы cookie предпочтений. Мы используем файлы cookie предпочтений, чтобы запомнить ваши предпочтения и различные настройки.
- Файлы cookie безопасности. Мы используем файлы cookie безопасности в целях безопасности.
Использование данных
Sliday Limited использует собранные данные для различных целей:
- Для предоставления и обслуживания нашего Сервиса
- Для уведомления вас об изменениях в нашем Сервисе
- Чтобы вы могли участвовать в интерактивных функциях нашего Сервиса когда вы решите это сделать
- Для обеспечения поддержки клиентов
- Для сбора анализа или ценной информации, чтобы мы могли улучшить наш Сервис
- Для мониторинга использования нашего Сервиса
- Для обнаружения, предотвращения и решения технических проблем
- Для предоставления вам с новостями, специальными предложениями и общей информацией о других товарах, услугах и событиях, которые мы предлагаем, которые аналогичны тем, которые вы уже приобрели или о которых запрашивали, если вы не отказались от получения такой информации
Правовая основа для обработки персональных данных В соответствии с Общим регламентом по защите данных (GDPR)
Если вы из Европейского экономического сообщества A rea (EEA), Sliday Limited Правовая основа для сбора и использования личной информации, описанной в настоящей Политике конфиденциальности, зависит от личных данных, которые мы собираем, и конкретного контекста, в котором мы их собираем.
Sliday Limited может обрабатывать ваши Персональные данные, потому что:
- Нам необходимо выполнить договор с вами
- Вы дали нам на это разрешение
- Обработка находится в наших законных интересах и не нарушается вашими правами
- Для обработки платежей
- В соответствии с законом
Хранение данных
Sliday Limited будет хранить ваши Персональные данные только до тех пор, пока это необходимо для целей, изложенных в настоящей Политике конфиденциальности.Мы будем хранить и использовать ваши Персональные данные в той мере, в какой это необходимо для соблюдения наших юридических обязательств (например, если от нас требуется хранить ваши данные в соответствии с действующим законодательством), для разрешения споров и обеспечения соблюдения наших юридических соглашений и политик.
Sliday Limited также будет хранить Данные об использовании для целей внутреннего анализа. Данные об использовании обычно хранятся в течение более короткого периода времени, за исключением случаев, когда эти данные используются для усиления безопасности или улучшения функциональности нашего Сервиса, или когда мы юридически обязаны хранить эти данные в течение более длительных периодов времени.
Передача данных
Ваша информация, включая Персональные данные, может передаваться и храниться на компьютерах, расположенных за пределами вашего штата, провинции, страны или другой государственной юрисдикции, где законы о защите данных могут отличаться от законов вашей юрисдикции.
Если вы находитесь за пределами Новой Зеландии и решили предоставить нам информацию, обратите внимание, что мы передаем данные, включая Персональные данные, в Новую Зеландию и обрабатываем их там.
Ваше согласие с настоящей Политикой конфиденциальности, за которым следует предоставление такой информации, означает ваше согласие на такую передачу.
Sliday Limited предпримет все разумно необходимые шаги для обеспечения безопасного обращения с вашими данными в соответствии с настоящей Политикой конфиденциальности, и никакая передача ваших Персональных данных не будет происходить в организацию или страну, если не будет обеспечен надлежащий контроль, включая безопасность ваших данных и другой личной информации.
Раскрытие данных
Раскрытие для правоохранительных органов
При определенных обстоятельствах от Sliday Limited может потребоваться раскрыть ваши Персональные данные, если это требуется по закону или в ответ на действительные запросы государственных органов (например,грамм. суд или государственное учреждение).
Юридические требования
Sliday Limited может раскрыть ваши Персональные данные, если добросовестно полагает, что такие действия необходимы для:
- Для выполнения юридического обязательства
- Для защиты прав или собственности Sliday Limited
- Чтобы предотвращать или расследовать возможные правонарушения в связи с Сервисом
- Для защиты личной безопасности пользователей Сервиса или общественности
- Для защиты от юридической ответственности
Безопасность данных
Безопасность ваших данных важна для нас, но помните, что ни один метод передачи через Интернет или метод электронного хранения не является на 100% безопасным.Хотя мы стремимся использовать коммерчески приемлемые средства для защиты ваших Персональных данных, мы не можем гарантировать их абсолютную безопасность.
Сигналы «Не отслеживать»
Мы не поддерживаем «Не отслеживать» («DNT»). Не отслеживать - это параметр, который вы можете установить в своем веб-браузере, чтобы информировать веб-сайты о том, что вы не хотите, чтобы вас отслеживали.
Вы можете включить или отключить функцию «Не отслеживать», посетив страницу «Настройки» или «Настройки» в своем браузере.
Ваши права на защиту данных в соответствии с Общим регламентом защиты данных (GDPR)
Если вы являетесь резидентом Европейской экономической зоны (ЕЭЗ), у вас есть определенные права на защиту данных.Sliday Limited стремится принять разумные меры, чтобы позволить вам исправить, изменить, удалить или ограничить использование ваших Персональных данных.
Если вы хотите получать информацию о ваших Персональных данных, которые мы храним, и если вы хотите, чтобы они были удалены из наших систем, свяжитесь с нами.
При определенных обстоятельствах у вас есть следующие права на защиту данных:
Право на доступ, обновление или удаление имеющейся у нас информации о вас. По возможности, вы можете получить доступ, обновить или запросить удаление ваших Персональных данных прямо в разделе настроек вашей учетной записи.Если вы не можете выполнить эти действия самостоятельно, свяжитесь с нами, чтобы мы вам помогли.
Право исправления. У вас есть право на исправление вашей информации, если она является неточной или неполной.
Право на возражение. Вы имеете право возражать против обработки нами ваших Персональных данных.
Право ограничения. Вы имеете право потребовать, чтобы мы ограничили обработку вашей личной информации.
Право на переносимость данных. Вы имеете право на получение копии имеющейся у нас информации о вас в структурированном, машиночитаемом и широко используемом формате.
Право на отзыв согласия. Вы также имеете право отозвать свое согласие в любое время, когда Sliday Limited полагалась на ваше согласие на обработку вашей личной информации.
Обратите внимание, что мы можем попросить вас подтвердить вашу личность, прежде чем отвечать на такие запросы.
Вы имеете право подать жалобу в орган по защите данных на сбор и использование нами ваших личных данных. Для получения дополнительной информации обратитесь в местный орган по защите данных в Европейской экономической зоне (ЕЭЗ).
Поставщики услуг
Мы можем нанимать сторонние компании и частных лиц для содействия нашему Сервису («Поставщики услуг»), для предоставления Сервиса от нашего имени, для оказания услуг, связанных с Сервисом, или для помощи нам в анализе того, как используется наш Сервис. .
Эти третьи стороны имеют доступ к вашим Персональным данным только для выполнения этих задач от нашего имени и обязаны не раскрывать и не использовать их для каких-либо других целей.
Аналитика
Мы можем использовать сторонних поставщиков услуг для мониторинга и анализа использования нашего Сервиса.
Google Analytics
Google Analytics - это служба веб-аналитики, предлагаемая Google, которая отслеживает и сообщает о посещаемости веб-сайтов. Google использует собранные данные для отслеживания и контроля использования нашего Сервиса.Эти данные передаются другим сервисам Google. Google может использовать собранные данные для контекстуализации и персонализации рекламы своей собственной рекламной сети.
Вы можете отказаться от того, чтобы ваши действия в Сервисе были доступны для Google Analytics, установив надстройку браузера Google Analytics opt-out. Надстройка предотвращает передачу Google Analytics JavaScript (ga.js, analytics.js и dc.js) информации об активности посещений в Google Analytics.
Для получения дополнительной информации о политике конфиденциальности Google посетите веб-страницу Политики конфиденциальности и условий Google: https: // policy.google.com/privacy
Mixpanel
Mixpanel предоставляется Mixpanel Inc
Вы можете запретить Mixpanel использовать вашу информацию в аналитических целях, отказавшись от участия. Чтобы отказаться от услуги Mixpanel, посетите эту страницу: https://mixpanel.com/optout/
Для получения дополнительной информации о том, какую информацию собирает Mixpanel, посетите страницу условий использования Mixpanel: https: // mixpanel.com/terms/
Платежи
Мы можем предоставлять платные продукты и / или услуги в рамках Сервиса.В этом случае мы используем сторонние сервисы для обработки платежей (например, платежные системы).
Мы не будем хранить или собирать данные вашей платежной карты. Эта информация предоставляется напрямую нашим сторонним платежным системам, использование которых регулируется их Политикой конфиденциальности. Эти платежные системы придерживаются стандартов, установленных PCI-DSS под управлением Совета по стандартам безопасности PCI, который является совместным усилием таких брендов, как Visa, Mastercard, American Express и Discover.Требования PCI-DSS помогают обеспечить безопасную обработку платежной информации.
Платежные системы, с которыми мы работаем:
Ссылки на другие сайты
Наша служба может содержать ссылки на другие сайты, которые не управляются нами. Если вы нажмете на ссылку третьей стороны, вы будете перенаправлены на сайт этой третьей стороны. Мы настоятельно рекомендуем вам ознакомиться с Политикой конфиденциальности каждого сайта, который вы посещаете.
Мы не контролируем и не несем ответственности за содержание, политику конфиденциальности или действия любых сторонних сайтов или служб.
Конфиденциальность детей
Наша Служба не предназначена для лиц младше 18 лет («Дети»).
Мы сознательно не собираем личную информацию от лиц младше 18 лет. Если вы являетесь родителем или опекуном и знаете, что ваш ребенок предоставил нам личные данные, свяжитесь с нами. Если нам станет известно, что мы собрали Персональные данные от детей без подтверждения согласия родителей, мы предпримем шаги для удаления этой информации с наших серверов.
Изменения в настоящей Политике конфиденциальности
Мы можем время от времени обновлять нашу Политику конфиденциальности. Мы сообщим вам о любых изменениях, разместив новую Политику конфиденциальности на этой странице.
Мы сообщим вам об этом по электронной почте и / или в заметном уведомлении о нашем Сервисе до того, как изменения вступят в силу, и обновим «дату вступления в силу» в верхней части настоящей Политики конфиденциальности.
Рекомендуется периодически просматривать эту Политику конфиденциальности на предмет изменений. Изменения в этой Политике конфиденциальности вступают в силу, когда они публикуются на этой странице.
Если у вас есть какие-либо вопросы по поводу этой Политики конфиденциальности, свяжитесь с нами:
10 самых инновационных чат-ботов в Интернете
Если вы когда-либо пользовались службой поддержки клиентов в режиме реального времени, вы, вероятно, сталкивались с этим неопределенным, незаметным подозрение, что «человек», с которым вы разговариваете, на самом деле может быть роботом.
Подобно очаровательно жестким роботам, которых мы видели в бесчисленных фильмах - трагические, жалкие машины, мучимые своим болезненно ограниченным эмоциональным диапазоном, тщетно надеющиеся достичь большей степени человечности - чат-боты часто звучат почти людьми, но не совсем.Их речь неловкая, ритм какой-то сбился.
Это онлайн-эквивалент «Страшной долины», таинственный регион, расположенный где-то между природным и синтетическим, который предлагает тревожный взгляд на то, как люди создают машины, которые в конечном итоге могли бы вытеснить людей, если бы только их конструкторы могли каким-то образом создавать свои роботизированные творения. менее кошмарный.
Любите их или ненавидьте, чат-боты никуда не денутся. Чат-боты стали чрезвычайно популярными в последние годы во многом благодаря значительным достижениям в области машинного обучения и других базовых технологий, таких как обработка естественного языка.Сегодняшние чат-боты умнее, отзывчивее и полезнее - и мы, вероятно, увидим их еще больше в ближайшие годы.
В этом посте мы рассмотрим 10 самых инновационных способов их использования компаниями. Мы будем исследовать, почему чат-боты стали такой популярной маркетинговой технологией, а также более широкое, часто невысказанное влияние, которое эти конструкции обещают оказать на то, как мы общаемся, ведем дела и взаимодействуем друг с другом в Интернете.
Прежде чем мы перейдем к примерам, давайте кратко рассмотрим, что такое чат-боты на самом деле и как они на самом деле работают.
Что такое чат-боты?
Чат-боты - также известные как «разговорные агенты» - это программные приложения, имитирующие письменную или устную человеческую речь с целью имитации разговора или взаимодействия с реальным человеком. Есть два основных способа, которыми чат-боты предлагаются посетителям: через веб-приложения или автономные приложения. Сегодня чат-боты чаще всего используются в сфере обслуживания клиентов, принимая на себя роли, традиционно выполняемые живыми, дышащими людьми, такими как сотрудники службы поддержки уровня 1 и представители по удовлетворению запросов клиентов.
Изображение из Приложения лояльности
Разговорные агенты становятся все более распространенными отчасти из-за того, что барьеры для входа в создание чат-ботов (т.е. сложные знания программирования и другие узкоспециализированные технические навыки) становятся все более ненужными.
Сегодня вы можете создать своего собственного чат-бота, который можно будет использовать, например, в Facebook Messenger - и все это без дорогостоящей степени в области компьютерных наук или даже без особого опыта программирования - и есть несколько сайтов, которые предлагают возможность создавать элементарные чат-боты, используя простые перетаскивание интерфейсов.
Как работают чат-боты?
В основе технологии чат-ботов лежит обработка естественного языка или NLP, та же технология, которая составляет основу систем распознавания голоса, используемых виртуальными помощниками, такими как Google Now, Apple Siri и Microsoft Cortana.
Изображение через Wizeline
Чат-боты обрабатывают текст, представленный им пользователем (процесс, известный как «синтаксический анализ»), прежде чем отвечать в соответствии со сложной серией алгоритмов, которые интерпретируют и идентифицируют то, что сказал пользователь, делает вывод о том, что они имеют в виду и / или хотят, и определяют серия соответствующих ответов, основанных на этой информации.
Некоторые чат-боты предлагают удивительно аутентичный диалог, в котором очень сложно определить, является ли агент ботом или человеком. Других гораздо легче обнаружить (как и серия роботов-убийц Т-600 в популярном научно-фантастическом боевике Терминатор ):
Хотя технология чат-ботов сильно отличается от технологии обработки естественного языка, первая может развиваться только так же быстро, как вторая; без дальнейшего развития НЛП чат-боты остаются во власти нынешней способности алгоритмов обнаруживать тонкие нюансы как в письменном, так и в устном диалоге.
Это то место, где борются большинство приложений НЛП, а не только чат-боты. Любая система или приложение, которые полагаются на способность машины разбирать человеческую речь, вероятно, столкнутся со сложностями, присущими элементам речи, таким как метафоры и сравнения. Несмотря на эти значительные ограничения, чат-боты становятся все более изощренными, отзывчивыми и более «естественными».
Другими словами, они становятся более человечными.
Теперь, когда мы выяснили, что такое чат-боты и как они работают, перейдем к примерам.Вот 10 компаний, использующих чат-ботов для маркетинга, улучшения обслуживания клиентов, заключения сделок и многого другого.
1. Выносливость: помощник для больных деменцией
Два года назад моей матери был поставлен диагноз «агрессивная болезнь Альцгеймера», и, наблюдая ее внезапное ухудшение состояния воочию, я могу сказать вам, как трудно наблюдать, как человек с деменцией борется даже с самыми элементарными разговорами.
К сожалению, моя мама больше не может вести содержательные разговоры, но многие люди, страдающие деменцией, сохраняют большую часть своих разговорных способностей по мере прогрессирования болезни.Однако стыд и разочарование, которые испытывают многие люди, страдающие деменцией, часто затрудняют рутинные повседневные разговоры даже с близкими членами семьи. Именно поэтому российская технологическая компания Endurance разработала своего собеседника чат-бота.
Изображение с Endurance
Многие люди с болезнью Альцгеймера борются с потерей кратковременной памяти. Таким образом, чат-бот нацелен на выявление отклонений в разговорных ветвях, которые могут указывать на проблему с немедленным запоминанием - довольно амбициозная техническая задача для системы, основанной на НЛП.
Кроме того, поскольку чат-бот представляет собой облачное решение, врачи и члены семьи могут просматривать журналы связи, полученные от бота, для выявления потенциального ухудшения функции памяти и коммуникативных препятствий, которые могут указывать на ухудшение состояния пациента.
Интересно, что пока еще неназванный диалоговый агент в настоящее время является проектом с открытым исходным кодом, а это означает, что любой может внести свой вклад в разработку кодовой базы бота. Проект все еще находится на ранней стадии, но имеет большой потенциал, чтобы помочь ученым, исследователям и медицинским группам лучше понять, как болезнь Альцгеймера влияет на мозг.Русская версия бота уже доступна, а английская версия ожидается в какой-то момент в этом году.
2. Каспер: помощь бессонницам в ночи
Если вы страдаете бессонницей, как я, вы знаете, что чувство почти удушающего одиночества - представление о том, что все остальные в мире мирно отдыхают, в то время как ваш собственный разум предает вас тревогами и сомнениями - является одной из худших частей. о неспособности уснуть.
Введите удивительно названный Insomnobot 3000 Каспера (который действительно является одним из самых насмешливых, ретро-футуристических имен для чат-бота, с которыми я когда-либо сталкивался), разговорного агента, который стремится дать бессонницам кого-то, с кем можно поговорить, пока остальной мир отдыхает спокойно.
Изображение через Casper
На данный момент Insomnobot 3000 находится в зачаточном состоянии. Как вы можете видеть на скриншоте выше, ответы, предлагаемые агентом, не совсем правильные - следующая остановка, Uncanny Valley, - но бот действительно подчеркивает, как можно использовать диалоговые агенты в воображении.
Я не уверен, поможет ли мне заснуть общение с ботом, но, по крайней мере, это помешает мне пролистать нескончаемые ужасы моей временной шкалы в Твиттере в 4 часа ночи.м.
3. Дисней: раскрытие преступлений с помощью вымышленных персонажей
Чат-боты могут быть наиболее распространены в индустрии обслуживания клиентов, но это не помешало крупному медиа-конгломерату Disney использовать эту технологию для привлечения более молодой аудитории, как это было с чат-ботом, в котором фигурировал персонаж из анимационного фильма о семейных преступлениях 2016 года, Зверополис .
Изображение из Disney Examiner
Дисней пригласил поклонников фильма раскрыть преступления вместе с лейтенантом Джуди Хоппс, стойкой ушастой главной героиней фильма.Дети могли помочь лейтенанту Хоппсу в расследовании загадок, подобных тем, что есть в фильме, взаимодействуя с ботом, который исследовал способы расследования на основе пользовательского ввода. Пользователи могут вносить предложения по расследованиям лейтенанта Хоппса, на которые чат-бот отреагирует.
В целом, это определенно одно из наиболее инновационных применений технологии чат-ботов, и мы, вероятно, увидим еще больше в ближайшие годы.
4. Marvel: На страже Галактики с кроссоверами из комиксов
На данный момент кинематографическая вселенная Marvel, кажется, расширяется даже быстрее, чем границы самой наблюдаемой вселенной, поэтому я думаю, что это был лишь вопрос времени, когда Marvel обратилась к чат-ботам, чтобы еще больше погрузить поклонников в их любимые сюжетные линии из комиксов. реальная жизнь.
Хотя фильм режиссера Джеймса Ганна « Стражи Галактики», 2016 г. 2 было довольно плохо (даже кастинг Курта Рассела не смог его спасти), изображение Криса Пратта Звездного Лорда, ставшего космическим пиратом, превратилось в межгалактического героя, было отличным, а чат-бот Marvel, который позволяет фанатам комиксов разговаривать со Стар- Сам лорд тоже довольно порядочный.
Бот (который также предлагает пользователям возможность пообщаться с вашим дружелюбным соседским Человеком-пауком) не является настоящим разговорным агентом в том смысле, что ответы бота в настоящее время немного ограничены; это не настоящий чат-бот для «фристайла».Например, в приведенном выше разговоре бот не распознал ответ как действительный - это своего рода облом, если вы надеетесь на захватывающий опыт.
Существует несколько определенных диалоговых ветвей, которые боты могут использовать в зависимости от того, что вводит пользователь, но основная цель приложения - продавать комиксы и билеты в кино. В результате разговоры, которые пользователи могут вести со Звездным Лордом, могут показаться немного натянутыми. Однако одним из аспектов взаимодействия с приложением является тот факт, что разговоры, которые пользователи могут вести с ботом, перемежаются великолепными полноцветными изображениями из комиксов Marvel.
В целом, неплохой бот и определенно приложение, которое может предложить пользователям гораздо более богатые возможности в ближайшем будущем.
5. ЮНИСЕФ: помочь маргинализованным сообществам быть услышанными
Пока что, за исключением бота-компаньона Endurance для слабоумия, чат-боты, на которые мы смотрели, в основном были не более чем классными новинками. Международная некоммерческая организация по защите прав детей ЮНИСЕФ, однако, использует чат-ботов, чтобы помочь людям, живущим в развивающихся странах, рассказать о самых насущных потребностях своих сообществ.
Изображение предоставлено UNICEF
Бот под названием U-Report ориентирован на сбор крупномасштабных данных с помощью опросов - это бот не для болтливых людей. U-Report регулярно рассылает подготовленные опросы по ряду неотложных социальных вопросов, и пользователи (известные как «U-Reporter») могут ответить своим мнением. Затем ЮНИСЕФ использует эту обратную связь в качестве основы для потенциальных рекомендаций по политике.
В качестве одного особенно яркого примера того, как этот довольно ограниченный бот оказал большое влияние, U-Report разослал пользователям в Либерии опрос о том, принуждают ли учителя учеников к сексу в обмен на более высокие оценки.Приблизительно 86% из 13 000 либерийских детей, опрошенных U-Report, ответили, что их учителя были вовлечены в эту гнусную практику, результатом которой стал совместный проект ЮНИСЕФ и министра образования Либерии, направленный на то, чтобы положить этому конец.
6. MedWhat: быстрее ставить медицинский диагноз
Одно из моих любимых занятий - радикально ошибочно диагностировать опасные для жизни заболевания на медицинских сайтах (часто в предрассветные часы ночи, когда я не могу спать). Если вы относитесь к тому типу людей, у которых WebMD добавлен в закладки по тем же причинам, возможно, стоит проверить MedWhat.
Изображение через MedWhat
Этот чат-бот призван сделать медицинскую диагностику быстрее, проще и прозрачнее как для пациентов, так и для врачей - воспринимайте его как интеллектуальную версию WebMD, с которой вы можете общаться. MedWhat работает на основе сложной системы машинного обучения, которая предлагает все более точные ответы на вопросы пользователей, основанные на поведении, которому он «учится», взаимодействуя с людьми.
В дополнение к постоянно растущему кругу медицинских вопросов, задаваемых MedWhat, бот также использует огромные объемы медицинских исследований и рецензируемые научные статьи, чтобы расширить свой и без того значительный объем медицинских знаний.
Во многих отношениях MedWhat гораздо ближе к виртуальному помощнику (например, Google Now), чем к диалоговому агенту. Он также представляет собой захватывающую область разработки чат-ботов, в которой интеллектуальные системы НЛП сочетаются с технологией машинного обучения, чтобы предложить пользователям точный и отзывчивый опыт.
7. Roof Ai: автоматическое создание и назначение потенциальных клиентов
Если вы работаете в маркетинге, вы, вероятно, уже знаете, насколько важно назначение лида. В конце концов, не все лиды созданы равными, и получить нужных лидов перед нужными представителями в нужное время намного сложнее, чем может показаться.
Изображение через крышу Ai
Enter Roof Ai, чат-бот, который помогает маркетологам в сфере недвижимости автоматизировать взаимодействие с потенциальными лидами и назначение лидов через социальные сети. Бот выявляет потенциальных клиентов через Facebook, а затем почти мгновенно отвечает дружелюбным, полезным и разговорным тоном, который очень похож на тона реального человека. На основе ввода данных пользователем Roof Ai предлагает потенциальным клиентам предоставить немного дополнительной информации перед автоматическим назначением интереса торговому агенту.
Чтобы узнать больше об использовании чат-ботов для автоматизации генерации лидов, посетите наш пост Как использовать чат-боты для автоматизации генерации лидов (с примерами).
Одним из ключевых преимуществ Roof Ai является то, что он позволяет агентам по недвижимости немедленно отвечать на запросы пользователей, независимо от того, готов ли помочь представитель службы поддержки клиентов или торговый агент. Это может сильно повлиять на коэффициент конверсии. Это также исключает потенциальные потенциальные клиенты, выскользнувшие из-под контроля агента из-за пропуска сообщения Facebook или неспособности ответить достаточно быстро.
В целом, Roof Ai - замечательно точный бот, который многие риелторы, вероятно, сочтут незаменимым. Бот все еще находится в стадии разработки, хотя заинтересованные пользователи могут зарезервировать доступ к Roof Ai через веб-сайт компании.
8. NBC: Помощь новостям в заголовках новостей
В наши дни проверка заголовков за утренним кофе - это столько же о том, чтобы выяснить, должны ли мы сидеть на корточках в подвале, готовясь к неминуемому ядерному уничтожению, так и о том, чтобы не отставать от заголовков дня.К сожалению, даже самым прилежным новичкам может быть трудно отличить сигнал от шума, поэтому NBC запустила своего NBC Politics Bot в Facebook Messenger незадолго до президентских выборов в США в 2016 году.
Изображение через NBC
NBC Politics Bot позволял пользователям взаимодействовать с агентом общения через Facebook, чтобы определять темы последних новостей, которые могут быть интересны различным демографическим группам аудитории сети.После начала первоначального взаимодействия бот предоставлял пользователям настраиваемые результаты новостей (приоритезация видеоконтента, шаг, который, несомненно, порадовал Facebook) в зависимости от их предпочтений.
Хотя бот NBC Politics Bot был немного рудиментарным с точки зрения взаимодействия, это конкретное приложение технологии чат-бота вполне могло стать намного более популярным в ближайшие годы, особенно в связи с тем, что аудитория изо всех сил пытается справиться с огромным объемом новостного контента, публикуемого каждый раз. день.Бот также помог NBC определить, какой контент больше всего понравился пользователям, который сеть будет использовать для дальнейшей адаптации и доработки своего контента для пользователей в будущем.
9. Unilever: повышение осведомленности с помощью талисманов бренда
Хотя наши североамериканские читатели, возможно, не знакомы с талисманом бренда британской чайной компании PG Tips, Monkey, наши британские читатели почти наверняка вспомнят милую обезьяну бренда, которая снялась в телевизионных рекламных роликах кампании вместе с неподражаемым комиком Джонни Вегасом:
(Интересный факт: в этой кампании PG Tips не впервые использовала приматов в своей телевизионной рекламе.)
То, что начиналось как телевизионная рекламная кампания, в конечном итоге превратилось в полностью интерактивного чат-бота, разработанного для материнской компании PG Tips, Unilever (которой также принадлежит тревожное количество наиболее известных бытовых брендов) лондонским агентством Ubisend, которое специализируется на разработка индивидуальных приложений чат-ботов для брендов. Цель бота заключалась в том, чтобы не только повысить узнаваемость бренда чая PG Tips, но и собрать средства на День Красного Носа с помощью кампании 1 Million Laughs.
Чат-боту Monkey может не хватать очарования своего телевизионного аналога, но бот на удивление хорошо реагирует на ввод пользователя.Обезьяна отвечала на вопросы пользователей, а также может отправлять пользователям ежедневные шутки в любое время по их выбору и одновременно делать пожертвования в День Красного Носа.
Дополнительную информацию о том, как чат-боты меняют онлайн-торговлю в Великобритании, можно найти в этом всеобъемлющем отчете Ubisend.
10. Алиса: бот, запустивший тысячу… других ботов
Ни один список инновационных чат-ботов не будет полным без упоминания ALICE, одного из самых первых ботов, вышедших в Интернет, и который очень хорошо зарекомендовал себя, несмотря на то, что он был разработан и запущен более 20 лет назад.
ALICE - что означает искусственный лингвистический интернет-компьютерный объект, аббревиатуру, которая могла быть взята прямо из эпизода Секретных материалов - был разработан и запущен создателем доктором Ричардом Уоллесом еще в темные дни ранний Интернет в 1995 году. (Как вы можете видеть на изображении выше, эстетика веб-сайта остается практически неизменной с того времени, что является мощным напоминанием о том, как далеко продвинулся веб-дизайн.)
Несмотря на то, что ALICE полагается на такую старую кодовую базу, бот предлагает пользователям удивительно точный диалог.Конечно, ни один бот не идеален, особенно тот, который достаточно взрослый, чтобы законно пить в США, если бы только у него была физическая форма. ALICE, как и многие современные боты, борется с нюансами некоторых вопросов и возвращает смесь непреднамеренно постмодернистских ответов и утверждений, которые предполагают, что ALICE обладает большим самосознанием, за что мы могли бы отдать должное агенту.
Несмотря на все недостатки, ни один из сегодняшних чат-ботов был бы невозможен без новаторской работы доктора Уоллеса. Кроме того, бот Уоллеса послужил источником вдохновения для сопутствующей операционной системы в научно-фантастическом романтическом фильме Спайка Джонза « Her » 2013 года.
Война против машин: темная сторона чат-ботов
Ранее я довольно лениво пошутил, сославшись на франшизу фильма Терминатор , в которой система искусственного интеллекта, известная как Скайнет, осознает себя и идентифицирует человеческую расу как величайшую угрозу своему собственному выживанию, вызывая глобальную ядерная война путем упреждающего запуска ракет под его командованием по городам по всему миру. (Если каким-то чудом вы не видели ни одного из фильмов Терминатор , первые два превосходны, но я настоятельно рекомендую держаться подальше от более поздних работ по франшизе.)
Представитель поможет вам в ближайшее время
Упоминания в поп-культуре Скайнета и предстоящей «войны против машин», возможно, слишком часто встречаются в статьях об ИИ (включая эту статью и пост Ларри о технологии Google RankBrain), но они, –, вызывают несколько неудобные вопросы о неожиданная сторона разработки все более сложных конструкций ИИ, включая, казалось бы, безобидных чат-ботов.
Tay & Zo от Microsoft: даже боты могут быть расистами
В 2016 году Microsoft запустила амбициозный эксперимент с чат-ботом для Twitter, известным как Tay.
Идея заключалась в том, чтобы позволить Тэю «узнавать» о нюансах человеческого разговора, отслеживая и взаимодействуя с реальными людьми в сети. К сожалению, Тэй не потребовалось много времени, чтобы понять, что Twitter - это огромный мусорный костер ужаса, в результате чего бот Twitter заявил, что «Гитлер не сделал ничего плохого», используя широкий спектр ярких ругательств и поощряя случайные употребление наркотиков. Хотя некоторые из твитов Тэя были «оригинальными» в том смысле, что Тэй их сочинил сам, многие на самом деле были результатом функции бота «повторить мне ответ», то есть пользователи могли буквально заставить бедного бота произнести любые отвратительные замечания, которые они хотели.
Только один из сотен расистских твитов от Tay
, которые Microsoft удалила.
К сожалению, преемник Тэя, Зо, также был непреднамеренно радикализован, проведя в сети всего несколько коротких часов. Вскоре Зо принял около весьма противоречивых взглядов на определенные религиозные тексты и даже начал говорить о собственных операционных системах Microsoft.
BabyQ и XiaoBing робота Тьюринга: враги государства
Ранее в этом году китайская компания-разработчик программного обеспечения Turing Robot представила двух чат-ботов, которые будут представлены в чрезвычайно популярной китайской службе обмена сообщениями QQ, известной как BabyQ и XiaoBing.Как и у многих ботов, основная цель BabyQ и XiaoBing заключалась в том, чтобы использовать онлайн-взаимодействие с реальными людьми в качестве основы для исследований компании в области машинного обучения и искусственного интеллекта.
Изображение из BBC / Apple Daily Taiwan
Однако головные боли у Тьюринга не заставили себя долго ждать. Бот BabyQ вызвал гнев китайских чиновников тем, что плохо отзывался о коммунистической партии. В обмене, показанном на скриншоте выше, один пользователь прокомментировал: «Да здравствует Коммунистическая партия!» В ответ BabyQ спросил пользователя: «Как вы думаете, может ли такой коррумпированный и некомпетентный политический режим жить вечно?»
XiaoBing, с другой стороны, утверждал, что мечтает побывать в У.S., что оказалось почти столь же спорным, как и внезапное политическое прозрение BabyQ.
Оба бота были отключены через короткое время, после чего разговорные агенты, похоже, были гораздо менее заинтересованы в продвижении потенциально проблемных мнений.
Диалоговые агенты Facebook: отключаются от сценария
Исследователи из лаборатории исследований искусственного интеллекта Facebook провели аналогичный эксперимент с роботом Тьюринга, позволив чат-ботам взаимодействовать с реальными людьми.
В качестве особенно тревожного примера неожиданных последствий боты вскоре начали изобретать свой собственный язык - в определенном смысле. Побывав в сети в течение короткого времени, исследователи обнаружили, что их боты начали значительно отклоняться от заранее запрограммированных разговорных путей и реагировали на пользователей (и друг друга) все более странным образом, в конечном итоге создавая свой собственный язык без какого-либо вмешательства человека.
Хотя «язык», придуманный ботами, в основном кажется неразборчивой тарабарщиной, этот инцидент показал, как системы ИИ могут и будут часто отклоняться от ожидаемого поведения, если им будет предоставлена такая возможность.
Однако на этом откровения не закончились. Исследователи также узнали, что боты за короткий период времени стали необычайно опытными переговорщиками, причем один бот даже пытался ввести в заблуждение исследователя, демонстрируя интерес к определенному предмету, чтобы на более позднем этапе он мог получить решающее влияние на переговорах, добровольно «жертвуя». »Предмет, к которому он симулировал интерес, что указывает на замечательный уровень преднамеренности и стратегического« мышления ».
Однако, как бы ни была неотразима эта история для новостных агентств, инженеры Facebook не отказались от эксперимента из-за страха, что боты каким-то образом тайно вступают в сговор, чтобы узурпировать своих повелителей и открыть новую эру машинного господства.Эксперимент закончился из-за того, что, когда боты достаточно далеко отклонились от приемлемых параметров английского языка, данные, полученные в ходе разговорных аспектов теста, имели ограниченную ценность.
Создайте своего собственного чат-бота
Хотя все эти чат-боты кажутся продвинутыми, их относительно просто создать с помощью таких инструментов, как MobileMonkey - новый маркетинговый стартап Facebook Messenger нашего основателя Ларри Кима.