Как создать телеграм-бота | База знаний Selectel
С помощью ботов можно упростить себе задачу коммуникации с пользователями, создав для них умного помощника. Боты понимают текстовые команды и могут обращаться к API вашего вебсайта, сервиса или быть самостоятельным продуктом с уникальными услугами.
Обычно, для создания бота требуется сервер, но в этой статье мы разберём подход, позволяющий обойтись без него. Он идеален при резких колебаниях количества запросов и прекрасно выдерживает пиковые нагрузки.
Настроить Телеграм-бота на Облачных функциях, используя официальный API и заготовленный нами пример, можно в 3 этапа:
- Запрограммировать логику работы Телеграм-бота.
- Зарегистрировать нового бота в Telegram.
- Связать бота и его логику воедино.
Запрограммировать логику работы Телеграм-бота
Чтобы упростить задачу, мы написали пример такого бота. Его исходный код доступен по ссылке github.com/selectel/cloud-telegram-bot. Он понимает команды:
/start
с приветственным сообщением;
с ответом в виде стикера;/getwebhook
чтобы вы могли получить информацию о настройках вашего бота;/setwebhook
для настройки вашего бота, но об этом позже.
Пройдите следующие шаги с нашим примером бота, чтобы освоиться:
- Скачайте исходный код как архив («Clone or download» → «Download ZIP») и распакуйте его.
- Внутри должно быть:
- «setup.py» с минимальным кодом, чтобы Python-окружение приняло содержимое папки за модуль для установки;
- «requirements.txt» с описанием зависимостей;
- «bot» — папка с исходным кодом нашего бота.
- Выделите все эти файлы и папки, а затем создайте из них новый ZIP-архив, тогда исходный код внутри архива не будет иметь лишних папок (как в случае с архивом, скачанным с github).
- Перейдите в панели управления в раздел Облачная Платформа → Функции и нажмите кнопку Создать функцию.
- Выберите среду выполнения и задайте имя, например
Bot
. - В поле Загрузить выберите Архив.
- Загрузите ZIP-файл в качестве Кода функции.
- Укажите Путь к файлу как
/bot/tele_bot.py
. - Укажите Вызываемую функцию как
main
. - Получите токен по инструкции и в поле Переменные окружения
- Нажмите кнопку Сохранить и развернуть.
- Чтобы получить ссылку для вызова функции, перейдите на вкладку Триггеры и нажмите на тумблер HTTP-запрос.
Теперь у нас есть 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.
Итог
Готов для работы бот, доступный в Телеграме, отвечающий на команды и способный автоматически масштабироваться под нагрузкой и без сервера.
Как сделать чат-бота за 15 минут — CASES
В условиях современного рынка существует множество трендов и тенденций. Некоторые из них молниеносно появляются и также быстро исчезают, а некоторые задерживаются и укореняются на более долгое время.
Одним из таких трендов являются чат-боты. Но так как тема эта довольно сложная, сегодняшняя ситуация примерно похожа на ситуацию с SMM продвижением — все хотят, но не понимают зачем, как и сколько это должно стоить.
В этой статье мы расскажем что такое чат-боты, зачем они нужны, как создать чат-бота без навыков программирования и покажем как можно применить бота в маркетинге.
Что такое чат-бот
Чат-бот — так называемый, искусственный интеллект, специальная программа, которая может общаться с пользователями вашего сайта или страницы в социальных сетях, а точнее отправлять им различные сообщения в заданной предварительно последовательности.
Разработка чат-бота производиться с участием программиста и без него. Первый вариант — самый простой, о котором мы поговорим в этой статье реализуется при помощи специальных программ — конструкторов. Они бывают платные и бесплатные, все зависит от необходимого вам функционала. Второй вариант сложнее, дороже, но стоит отметить что чат-бот, написанный программистом, всегда «умнее», чем созданный через конструктор.
Зачем нужен чат-бот
Сегодня вы можете найти 1 000 000 советов о том, как написать чат-бота, в какой программе это лучше сделать, как найти подходящий сервис, но мало кто пишет о том, какие цели стоит ставить перед чат-ботом. А зря, от этого ведь зависит рациональность инвестирования времени и средств в разработку, а также результат маркетинговых активностей.
Целью создания чат-бота может быть:
- Автоматизация работы службы поддержки.
- Разгрузка колл-центра и ответственных менеджеров.
- Построение воронки продаж.
- Привлечение и получение лидов.
Как создать чат-бота бесплатно
Все понимают, что бот — это программа. Чтобы создать программу, нужен программист. Чтобы привлечь программиста, нужны средства. Но что делать, если чат-бот необходим, а денег на программиста просто нет.
Мы знаем как вам помочь. В этой части статьи мы расскажем как создать чат-бота бесплатно.
Рецепт прост как 2х2. Вам нужен конструктор ботов.
Конструктор ботов — это специальный сервис, в функционал которого, заложены определенные простые функции и последовательности действий, которые сможет выполнять ваш чат-бот. Все что вам нужно будет сделать, так это внести информацию о своей компании, кастомизировать внешний вид сообщений и продумать необходимые сценарии, по которым робот будет давать ответы на вопросы.
Зачастую, этих возможностей хватает с головой, чтобы закрыть потребности малого и среднего бизнеса.
Для того, чтобы внести еще большую ясность, мы составили таблицу, в которой наглядно показали плюсы и минусы создания чат-ботов с привлечением программистов и без них.
Таблица — Преимущества и недостатки создания чат-бота через конструктор ботов и при помощи программиста.
Вывод
Если у вас есть время и средства — подключайте программиста. Если времени и средств особо нет, читайте нашу статью и подключайте чат-бота самостоятельно.
Как сделать чат-бота, если не умеешь программировать
Отвечаем на главный вопрос, который интересует большинство из зашедших на эту страницу пользователей: как создать чат-бота, если не умеешь программировать и при виде кода впадаешь в панику?
Как вы уже поняли, нужен конструктор ботов. Но, если вы введете в Google запрос «какой конструктор ботов выбрать» — в ответ получите 1К ссылок, с самыми разнообразными по функционалу и возможностям конструкторами.
DON’T PANIC!
Мы немножко познакомим вас с темой и подскажем как получить то, что нужно именно вам.
Во-первых, отметим, что создание чат-бота нужно для общения через мессенджеры. Самые распространенные мессенджеры, которые используются для таких целей это:
- Facebook messenger
- Telegram
- Viber
Начнем по порядку.
Чат-бот Фейсбук
Это, пожалуй, самая популярная тема, волнующая большую половину пользователей. Для начала, давайте проведем оценку рынка.
5 сервисов для создания ботов без кодинга и без денег
1) ChattyPeople
Как утверждает Рэмптон, лучший сервис для создания чат-ботов. Простой, удобный, бесплатный.
2) Botsify
3) Chatfuel
Достаточно простой в освоении и использовании сервис для создания чат-ботов. Наша команда опробовала его и мнения разошлись 50/50. Да, сервис прост, но прост настолько, что значительно уступает тому же Many Chats по функционалу и отчетности. Но это дела каждого. Безусловно достоин внимания.
4) FlowXO
5) BeepBoop
Из личного опыта:
Мы тестировали несколько сервисов для создания чат-ботов и можем с уверенностью отдать предпочтение платформе ManyChat.
Почему ManyChat:
- Простой и интуитивно понятный интерфейс, несмотря на то, что он англоязычный.
- Широкие возможности аналитики внутри самого сервиса.
- Возможность добавлять виджеты на сайт.
- Совместимость с Facebook.
- Широкий функционал в бесплатной версии.
- Адекватная стоимость платной подписки.
- Наличие подробной справки и обучающего видео и текстового материала.
Как создать чат-бота при помощи сервиса ManyChat. Полная инструкция
Шаг 1. Регистрация
- заходим на сайт сервиса и кликаем Get Started Free
- Попадаем на окно авторизации через Facebook
- Кликаем Sign In With Facebook
- Устанавливаем галочку на пункте I agree to Many Chat’s Terms of Service and Private Policy
- Кликаем Sign In With Facebook
- Вводим логин и пароль от вашего аккаунта в Facebook (если вход не произошел автоматически)
На следующем экране выбираем какие именно страницы вы хотите подключить к Many Chats
Далее, загрузится основной экран с синим осьминогом, на котором ваш необходимо согласиться или отказаться от получения рассылки от сервиса и нажать кнопку Get Started.
После этого, попадаем в дашборд. Это такой себе командный пункт из которого вы будете управлять своим чат-ботом.
Шаг 2. Приветственное сообщение
Для начала поздороваемся.
Первое, что увидит пользователь, который собрался написать вам сообщение и вошедший в Facebook Messenger — кнопка Get Started внизу экрана мессенджера. Кликнув на нее, пользователь получит первое приветственное сообщение.
Как настроить Welcome Message в ManyChats
- В левом меню кликаем по кнопке Automation
- В выпадающем меню находим пункт Welcome Message и кликаем по нему
- Далее кликаем по сообщению и пишем приветственное сообщение
Шаг 3. Ответ на непонятный вопрос
Этот ответ отправляется ботом автоматически, если он не понимает что нужно ответить на заданный вопрос.
Как настроить Default Reply в ManyChats
- В левом меню кликаем по кнопке Automation
- В выпадающем меню находим пункт Default Reply и кликаем по нему
- Далее кликаем по сообщению и редактируем сообщение
Шаг 4. Ключевые слова
Ключевые слова — это особые сигналы для бота. Чтобы было понятно, приведем пример: если вы отправите слово «start» нашему чат-боту, он подпишет вас на рассылку и вы увидите приветственное сообщение подтверждения подписки.
Остальные сигналы (ключевые слова) работают аналогично: задается ключевое слово и к нему привязывается определенное действие. Если максимально все упростить, то можно провести аналогию с сигналами светофора:
- ключевое слово: красный — действие бота: стоп
- ключевое слово: желтый — действие бота: приготовься
- ключевое слово: зеленый — действие бота: начинай движение
Шаг 5. Статистическое меню в Messenger
Это то меню, которое видит пользователь при входе в диалог с вами в Messenger. Вот, как оно выглядит:
Это меню — важный момент, которому стоит уделить внимание. Сюда нужно вынести кратко главную информацию, которую вы хотите сообщить пользователю и добавить призывов к действию.
В бесплатной версии, вам будет доступно 2 пункта для вывода. Как вариант, можно вывести такие:
- адрес вашего сайта
- СТА для совершения действия, например, личной консультации
Как настроить главное меню в ManyChats
- Заходим в дашборд, пункт Automation
- Переходим в пункт Main Menu
Лайфхак: да, у вас есть всего лишь 2 пункта в бесплатной версии, но в каждом из этих пунктов, можно сделать несколько подпунктов. Таким образом, количество информации, которую вы можете показать пользователю увеличивается.
Шаг 6. Отправка широковещательных сообщений
Вы набрали подписчиков бота, что дальше? С ними нужно как-то работать, напоминать о себе, делать предложения. Для этого, нам понадобятся Broadcasts или другими словами автоматизированную отправку сообщений или автопостинг.
Для этого:
- зайдите в дашборд
- в левом меню найдите пункт Broadcasting и кликните по нему
- в выпадающем меню кликните по пункту Broadcasts
Теперь, чтобы создать сообщение, нажмите на кнопку +New Broadcast
Создайте свое первое сообщение и кликайте Go Next, чтобы продолжить и Preview, чтобы посмотреть что получилось.
Как перенаправить трафик в Messenger
Настройка стала +/- ясно/понятно. Но вот главный вопрос — где взять подписчиков для бота? Для этого ManyChats располагает отличным инструментом, который называется Growth Tools.
Познакомимся с ним поближе
- заходим в дашборд
- в левом меню находим пункт Growth Tools и кликаем на него
- далее, в правом верхнем углу жмем кнопку New Growth Tools и попадаем в меню редактирования нового инструмента роста
Telegram чат бот — легкий способ сделать бота
Чат бот telegram интересный и эффективный инструмент.
Инструкция: Как сделать чат-бота Telegram без кодинга
Подготовительные работы:
- Устанавливаем приложение Telegram. Ссылка на скачивание: ссылка
- Регистрируемся в приложении
Для легкого и быстрого создания бота, мы будем использовать сервис Manybot.
Создаем бота:
Переходим на manybot.io
Кликаем кнопку «Создать бота»:
Далее, кликаем: Открыть ManyBot в Telegram:
Если вы работаете с десктопа, откроется окно переадресации в приложение Telegram, в котором нужно нажать «Открыть».
Открываем Telegram и кликаем кнопку «Добавить нового бота» в меню Manybot:
Следуя инструкции, переходим к @BotFather. Это «царь-бот» в Telegram. Любого нового бота, можно создать только обратившись к нему. Что мы собственно говоря и сделаем. Переходим к @BotFather:
Видим приветственное сообщение. Для начала работ, отправляем боту команду /start, в ответ бот пришлет с описанием своих функций и команд, которыми вы можете эти функции вызвать.
Сообщаем @BotFather о том, что хотим создать нового бота командой /newbot:
Дальше, @BotFather спросит как вы хотите назвать своего бота. Мы назовем его TestBot.
Теперь, даем боту юзернейм, по которому вы сможете найти бота в поиске:
Бот создан. Теперь нужно скопировать токен для дальнейших действий:
Возвращаемся в ManyBot и отправляем боту скопированный токен и жмем кнопку «Я скопировал токен»:
В ответ вы получите сообщение об успешном создании бота и просьбой немного о нем рассказать:
Этот шаг можно пропустить.
Чтобы люди могли подписаться на вашего бота и начать с ним общение, нужно выслать им ссылку на него из сообщения (см. скрин выше) или разместить ссылку на сайте, в Instagram и пр.
Дальнейшие действия зависят от задач, которые перед вами стоят. Если вам достаточно бота, ОК, берите ссылку и размещайте в местах, где ее смогут увидеть ваши потенциальные подписчики.
Если вы ведете канал в Telegram и хотите наладить постинг и добавить дополнительные возможности к своим постам, сделайте следующее.
Как добавить лайки и сделать отложенный постинг в Telegram-канал
Сделайте созданного бота админом вашего канала:
- зайдите в канал
- найдите пункт управления каналом (три вертикальные точки справа вверху)
- кликните по ним и в выпадающем меню выберите: управление каналом — администраторы — добавить администратора:
- далее, в поиске найдите вашего бота по юзернейму, который мы присваивали ранее и назначьте его админом:
- находим в Telegram специального бота, который называется @Controllerbot
- первое, что вы увидите — сообщение с описанием возможностей этого бота.
- даем боту команду /start
- далее, подключаем бота. Для этого копируем токен, полученный ранее в @Controllerbot:
- далее, подключаем канал:
- создаем пост. Для этого, кликните на кнопку «Создать новый пост». Вас автоматически переадресует в ваш созданный бот:
- отправляем непосредственно то, что хотим опубликовать:
- выбираем, что нужно добавить к посту (мы выбрали реакции):
- отправляем боту реакции, которые хотим прикрепить:
- кликаем кнопку «Далее» и выбираем необходимое действие:
- мы выбрали «Опубликовать». Вот, что получилось:
Как сделать опрос в Telegram
Для того, чтобы сделать опрос в Телеграм, находим бота @vote:
Выбираем опрос какого типа мы хотим создать: публичный или анонимный. Мы выбрали Public:
Отправляем вопросы, которые будут включены в наш опрос и варианты ответов:
По окончанию, отправляем боту сигнал о завершении настроек в виде команды /done
Еще один способ добавить реакции к посту
Telegram бот @like
В ответ, бот попросит выслать сообщение, к которому нужно прикрепить реакции:
После этого, нужно выслать реакции, которые вы хотите использовать (до 6 эмоджи):
Пост готов.
Несколько полезных команд для вашего бота:
Чтобы настроить меню Telegram, отправьте боту /commands
Чтобы посмотреть справку, отправьте боту /help
И так далее.
Как создать чат-бота для Viber – База знаний Timeweb Community
Поговорим о создании простого чат-бота Viber для пересылки сообщения.
Термины и определения
Чат-бот Viber – программа Viber, реализованная через паблик-аккаунт, с которой пользователь может взаимодействовать для достижения какой-либо цели.
Паблик-аккаунты – специально созданные публичные аккаунты для общения и взаимодействия с клиентами (в том числе с помощью чат-ботов). Частным случаем паблик-аккаунтов являются паблик-чаты, где общается какая-либо группа людей.
Viber-ссылка – специальная ссылка для открытия контакта, чат-бота или другого ресурса в приложении Viber. Начинается с особого префикса viber://. Например: viber://pa?chatURI=hello2bot.
Создаем чат-бота
Создадим самого простого чат-бота для Viber. Почему самого простого? Потому что у новичков обычно возникает уйма вопросов. Естественно, такой простой чат-бот нужен для проверки того, что все работает. Тем более функционал простого бота можно расширять дальше по своему усмотрению.
Цель: бот будет пересылать обратно наше сообщение.
По сути, площадка для размещения чат-бота – это обычный web-хостинг. А сам бот в нашем случае – один PHP-файл.
Если вы сами хотите развернуть хостинг, то можно использовать связку: Apache + PHP + MySQL, но лучше воспользоваться услугами хостинг-провайдера, где установлено все необходимое, например, Timeweb.
Технология работы бота проста:
- Мы пишем в чат сообщение, оно уходит на сервер Viber.
- Viber обращается к нашему серверу (скрипту) через HTTP-запрос.
- На это наш сервер (скрипт) предоставляет ответ, который уходит обратно на сервер Viber.
- Ответ приходит в чат.
А теперь пошаговый процесс создания (из 13 шагов):
1. Переходим на сайт разработки. Предварительно у вас на смартфоне должно быть установлено приложение Viber.
2. Вводим номер телефона и авторизуемся.
3. Viber пришлет код подтверждения – вводим его и нажимаем «Дальше».
4. Нажимаем кнопку «Создать бот» и заполняем необходимые поля:
- Account Image – загрузите картинку 400×400, которая будет отображаться в профиле паблик-аккаунта и как значок в сообщениях.
- Account Name – имя, которое будет отображаться в заголовке у бота.
- URI – придумайте идентификатор, по которому можно будет найти бота.
- Category – выберите одну из 7 основных категорий.
- Subcategory – выберите из списка подкатегорию, в которой будет функционировать ваш бот.
- Language – выберите основной язык.
- Account Description – подробнее опишите создаваемого бота.
- Website Address – по желанию укажите адрес вашего сайта.
- Email Address – адрес электронной почты.
- Location – локация, местоположение.
5. Ставим галочку о принятии соглашения и нажимаем «Create».
6. После этого вы получите токен для аутентификации Viber. Скопируйте и сохраните его.
7. Теперь загрузите к себе на компьютер заготовку для чат-бота: github.com/the-lans/bots/tree/master/Viberbot
Прямая ссылка на скачивание всего архива: github.com/the-lans/bots/archive/master.zip
9. В этих файлах необходимо изменить некоторые параметры.
В файле index.php необходимо изменить:
- AUTH_TOKEN на токен вашего паблик-аккаунта Viber.
- HelloBot на имя вашего бота, под которым он будет вам отвечать.
В файле set_webhook.php необходимо изменить:
- AUTH_TOKEN на токен вашего паблик-аккаунта Viber.
- WEBHOOK_URL на URL вашего вебхука, т.е. URL нахождения файла index.php на вашем хостинге.
10. По требованию Viber на вашем сайте должен быть установлен сертификат SSL. Такой сертификат можно заказать как платно (например, Sectigo Positive SSL), так и бесплатно (SSL Let’s Encrypt). Подробнее о SSL-сертификатах читайте в Справочном центре.
11. Когда SSL-сертификат станет активным, заходим в панель хостинга Timeweb через файловый менеджер:
- Заходим к себе на сайт.
- Создаем новую папку для бота.
- Загружаем два файла.
12. Установим вебхук для нашего бота в Viber. Заходим в браузер и запускаем файл set_webhook.php. Если все хорошо, выдается следующее сообщение (см. ниже). Если у вас не получилось установить вебхук, внимательно проверьте URL-адрес (соблюдение регистра букв) или корректность PHP-файла.
13. Заходим в Viber на смартфоне. Последовательно нажимаем в меню: Еще –> Паблик аккаунты –> HelloBot.
Если паблик-аккаунт скрыт, нажимаем «Показать».
Проверяем результат
В паблик-аккаунте нажимаем кнопку «Сообщение» и начинаем взаимодействие с ботом. Пишем любую фразу, бот должен нам ответить тем же. Если бот отказывается отвечать, проверьте корректность PHP-файла, наличие SSL-сертификата и пр.
Нами был успешно создан и запущен чат-бот для Viber. Теперь можно подумать о расширении его функционала. Документацию Viber REST API можно прочитать на официальном сайте мессенджера.
Здесь мы рассмотрели создание бота на PHP. Бота под Viber можно создать также на Python и Node.JS.
Создаем сценарий бота | База знаний BotHelp
Открыть статью в новом окне ↗
После того, как вы подключили канал можно переходить к созданию бота.
Перейдите во вкладку «Боты» слева в меню и нажмите на кнопку «Новый бот».
Выбираем канал, для которого вы создаете бота.
Жмем на кнопку, даём боту любое название и выбираем бота или сообщество из списка.
Стартовый шаг
Сразу же при создании у бота есть один Стартовый шаг и Новый шаг (первое текстовое сообщение, которое бот присылает подписчику)
Давайте поприветствуем пользователя в первом сообщении.
Бот уже подгрузил данные из профиля и знает как зовут подписчика, поэтому мы можем обратиться к человеку по имени. Для этого нажмите на иконку выбора переменной <…> и выберите макрос имени.
Не забудьте как-то назвать шаг, чтобы потом не путаться.
Теперь наш бот приветствует всех, кто начнет с ним диалог, но что дальше? Следующие шаги очень сильно зависят от целей вашей воронки и что в них писать, решаете только вы.
Далее в уроке мы создадим простого бота из 4 шагов и заодно разберем самые популярные типы сообщений, которые может отправлять бот.
Текстовое сообщение вы уже видели во время приветствия, теперь добавим новый блок и зададим вопрос.
Чтобы создать новый шаг бота, нажмите на иконку +.
Открытый вопрос
Добавьте новое сообщение и кликните чтобы отредактировать его. Добавьте новый блок «Вопрос». Дайте имя шагу и напишите текст вопроса.
Если вы хотите сохранить ответ на этот вопрос в профиле пользователя — используйте поле. По умолчанию уже есть несколько полей, но вы можете создать свое. Не забудьте сохранить шаг.
Вопрос с вариантами ответа
Добавьте новый блок Вопрос. Нажмите на кнопку «Настройки» и добавьте варианты подсказок для ответов.
В разных мессенджерах вы можете добавить разное количество подсказок ответа и их длину. Не рекомендуем делать более 10 ответов.
Для всех блоков вопрос вы можете включить проверку ответов и повтор вопроса.
Что будет если подписчик не ответит на вопрос?
Бот ждет ответа 24 часа, после этого он отправляет шаг, с которым связан этот блок.
Что делать, если подписчик не выберет ответ кнопкой, а напишет что-то свое?
Для этого случая настройте переход от шага к следующему. Это может быть повтор вопроса, текстовое сообщение другого содержания либо шаг с каким-то действием .
Другие блоки
Кроме обычных текстовых блоков или блоков с вопросами вы можете отправить: файл, видео или изображение.
Связи между блоками
Все шаги в цепочке должны быть связаны между собой. Сделать это можно в настройках шага. Пункт «Перейти к следующему шагу после завершения».
Связи от кнопок можно просто протянуть мышкой.
Если в ботах настроены 2 сценария — по кнопке и в шаге, то при клике по кнопке пользователь пойдет по сценарию кнопки.
Ура! Бот готов и его можно тестировать!
Для начала теста, нажмите на кнопку «Тестировать» сверху.
Наш бот работает, можно оставить всё так, но мы рекомендуем немного улучшить бота.
Давайте перейдем к следующему уроку и научимся использовать действия, условия и задержки.
_____
Если у вас что-то не получилось, напишите в поддержку и разберитесь с вопросом прежде чем переходить к следующему уроку.
Как быстро создать бота в Telegram без знаний программирования – 1C-UMI
Среди неопытных пользователей существует мнение, что для создания бота в Telegram нужно быть опытным кодером и знать языки программирования. В некоторых случаях это действительно так. Но только тогда, когда бот должен иметь сложный функционал, которым его нельзя наделить при помощи конструктора. В остальных случаях можно обойтись специальными сервисами для создания Телеграм-ботов. Об этих инструментах мы сегодня и расскажем.
Регистрируем своего бота в BotFather
Перед созданием бота нужно зарегистрировать его в BotFather. Это делается для того, чтобы ваш бот мог работать в Telegram. BotFather ― это тоже бот, найти его просто, для этого кликните по данной ссылке, и мессенджер сам откроет с ним диалог. Нажмите внизу кнопку «Запустить».
В окне чата отобразятся все доступные команды. Нас интересует /newbot. Можете это ввести вручную или же кликнуть по соответствующей записи прямо в командном списке.
BotFather предложит вам выбрать имя для своего будущего бота. Вводим произвольное.
Затем необходимо придумать юзернейм боту. Он должен быть уникальным, так как в противном случае регистрация бота будет отклонена. В конце названия обязательно нужно указать приставку _bot.
После успешной регистрации BotFather пришлет вам сообщение с токеном, который нужно записать где-нибудь у себя и сохранить. В дальнейшем он нам понадобится.
Теперь переходим непосредственно к созданию самого бота.
Создаем бота с помощью ManyBot
ManyBot — это уникальная разработка в Telegram, которая позволяет пользователям без знаний языков программирования создавать собственные простые боты.
Запускаем ManyBot по ссылке выше и жмем на кнопку «Добавить нового бота».
Затем копируем ранее полученный нами токен в BotFather и вставляем в чат с ManyBot. Жмем на стрелочку отправки сообщения справа или Enter.
Теперь нужно написать маленький текст о том, что будет делать наш бот. В случае, если вы ничего писать не хотите, можно воспользоваться кнопкой «Пропустить».
Получаем сообщение от ManyBot о том, что бот создан и настроен.
Кликаем по ссылке с нашим ботом и жмем на кнопку «Запустить».
Сразу открывается окно, где отображается список команд, а внизу удобное меню для добавления функций в бот.
Кликаем по кнопке «Пользовательские команды» и затем «Создать команду».
Название команды указываем произвольное, но, чтобы потом было понятно, за что она отвечает. Перед командой обязательно указываем slash в виде /.
После написания команды жмем Enter или голубую стрелочку справа.
Теперь необходимо добавить то, что вы хотите, чтобы бот присылал пользователю в ответ на введенную команду. Например, какой-то текст или картинку, документ или аудиофайл.
Текст пишем в поле для этого или копируем откуда-нибудь, а для прикрепления файлов используем значок «Скрепка».
Изображение отправляется отдельно от текста.
Добавив всю нужную информацию для этой команды, воспользуйтесь кнопкой «Сохранить».
Таким образом можно создавать множество команд, и каждая из них будет отвечать за вывод конкретной информации в виде текста, фото, документов или файлов.
Для проверки работоспособности команды жмем в меню на кнопку «Назад», затем вводим вручную созданную нами команду и нажимаем Enter. В ответ приходит сообщение с тем содержанием, которое мы указали при добавлении команды.
Однако вводить каждый раз вручную команды как-то неудобно, поэтому можно воспользоваться функцией создания графического меню в ManyBot. Для этого переходим вновь в раздел «Пользовательские команды» и жмем на кнопку «Настроить гл. меню».
Потом кликаем по кнопке «Добавить пункт меню».
Выбираем в меню созданную нами команду.
Вводим название пункта меню. Например, «О компании». Можно использовать эмоджи.
Жмем Enter или по стрелке справа. Видим сообщение, что команда была успешно добавлена в меню. Возвращаемся назад при помощи соответствующей кнопки (2 клика).
В меню теперь есть добавленная нами кнопка, за которой закреплена созданная команда. Попробуем на нее нажать и посмотреть, что получится.
При нажатии на кнопку присылается та информация, которая ранее отправлялась только при ручном вводе команды. Согласитесь, что так намного удобнее!
С помощью ManyBot можно также создавать опросы, делать рассылку по подписчикам, настраивать автопостинг в канал Telegram, смотреть статистику и т.д. Узнать подробнее обо всех функциях конструктора можно в самом боте, прокрутив меню до пунктов «Помощь» и «Инструкции». Кликайте по ним и изучайте все возможности инструмента.
Создаем бота с помощью BotMother
Это полноценный веб-конструктор, который позволяет создавать собственных Телеграм-ботов через понятный интерфейс в системе. Сначала здесь нужно зарегистрироваться. Затем мы оказываемся в личном кабинете, где нужно кликнуть по значку «Добавить».
Потом кликаем в открывшемся окне по значку «Пустой бот».
Чтобы подключить зарегистрированный нами ранее в BotFather бот, его необходимо сначала удалить из ManyBot. Делается это через команду /deletebot (ввод команды, выбор нужного бота, подтверждение удаления). Либо можно зарегистрировать второго бота и использовать токен от него, оставив первого нетронутым.
Мы пошли по первому пути и удалили нашего бота из ManyBot. Теперь его токен можно использовать для BotMother. Для подключения бота к системе переходим в настройки.
Здесь передвигаем ползунок Telegram вправо, чтобы он стал зеленым, в поле «Токен» вводим полученный ранее в BotFather токен и кликаем внизу по значку «Дискета» для сохранения настроек.
Теперь возвращаемся к нашему боту в конструкторе.
Сначала можно добавить текст приветствия для всех пользователей, которые будут запускать ваш бот. Справа находится блок с функциональными блоками. Кликните мышкой по самому верхнему с названием «Текст» и перетащите на стартовый экран.
Теперь в текстовом поле пишем наше приветствие. Можно использовать смайлы.
Чтобы обращаться персонально по имени к каждому пользователю, в текст сообщения нужно добавить конструкцию {{this_user.firstname}}.
Для создания меню перетащим блок «Группа кнопок с подсказками» на тот же стартовый экран, но с расположением под введенным ранее приветствием.
В поле «Текст сообщения» вводим подсказку для пользователя. Например, «Выберите нужный вам пункт меню». А в поле «Введите текст кнопки» указываем короткий текст, который станет названием кнопки.
Чтобы добавить еще одну кнопку, кликните по значку с плюсиком.
Теперь нам нужно добавить еще два стартовых экрана, на которых мы разместим информацию, соответствующую созданным ранее кнопкам. Находим внизу страницы сайта кнопку с плюсиком в голубом круге и жмем на нее.
Появляется новый стартовый экран, вводим название, как у кнопки.
Теперь перетаскиваем на этот экран те компоненты, которые на нем должны быть. Например, тот же текст, как ранее, но еще с добавлением фото или других файлов.
Не забываем периодически кликать на кнопку сохранения, которая располагается внизу страницы в виде значка дискеты в зеленом круге.
Создаем второй стартовый экран прежним способом. Называем его, как вторую кнопку.
Опять перетаскиваем сюда нужные компоненты. Текст, фото, локацию, документ или любой другой элемент, что позволяет использовать бесплатный тариф конструктора.
Мы использовали скриншот наших тарифов на сайте 1C UMI.
Теперь нам нужно связать второй и третий стартовые экраны с кнопками действий в первом. Для этого перетаскиваем компонент «Развилка» на 1-й экран в самый низ.
В пункте «Выберите экран» выбираем «Стартовый экран», затем кликаем по кнопке +. В верхнем поле нужно выбрать второй стартовый экран. Поле «text» оставляем нетронутым, а в поле «Введите значение» указываем точное название кнопки.
Опять кликаем по кнопке с плюсиком, чтобы добавить следующий пункт. Проделываем все то же самое, что и для первого пункта, но выбираем 2-й экран и указываем название для второй кнопки.
Жмем на кнопку «Сохранить». Запускаем бота в Telegram и проверяем, что получилось.
Кликаем по кнопке «О компании» и получаем в ответ сообщение.
Но как вернуться назад после этого? А для этого нужно создать соответствующую кнопку. Делается это просто. На второй стартовый экран переносится сначала компонент «Группа кнопок с подсказками», а чуть ниже «Развилка».
В первом блоке пишем подсказку для пользователя, что ему нужно сделать, чтобы вернуться назад, и название самой кнопки.
Во втором блоке «Развилка» делаем все то же самое, что в предыдущих аналогичных компонентах, но среди экранов выбираем «Стартовый экран», а в названии кнопки указываем «Назад».
Сохраняем изменения при помощи значка дискеты в правой нижней части страницы.
Очищаем историю переписки с ботом в Telegram, запускаем его снова. Кликаем по первому пункту меню и после того, как он присылает информацию, видим, что появилась кнопка «Назад», по нажатию на которую происходит перенаправление в главное меню.
Такую кнопку возвращения можно сделать для всех пунктов меню.
Простой бот, созданный в BotMother, будет выглядеть в вашем личном кабинете примерно так, как на изображении ниже.
Преимущества и недостатки ManyBot и BotMother
ManyBot иногда «тормозит» и не отвечает на введенные в бот команды. Также при запуске бота, созданного на этом конструкторе, отправляется текстовая реклама от разработчиков.
Что касается плюсов, то тут можно выделить наличие функции рассылки, более или менее понятный интерфейс, абсолютную бесплатность и возможность отслеживать статистику.
BotMother почти не имеет недостатков, кроме невозможности использовать платные компоненты в рамках бесплатного аккаунта и создания только одного free-бота.
В остальном сервис просто отличный. Много различных функций, понятные цепочки действий, никакой левой рекламы и детальное руководство в форматах текста и видео.
Боты — всё по этой теме для программистов
Создаём бота в Telegram для управления платными подписками на канал
Подробная инструкция о том, как создать бота для предоставления демо-доступа и контроля подписок на приватный канал в Telegram.
Боты для Discord на Python: проект для начинающих
Не нужно ничего устанавливать и платить за размещение. Такие боты для Discord без проблем могут работать в бесплатном «облаке».
Создание голосового бота: взаимодействие с веб-интерфейсом через мобильный телефон
В этой статье разработчик из Voximplant расскажет нам, как он создавал бота, который общается с пользователем голосом и показывает ему картинки в браузере.
А вы уверены, что общаетесь с человеком?
В работе рассматриваются принципы работы чат-ботов. С пониманием того, как они работают, можно вывести критерии, помогающие людям выявить бота.
Где создать своего бота и соревноваться по сети: подборка площадок
Хотите написать свой Скайнет, но не знаете, с чего начать? Начните с малого! Представляем вашему вниманию подборку онлайн-площадок, на которых можно создавать своих ботов и сталкивать их с ботами других людей.
Создаём политического Twitter-бота с помощью Node.js и StdLib
Автоматизация правит миром. Разбираемся, как, используя цепи Маркова, на основе двух существующих аккаунтов, сделать самообучающегося Twitter-бота.
Telegram-бот на Python за полчаса с aiogram
Напишем простой Telegram-бот на Python с использованием aiogram, Docker и AWS, предварительно ознакомившись с нужными инструментами.
Курс «Создание чат-бота для Telegram»
Русскоязычный видеокурс по созданию чат-бота для мессенджера Telegram, обновленный в 2017 году. Автор курса подробно рассказывает о построении архитектуры бота и приводит примеры написания логики. Помимо базового курса автор предлагает…
/dev/null не нужен: пишем бота на Python, который будет присылать свежие мемасики
Сегодня мы создадим бота для Facebook Messenger, который будет присылать нам свежие мемы, мотивационные сообщения и шутки. В этой статье есть большая часть информации, которую нужно знать для создания своего бота.
Соцсеть в виртуальной реальности, управление компьютером силой мысли и множество новинок для разработчиков — всё, что Facebook показала на конференции F8
18–19 апреля прошла ежегодная конференция Facebook под названием F8. В рамках этого события компания показала множество различных новинок.
Советы по проектированию интерфейса чат-ботов: лучшая практика
Чат-боты сейчас очень популярны, особенно в мессенджерах и социальных сетях — почитайте, например, наше руководство по созданию бота для ВКонтакте. С помощью ботов заказывают еду, покупают билеты, выбирают одежду и делают многое,…
Бот ВКонтакте: руководство и полезные инструменты разработки
Разработка ботов для мессенджеров — тренд 2016 года. Бот в соц. сети «ВКонтакте» — новый тренд в России, а потому мы разберём его разработку прямо сейчас
Обзор: создаем погодного бота на основе Microsoft Bot Framework и искусственного интеллекта LUIS
Очевидно, разработка технологий искусственного интеллекта становится одним из приоритетных направлений в деятельности Microsoft. В ходе пленарного выступления на конференции Build 2016 был анонсирован новый набор инструментов для разработки ботов —…
Как создавать ботов в Telegram / Хабр
24 июня разработчики Telegram
открылиплатформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к
Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.
Рассмотрим API на примере создания тривиального бота:
1. Регистрация
Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот —
@BotFather.
Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.
Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.
Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.
2. Программирование
Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.
Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)
Каркас бота:
URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN
MyURL = "https://example.com/hook"
api = requests.Session()
application = tornado.web.Application([
(r"/", Handler),
])
if __name__ == '__main__':
signal.signal(signal.SIGTERM, signal_term_handler)
try:
set_hook = api.get(URL + "setWebhook?url=%s" % MyURL)
if set_hook.status_code != 200:
logging.error("Can't set hook: %s. Quit." % set_hook.text)
exit(1)
application.listen(8888)
tornado.ioloop.IOLoop.current().start()
except KeyboardInterrupt:
signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.
Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.
class Handler(tornado.web.RequestHandler):
def post(self):
try:
logging.debug("Got request: %s" % self.request.body)
update = tornado.escape.json_decode(self.request.body)
message = update['message']
text = message.get('text')
if text:
logging.info("MESSAGE\t%s\t%s" % (message['chat']['id'], text))
if text[0] == '/':
command, *arguments = text.split(" ", 1)
response = CMD.get(command, not_found)(arguments, message)
logging.info("REPLY\t%s\t%s" % (message['chat']['id'], response))
send_reply(response)
except Exception as e:
logging.warning(str(e))
Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект
Message.
Собственно, её код довольно прост:
def send_reply(response):
if 'text' in response:
api.post(URL + "sendMessage", data=response)
Теперь, когда вся логика бота описана можно начать придумывать ему команды.
3. Команды
Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:
def help_message(arguments, message):
response = {'chat_id': message['chat']['id']}
result = ["Hey, %s!" % message["from"].get("first_name"),
"\rI can accept only these commands:"]
for command in CMD:
result.append(command)
response['text'] = "\n\t".join(result)
return response
Структура message[‘from’] — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message[‘chat’][‘id’] — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.
Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.
После этого можно добавить какую-нибудь свою команду, например, /base64:
def base64_decode(arguments, message):
response = {'chat_id': message['chat']['id']}
try:
response['text'] = b64decode(" ".join(arguments).encode("utf8"))
except:
response['text'] = "Can't decode it"
finally:
return response
Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот: I: /setcommands
BotFather : Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:
command1 — Description
command2 — Another description
I:
whoisyourdaddy — Information about author
base64 — Base64 decode
BotFather: Success! Command list updated. /help
C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.
4. Свобода
Как можно было заметить, Telegram присылает сообщение целиком, а не разбитое, и ограничение на то, что команды начинаются со слеша — только для удобства мобильных пользователей. Благодаря этому можно научить бота немного говорить по-человечески.
UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)
- All messages that start with a slash ‘/’ (see Commands above)
- Messages that mention the bot by username
- Replies to the bot’s own messages
- Service messages (people added or removed from the group, etc.)
Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.
Для начала в Handler добавляем обработчик:
if text[0] == '/':
...
else:
response = CMD["<speech>"](message)
logging.info("REPLY\t%s\t%s" % (message['chat']['id'], response))
send_reply(response)
А потом в список команд добавляем псевдо-речь:
RESPONSES = {
"Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"],
"Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"],
"Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"],
"Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",],
}
def human_response(message):
leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1)[0]
response = {'chat_id': message['chat']['id']}
if leven[1] < 75:
response['text'] = "I can not understand you"
else:
response['text'] = random.choice(RESPONSES.get(leven[0])).format_map(
{'name': message["from"].get("first_name", "")}
)
return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.
5. Не текст.
Боты, как и любой нормальный пользователь Telegram, могут не только писать сообщения, но и делиться картинками, музыкой, стикерами.
Для примера расширим словарь RESPONSES:
RESPONSES["What time is it?"] = ["<at_sticker>", "{date} UTC"]
И будем отлавливать текст :
if response['text'] == "<at_sticker>":
response['sticker'] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC"
del response['text']
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:
def send_reply(response):
if 'sticker' in response:
api.post(URL + "sendSticker", data=response)
elif 'text' in response:
api.post(URL + "sendMessage", data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:
6. Возможности
Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).
Вспоминая статью про умный дом, могу сказать, что теперь извращений меньше, а работа прозрачнее.
7. Ограничения
К сожалению, на данный момент существует ограничение на использование webHook — он работает только по https и только с валидным сертификатом, что, например для меня пока критично за счет отсутствия поддержки сертифицирующими центрами динамических днс.
К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:
while True:
r = requests.get(URL + "?offset=%s" % (last + 1))
if r.status_code == 200:
for message in r.json()["result"]:
last = int(message["update_id"])
requests.post("http://localhost:8888/",
data=json.dumps(message),
headers={'Content-type': 'application/json',
'Accept': 'text/plain'}
)
else:
logging.warning("FAIL " + r.text)
time.sleep(3)
P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.
UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч ‘method’: ‘sendMessage’ (или любой другой метод, используемый ботом).
Python Discord Bot Tutorial — Создайте код для Discord бота и разместите его бесплатно
Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.
Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.
Мы собираемся использовать ряд инструментов, включая Discord API, библиотеки Python и платформу облачных вычислений Repl.it.
Существует также видеоверсия этого письменного руководства.Видео встроено ниже, а письменная версия — после видео.
Как создать учетную запись Discord Bot
Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.
Вот шаг к созданию учетной записи Discord Bot.
1. Убедитесь, что вы вошли на сайт Discord.
2. Перейдите на страницу приложения.
3. Щелкните кнопку «Новое приложение».
4.Дайте приложению имя и нажмите «Создать».
5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить, нажав «Да, сделай это!»
Оставить настройки по умолчанию для Public Bot (отмечено) и Require OAuth3 Code Grant (не отмечено).
Ваш бот создан. Следующим шагом будет копирование токена.
Этот токен является паролем вашего бота, поэтому никому его не сообщайте. Это может позволить кому-то войти в ваш бот и делать разные плохие вещи.
Вы можете регенерировать токен, если он случайно станет доступен для общего доступа.
Как пригласить вашего бота присоединиться к серверу
Теперь вам нужно подключить своего бота к серверу. Для этого вы должны создать для него URL-адрес приглашения.
Перейдите на вкладку «OAuth3». Затем выберите «бот» в разделе «области действия».
Теперь выберите необходимые разрешения для бота. Наш бот будет в основном использовать текстовые сообщения, поэтому нам не нужно много разрешений. Вам может потребоваться больше, в зависимости от того, что вы хотите, чтобы ваш бот делал.Будьте осторожны с разрешением «Администратор».
После выбора соответствующих разрешений нажмите кнопку «Копировать» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.
Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».
Чтобы добавить бота, вашей учетной записи необходимы права «Управление сервером».
Теперь, когда вы создали пользователя бота, мы начнем писать код Python для бота.
Как написать код простого бота Discord с помощью библиотеки discord.py
Мы будем использовать библиотеку Python discord.py, чтобы написать код для бота. discord.py — это оболочка API для Discord, которая упрощает создание бота Discord на Python.
Как создать реплику и установить discord.py
Вы можете разработать бота на локальном компьютере с помощью любого редактора кода. Однако в этом уроке мы будем использовать Repl.it, потому что это упростит любому следовать за ним.Repl.it — это онлайн-среда, которую вы можете использовать в своем веб-браузере.
Начните с перехода на Repl.it. Создайте новый Repl и выберите «Python» в качестве языка.
Чтобы использовать библиотеку discord.py, просто напишите import discord
вверху main.py
. Repl.it автоматически установит эту зависимость, когда вы нажмете кнопку «запустить».
Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:
python3 -m pip install -U discord.py
Возможно, вам придется использовать pip3
вместо pip
.
Если вы используете Windows, вместо этого вам следует использовать следующую строку:
py -3 -m pip install -U discord.py
Как настроить события Discord для вашего бота
discord.py revolves вокруг концепции событий. Событие — это то, что вы слушаете, а затем реагируете. Например, когда происходит сообщение, вы получаете событие об этом, на которое вы можете ответить.
Давайте создадим бота, который отвечает на конкретное сообщение. Этот простой код бота вместе с объяснением кода взят из документации discord.py. Позже мы добавим в бота дополнительные функции.
Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.
импортный рознь
импорт ОС
client = discord.Client ()
@ client.event
async def on_ready ():
print ('Мы вошли в систему как {0.пользователь} '. формат (клиент))
@ client.event
async def on_message (сообщение):
если message.author == client.user:
возвращение
если message.content.startswith ('$ hello'):
await message.channel.send ('Привет!')
client.run (os.getenv ('TOKEN'))
Создавая своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env
для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env
. Просто замените os.getenv ('TOKEN')
с токеном.
Файлы .env
используются для объявления переменных среды. На Repl.it большинство созданных вами файлов видны всем, но файлы .env
видны только вам. Другие люди, просматривающие общедоступный ответ, не смогут увидеть содержимое файла .env
.
Итак, если вы разрабатываете на Repl.it, включайте только личную информацию, такую как токены или ключи, в файл .env
.
Нажмите кнопку «Добавить файл» и создайте файл с именем .env
.
Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:
TOKEN = [вставьте токен сюда]
Теперь давайте рассмотрим, что делает каждая строка кода в коде вашего бота Discord.
- Первая строка импортирует библиотеку discord.py.
- Вторая строка импортирует библиотеку ОС, но она используется только для получения переменной
TOKEN
из файла.env
. Если вы не используете.env
, эта строка вам не нужна. - Затем мы создаем экземпляр клиента
- Декоратор
@ client.event ()
используется для регистрации события. Это асинхронная библиотека, поэтому все делается с помощью обратных вызовов. Обратный вызов — это функция, которая вызывается, когда происходит что-то еще. В этом коде событиеon_ready ()
вызывается, когда бот готов к использованию. Затем, когда бот получает сообщение, вызывается событиеon_message ()
. - Событие
on_message ()
срабатывает каждый раз при получении сообщения, но мы не хотим, чтобы оно выполняло какие-либо действия, если сообщение пришло от нас. Поэтому, еслиMessage.author
совпадает сClient.user
, код просто возвращается. - Затем мы проверяем, начинается ли
Message.content
с'$ hello'
. Если да, то бот отвечает«Привет!»
на канал, в котором он использовался. - Теперь, когда бот настроен, последняя строка запускает бот с токеном входа.Он получает токен из файла
.env
.
У нас есть код для бота, теперь нам просто нужно его запустить.
Как запустить бота
Теперь нажмите кнопку «Выполнить» вверху, чтобы запустить своего бота в repl.it.
Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:
В Windows:
py -3 main.py
В других системах:
python3 main. py
Теперь перейдите в свою комнату в Discord и введите «$ hello».Ваш бот должен ответить «Привет!».
Как улучшить бота
Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Поощрение бота».
Этот бот будет отвечать сообщением ободрения всякий раз, когда кто-то отправляет сообщение, содержащее грустное или удручающее слово.
Любой желающий сможет добавлять ободряющие сообщения для использования ботом, а отправленные пользователем сообщения будут храниться в базе данных Repl.it.
Бот также вернет случайную вдохновляющую цитату из API, когда кто-то наберет в чате сообщение «$ inspire».
Начнем с добавления функции «$ inspire».
Как добавить вдохновляющие цитаты к боту
Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote ()
и обновить код нашего бота для вызова функции.
Вот обновленный код. После кода я объясню новые части.
импортный рознь
импорт ОС
запросы на импорт
импортировать json
клиент = разлад.Клиент ()
def get_quote ():
response = requests.get ("https://zenquotes.io/api/random")
json_data = json.loads (response.text)
quote = json_data [0] ['q'] + "-" + json_data [0] ['a']
возврат (цитата)
@ client.event
async def on_ready ():
print ('Мы вошли в систему как {0.user}'. format (client))
@ client.event
async def on_message (сообщение):
если message.author == client.user:
возвращение
если message.content.startswith ('$ inspire'):
quote = get_quote ()
ждать message.channel.send (цитата)
клиент.run (os.getenv ('TOKEN'))
Теперь нам нужно импортировать модуль запросов
. Этот модуль позволяет нашему коду делать HTTP-запрос для получения данных из API. API возвращает JSON, поэтому модуль json
упрощает работу с возвращенными данными.
Функция get_quote ()
довольно проста. Во-первых, он использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.
Далее внутри функции мы используем json.loads ()
для преобразования ответа из API в JSON. Методом проб и ошибок я понял, как перевести цитату из JSON в нужный строковый формат. Цитата возвращается из функции в виде строки.
Ближе к концу обновляется последняя часть кода. Ранее он искал сообщение, которое начиналось с «$ hello». Теперь он ищет «$ inspire». Вместо того, чтобы возвращать «Hello!», Он получает цитату с quote = get_quote ()
и возвращает цитату.
На этом этапе вы можете запустить свой код и опробовать его.
Как добавить ободряющие сообщения к боту
Теперь мы реализуем функцию, при которой бот отвечает ободряющими сообщениями, когда пользователь отправляет сообщение с грустным словом.
Как добавить грустные слова к боту
Сначала нам нужно создать список Python, содержащий грустные слова, на которые будет отвечать бот.
Добавьте следующую строку после создания переменной client
:
sad_words = [«грустный», «депрессивный», «несчастный», «сердитый», «несчастный»]
Не стесняйтесь добавлять дополнительные слова к списку.
Как добавить ободряющие сообщения к боту
Теперь мы добавим список ободряющих сообщений, на которые бот ответит.
Добавьте следующий список после созданного вами списка sad_words
:
starter_encouragements = [
"Не унывать!",
"Повесить там.",
"Вы отличный человек / бот!"
]
Как и раньше, не стесняйтесь добавлять в список другие фразы по вашему выбору. На данный момент я использую всего три элемента, потому что позже мы добавим возможность пользователям добавлять больше ободряющих фраз для использования ботом.
Как отвечать на сообщения
Теперь нам нужно обновить нашего бота, чтобы он использовал два созданных нами списка. Во-первых, импортируйте случайный модуль, потому что бот будет случайным образом выбирать поощрительные сообщения. Добавьте следующую строку в операторы импорта вверху кода: import random
.
Теперь мы обновим функцию on_message ()
, чтобы проверить все сообщения, чтобы увидеть, содержат ли они слово из списка sad_words
. Если будет найдено грустное слово, бот отправит случайное сообщение ободрения.
Вот обновленный код:
async def on_message (сообщение):
если message.author == client.user:
возвращение
msg = message.content
если msg.startswith ('$ inspire'):
quote = get_quote ()
ждать message.channel.send (цитата)
если есть (слово в сообщении для слова в sad_words):
await message.channel.send (random.choice (starter_encouragements))
Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота. Но дальше вы узнаете, как реализовать более продвинутые функции и хранить данные с помощью Repl.это база данных.
Как включить сообщения, отправленные пользователями
Бот полностью работоспособен, но теперь давайте сделаем возможным обновление бота прямо из Discord. Пользователь должен иметь возможность добавлять больше обнадеживающих сообщений, которые бот будет использовать при обнаружении грустного слова.
Мы собираемся использовать встроенную базу данных Repl.it для хранения сообщений, отправленных пользователями. Эта база данных представляет собой хранилище ключей и значений, которое встроено в каждый ответ.
Вверху кода под другими операторами импорта добавьте из REPLIT import db
.Это позволит нам использовать базу данных Repl.it.
Пользователи смогут добавлять собственные поощрительные сообщения для использования ботом прямо из чата Discord. Прежде чем мы добавим новые команды для бота, давайте создадим две вспомогательные функции, которые будут добавлять пользовательские сообщения в базу данных и удалять их.
Добавьте следующий код после функции get_quote ()
:
def update_encouragements (diverging_message):
если "поощрения" в db.keys ():
поощрения = db ["поощрения"]
поощрения.добавить (поощрение_сообщение)
db ["поощрения"] = поощрения
еще:
db ["поощрения"] = [поощрение_сообщение]
def delete_encouragment (индекс):
поощрения = db ["поощрения"]
если len (поощрения)> index:
дель поощрения [индекс]
db ["поощрения"] = поощрения
Функция update_encouragements ()
принимает в качестве аргумента сообщение ободрения.
Сначала он проверяет, является ли «поощрение» ключом в базе данных. Если это так, он получает список поощрений, уже имеющихся в базе данных, добавляет новый в список и сохраняет обновленный список обратно в базу данных под ключом «поощрения».
Если база данных еще не содержит «поощрений», создается новый ключ с этим именем, и новое ободряющее сообщение добавляется в качестве первого элемента в списке.
Функция delete_encouragement ()
принимает индекс в качестве аргумента.
Получает список поощрений из базы данных, хранящейся под ключом «поощрения». Если количество элементов в списке поощрений больше, чем в указателе, то элемент списка в этом указателе удаляется.
Наконец, обновленный список сохраняется в базе данных под ключом «поощрения».
Вот обновленный код для функции on_message ()
. После кода я объясню новые разделы.
async def on_message (сообщение):
если message.author == client.user:
возвращение
msg = message.content
если msg.startswith ("$ inspire"):
quote = get_quote ()
ждать message.channel.send (цитата)
options = starter_encouragements
если "поощрения" в дб.ключи ():
options = options + db ["поощрения"]
если есть (слово в сообщении для слова в sad_words):
ожидание message.channel.send (random.choice (параметры))
если msg.startswith ("$ new"):
поощрение_message = msg.split ("$ новый", 1) [1]
update_encouragements (поощрение_сообщение)
await message.channel.send («Добавлено новое обнадеживающее сообщение.»)
если msg.startswith ("$ del"):
поощрения = []
если "поощрения" в db.keys ():
index = int (msg.split ("$ del", 1) [1])
delete_encouragment (индекс)
поощрения = db ["поощрения"]
жду сообщения.channel.send (поощрения)
Первая новая строка кода сверху: options = starter_encouragements
. Мы делаем копию starter_encouragements
, потому что мы собираемся добавить сообщения, отправленные пользователем, в этот список, прежде чем выбирать случайное сообщение для отправки ботом.
Мы проверяем, есть ли уже «поощрения» в ключах базы данных (это означает, что пользователь отправил хотя бы одно настраиваемое сообщение). Если это так, мы добавляем сообщения пользователей к поощрениям для начинающих.
Затем, вместо отправки случайного сообщения из starter_encouragements
, бот теперь отправляет случайное сообщение из вариантов
.
Следующий новый раздел кода используется для добавления нового сообщения, отправленного пользователем, в базу данных. Если сообщение Discord начинается с «$ new», то текст после «$ new» будет использоваться как новое обнадеживающее сообщение.
Код msg.split ("$ new", 1) [1]
отделяет сообщение от команды «$ new» и сохраняет сообщение в переменной.Обратите внимание на пробел в строке "$ new"
. Мы хотим все после пробела.
Мы вызываем вспомогательную функцию update_encouragements
с новым сообщением, а затем бот отправляет сообщение в чат Discord, подтверждающее, что сообщение было добавлено.
Третий новый раздел (в конце приведенного выше кода) проверяет, начинается ли новое сообщение Discord с «$ del». Это команда для удаления элемента из списка «поощрений» в базе данных.
Сначала новая переменная с именем поощрений
инициализируется как пустой массив. Причина этого в том, что этот раздел кода отправит сообщение с пустым массивом, если база данных не включает ключ «поощрения».
Если ключ «поощрения» находится в базе данных, индекс будет отделен от сообщения Discord, начинающегося с «$ del». Затем вызывается функция delete_encouragement ()
, передающая индекс для удаления. Обновленный список поощрений загружается в переменную поощрений
, а затем бот отправляет сообщение в Discord с текущим списком.
Final Bot Features
Бот должен работать, поэтому сейчас самое время его протестировать. Теперь мы добавим несколько заключительных функций.
Мы добавим возможность получать список отправленных пользователями сообщений прямо из Discord, а также добавим возможность выключать и включать, реагирует ли бот на грустные слова.
Я дам вам полный окончательный код программы, а затем я расскажу об обновлениях под кодом.
импортный рознь
импорт ОС
запросы на импорт
импортировать json
случайный импорт
из реплита импорта базы данных
клиент = разлад.Клиент ()
sad_words = ["грустный", "подавленный", "несчастный", "сердитый", "несчастный"]
starter_encouragements = [
"Не унывать!",
"Повесить там.",
"Вы отличный человек / бот!"
]
если "отвечает" не в db.keys ():
db ["отвечающий"] = Верно
def get_quote ():
response = requests.get ("https://zenquotes.io/api/random")
json_data = json.loads (response.text)
quote = json_data [0] ["q"] + "-" + json_data [0] ["a"]
возврат (цитата)
def update_encouragements (поощрение_message):
если "поощрения" в дб.ключи ():
поощрения = db ["поощрения"]
поощрения.аппенд (поощрение_сообщение)
db ["поощрения"] = поощрения
еще:
db ["поощрения"] = [поощрение_сообщение]
def delete_encouragment (индекс):
поощрения = db ["поощрения"]
если len (поощрения)> index:
дель поощрения [индекс]
db ["поощрения"] = поощрения
@ client.event
async def on_ready ():
print ("Мы вошли в систему как {0.user}". format (client))
@ client.event
async def on_message (сообщение):
если сообщение.автор == client.user:
возвращение
msg = message.content
если msg.startswith ("$ inspire"):
quote = get_quote ()
ждать message.channel.send (цитата)
если db ["отвечает"]:
options = starter_encouragements
если "поощрения" в db.keys ():
options = options + db ["поощрения"]
если есть (слово в сообщении для слова в sad_words):
ожидание message.channel.send (random.choice (параметры))
если msg.startswith ("$ new"):
поощрение_message = msg.split ("$ новый", 1) [1]
update_encouragements (поощрение_сообщение)
жду сообщения.channel.send ("Добавлено новое обнадеживающее сообщение.")
если msg.startswith ("$ del"):
поощрения = []
если "поощрения" в db.keys ():
index = int (msg.split ("$ del", 1) [1])
delete_encouragment (индекс)
поощрения = db ["поощрения"]
ждите message.channel.send (поощрения)
если msg.startswith ("$ list"):
поощрения = []
если "поощрения" в db.keys ():
поощрения = db ["поощрения"]
ждите message.channel.send (поощрения)
если сообщениеначинается с ("$ отвечает"):
значение = msg.split ("$ ответ", 1) [1]
если value.lower () == "истина":
db ["отвечающий"] = Верно
await message.channel.send ("Ответ включен.")
еще:
db ["отвечающий"] = Ложь
await message.channel.send ("Ответ отключен.")
client.run (os.getenv ("TOKEN"))
Первый раздел, добавленный в код, находится прямо под списком starter_encouragements
:
, если "ответ" отсутствует в db.keys ():
db ["отвечающий"] = True
Мы создаем новый ключ в базе данных с именем «отвечающий» и устанавливаем для него значение «True».Мы будем использовать это, чтобы определить, должен ли бот отвечать на грустные слова или нет. Поскольку база данных сохраняется даже после остановки работы программы, мы создаем новый ключ только в том случае, если он еще не существует.
Следующая новая часть кода заключается в том, что раздел, отвечающий на грустные слова, теперь находится внутри этого оператора if: if db ["отвечающий"]:
. Бот ответит только на грустные слова, если db ["отвечающий"] = True
. Возможность обновить это значение появится после этого следующего раздела.
Затем, после кода, заставляющего бота отвечать на команду «$ del», следует новый код для ответа на команду «$ list» при отправке в виде сообщения Discord.
Этот раздел начинается с создания пустого списка под названием поощрений
. Затем, если в базе данных уже есть поощрения, они заменяют только что созданный пустой список.
Наконец, бот отправляет список поощрений в виде сообщения Discord.
Далее идет последний новый раздел.Этот код заставляет бота отвечать на команду «$ responseing». Эта команда принимает аргумент «истина» или «ложь». Вот пример использования: «$ response true».
Код сначала извлекает аргумент со значением = msg.split ("$ Responding", 1) [1]
(как и раньше, обратите внимание на пробел в "$ Responding"
). Затем есть оператор if / else, который соответствующим образом устанавливает «отвечающий» ключ в базе данных и отправляет уведомление обратно в Discord. Если аргумент не равен «истина», код принимает «ложь».
Код для бота завершен! Теперь вы можете запустить бота и попробовать его. Но есть еще один важный шаг, который мы обсудим дальше.
Как настроить бота для непрерывной работы
Если вы запустите своего бота в repl.it, а затем закроете вкладку, на которой он работает, ваш бот перестанет работать.
Но есть два способа обеспечить непрерывную работу бота даже после закрытия веб-боузера.
Первый и самый простой способ — подписаться на платный тарифный план в Repl.Это. Их самый дешевый платный план называется Hacker Plan и включает в себя пять постоянных ответов.
Вы можете получить три месяца бесплатно, используя эту ссылку (только для первых 1000 человек): https://repl.it/claim?code=tryalwayson2103
После того, как вы подписались на этот план, откройте свой Repl и щелкните имя наверху. Затем выберите вариант «Всегда включен».
Есть еще один способ сохранить работу кода даже на уровне бесплатного пользования, но он немного сложнее. Repl.it продолжит работу веб-сервера даже после закрытия вкладки.Но даже веб-сервер будет работать без использования только до часа.
Вот что говорится в документации repl.it:
После развертывания сервер будет продолжать работать в фоновом режиме даже после закрытия вкладки браузера. Сервер будет бодрствовать и оставаться активным в течение часа после последнего запроса, после чего он перейдет в стадию сна. Спящие ответы будут активированы, как только получат другой запрос; нет необходимости повторно запускать ответ. Однако, если вы внесете изменения в свой сервер, вам нужно будет перезапустить ответ, чтобы увидеть эти изменения, отраженные в действующей версии.
Чтобы бот работал непрерывно, мы будем использовать другую бесплатную службу под названием Uptime Robot по адресу https://uptimerobot.com/.
Uptime Robot можно настроить на проверку связи с веб-сервером бота на repl.it каждые 5 минут. При постоянных пингах бот никогда не перейдет в стадию сна и просто продолжит работу.
Итак, нам нужно сделать еще две вещи, чтобы наш бот работал непрерывно:
- создать веб-сервер в repl.it и
- настроить Uptime Robot для непрерывной проверки связи с веб-сервером.
Как создать веб-сервер в repl.it
Создать веб-сервер проще, чем вы думаете.
Для этого создайте в своем проекте новый файл с именем keep_alive.py
.
Затем добавьте следующий код:
из флакона для импорта Flask
из потокового импорта Thread
app = Flask ('')
@ app.route ('/')
def home ():
return "Здравствуйте. Я жив!"
def run ():
app.run (хост = '0.0.0.0', порт = 8080)
def keep_alive ():
t = поток (цель = запустить)
т.Начните()
В этом коде мы используем Flask для запуска веб-сервера. Сервер возвращает «Привет. Я жив». всем, кто его посещает. Сервер будет работать в отдельном потоке от нашего бота. Мы не будем здесь все обсуждать, потому что остальное не имеет отношения к нашему боту.
Теперь нам просто нужен бот для запуска этого веб-сервера.
Добавьте следующую строку в начало main.py
, чтобы импортировать сервер.
из keep_alive import keep_alive
Чтобы запустить веб-сервер, когда main.py
, добавьте следующую строку в качестве предпоследней строки прямо перед запуском бота.
keep_alive ()
Когда вы запустите бота на repl.it после добавления этого кода, откроется новое окно веб-сервера. Отображается URL-адрес веб-сервера. Скопируйте URL-адрес, чтобы использовать его в следующем разделе.
Как настроить Uptime Robot
Теперь нам нужно настроить Uptime Robot для проверки связи с веб-сервером каждые пять минут. Это заставит бота работать постоянно.
Создайте бесплатную учетную запись на https://uptimerobot.com/.
После входа в свою учетную запись нажмите «Добавить новый монитор».
Для нового монитора выберите «HTTP (s)» в качестве типа монитора и назовите его как хотите. Затем вставьте URL-адрес вашего веб-сервера из repl.it. Наконец, нажмите «Создать монитор».
Готово! Теперь бот будет работать непрерывно, поэтому люди всегда могут взаимодействовать с ним на Repl.it.
Заключение
Теперь вы знаете, как создать бота Discord с помощью Python и постоянно запускать его в облаке.
Библиотека discord.py может делать еще много всего. Поэтому, если вы хотите предоставить боту Discord еще больше возможностей, следующим шагом будет ознакомление с документацией по discord.py.
Как создать бота 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:
С этой домашней страницы вы можете просматривать и добавлять друзей, личные сообщения и гильдии. Отсюда выберите значок + в левой части веб-страницы, чтобы Добавить сервер :
Будет представлено два варианта: Создать сервер и Присоединиться к серверу . В этом случае выберите Создайте сервер и введите имя для своей гильдии:
Когда вы закончите создание своей гильдии, вы сможете увидеть пользователей справа и каналы слева:
Последний шаг в Discord — зарегистрировать своего бота в новой гильдии.
Добавление бота в гильдию
Бот не может принимать приглашения, как обычный пользователь. Вместо этого вы добавите своего бота, используя протокол OAuth3.
Технические детали: OAuth3 — это протокол для работы с авторизацией, при котором служба может предоставить клиентскому приложению ограниченный доступ на основе учетных данных приложения и разрешенных областей.
Для этого вернитесь на портал разработчика и выберите страницу OAuth3 в левой навигационной панели:
В этом окне вы увидите Генератор URL-адресов OAuth3.
Этот инструмент генерирует URL-адрес авторизации, который обращается к Discord OAuth3 API и разрешает доступ к API с использованием учетных данных вашего приложения.
В этом случае вы захотите предоставить пользователю-боту вашего приложения доступ к API Discord, используя учетные данные OAuth3 вашего приложения.
Для этого прокрутите вниз и выберите bot из SCOPES options и Administrator from 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!
Отлично! Ваш Client
подключился к Discord с помощью токена вашего бота. В следующем разделе вы создадите этот Client
, взаимодействуя с другими API Discord.
Взаимодействие с API Discord
Используя клиент
, вы получаете доступ к широкому спектру 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
перенаправляет данные события соответствующему обработчику событий на вашем подключенном Client
.
В 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. Однако фактический Client
отличается. Вместо использования обычного базового класса, клиент
является экземпляром 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 (ТОКЕН)
Не забудьте импортировать случайный
в верхней части модуля, поскольку обработчик 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 (ТОКЕН)
Новый обработчик сообщений исключения
позволяет вызывать исключение 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
. Если другое событие вызывает исключение Exception
, тогда мы просто хотим, чтобы наш обработчик повторно вызвал исключение, чтобы вызвать поведение по умолчанию.
Запускаем бота.py
и отправьте сообщение об исключении
еще раз, чтобы просмотреть вывод в err.log
:
$ cat err.log
Необработанное сообщение: 4084 pinned = False author = >
Вместо только трассировки стека у вас есть более информативная ошибка, показывающая сообщение
, которое заставило on_message ()
вызвать DiscordException
, сохраненное в файл для более длительного хранения.
Технические детали: Если вы хотите принять во внимание фактическое исключение Exception
при записи сообщений об ошибках в err.log
, тогда вы можете использовать функции из sys
, такие как exc_info ()
.
Теперь, когда у вас есть некоторый опыт обработки различных событий и взаимодействия с API Discord, вы узнаете о подклассе Client
, называемом Bot
, который реализует некоторые удобные функции, специфичные для ботов.
Подключение бота
Bot
— это подкласс Client
, который добавляет немного дополнительных функций, которые могут быть полезны при создании пользователей-ботов. Например, Bot
может обрабатывать события и команды, вызывать проверки и многое другое.
Прежде чем перейти к особенностям, характерным для Bot
, сконвертируйте bot.py
, чтобы использовать Bot
вместо Client
:
# 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
.
Контекст
содержит данные, такие как канал и гильдию, из которых пользователь вызвал команду
.
Запускаем программу:
Теперь, когда ваш бот запущен, вы можете перейти в 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
позволяет преобразовать эти параметры в ожидаемый тип.
Например, если вы хотите создать команду Command
для вашего пользователя-бота, чтобы имитировать бросание кубиков (зная, что вы уже узнали), вы можете определить это так:
@ bot.command (name = 'roll_dice', help = 'Имитирует бросание игральных костей.')
async def roll (ctx, number_of_dice, number_of_sides):
игральные кости = [
str (random.choice (диапазон (1, число_сторон + 1)))
для _ в диапазоне (число_кости)
]
ожидание ctx.send (',' .join (игра в кости))
Вы определили рулон
для получения двух параметров:
- Количество бросаемых кубиков
- Количество граней на матрицу
Затем вы украсили его .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
преобразователь
определен с использованием аннотаций функций 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
, что делает их совместимыми с логикой вашей функции.
Примечание: Преобразователь
может быть любым вызываемым, а не только типом данных. Аргумент будет передан вызываемому объекту, а возвращаемое значение будет передано в Command
.
Далее вы узнаете об объекте Проверить
и о том, как он может улучшить ваши команды.
Проверка командных предикатов
Проверка
— это предикат, который оценивается перед выполнением команды
, чтобы убедиться, что контекст
, окружающий вызов команды
, действителен.
В предыдущем примере вы сделали что-то подобное, чтобы убедиться, что пользователь, отправивший сообщение, которое обрабатывает бот, сам не является пользователем-ботом:
если сообщение.автор == 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 ()
также украшена проверкой
с именем 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
- Как использовать команды, проверки и преобразователи ботов
Чтобы узнать больше о мощном дискорде .py
и выведите своих ботов на новый уровень, ознакомившись с их обширной документацией. Кроме того, теперь, когда вы знакомы с API Discord в целом, у вас есть лучшая основа для создания других типов приложений Discord.
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Создание бота Discord на Python
Ботов: Введение для разработчиков
Боты — это сторонние приложения, которые работают внутри Telegram.Пользователи могут взаимодействовать с ботами, отправляя им сообщения, команды и встроенные запросы. Вы управляете своими ботами с помощью HTTPS-запросов к нашему Bot API.
1. Что можно делать с ботами?Чтобы назвать несколько вещей, вы можете использовать ботов для:
Получайте индивидуальные уведомления и новости . Бот может действовать как умная газета, рассылая вам релевантный контент, как только он будет опубликован.
Интеграция с другими сервисами .Бот может дополнять чаты Telegram контентом из внешних сервисов.
Gmail Bot , GIF bot , IMDB bot , Wiki bot , Music bot , Youtube bot , GitHubBotПринимать платежи от пользователей Telegram . Бот может предлагать платные услуги или работать как виртуальная витрина. Подробнее »
Demo Shop Bot , Demo StoreСоздание пользовательских инструментов .Бот может предоставлять вам оповещения, прогнозы погоды, переводы, форматирование или другие услуги.
Markdown бот , Наклейка бот , Голосовать бот , Лайк ботСоздание однопользовательских и многопользовательских игр . Бот может предложить богатые возможности HTML5, от простых аркад и головоломок до 3D-шутеров и стратегических игр в реальном времени.
GameBot , GameeСоздание социальных служб .Бот может связывать людей, которые ищут партнеров для разговора на основе общих интересов или близости.
Практически все остальное . Кроме посуды — боты плохо мыть посуду.
По сути, боты Telegram — это специальные учетные записи, для настройки которых не требуется дополнительный номер телефона. Пользователи могут взаимодействовать с ботами двумя способами:
- Отправляйте сообщения и команды ботам, открывая с ними чат или добавляя их в группы.
- Отправляйте запросы прямо из поля ввода, вводя @username бота и запрос. Это позволяет отправлять контент от встроенных ботов прямо в любой чат, группу или канал.
Сообщения, команды и запросы, отправляемые пользователями, передаются программному обеспечению, работающему на ваших серверах. Наш промежуточный сервер обрабатывает все шифрование и связь с Telegram API за вас. Вы общаетесь с этим сервером через простой HTTPS-интерфейс, который предлагает упрощенную версию Telegram API.Мы называем этот интерфейс нашим Bot API.
3. Как создать бота?Подробное описание Bot API доступно на этой странице »
Для этого есть… бот. Просто поговорите с BotFather (описанным ниже) и выполните несколько простых шагов. После того, как вы создали бота и получили токен авторизации, перейдите к руководству по API бота, чтобы узнать, чему вы можете научить своего бота.
4.Чем боты отличаются от людей?Вы также можете ознакомиться с некоторыми примерами кода здесь »
- У ботов нет статуса в сети и отметок времени последнего посещения, вместо этого в интерфейсе отображается метка «бот» .
- У ботов ограниченное облачное хранилище — старые сообщения могут быть удалены сервером вскоре после их обработки.
- Боты не могут инициировать разговоры с пользователями. Пользователь должен либо добавить их в группу, либо сначала отправить им сообщение. Люди могут использовать
ссылок t.me/
или поиск по имени пользователя, чтобы найти вашего бота. - Имена пользователей ботов всегда заканчиваются на «бот» (например, @TriviaBot, @GitHub_bot).
- При добавлении в группу боты по умолчанию не получают все сообщения (см. Режим конфиденциальности).
- Боты никогда не едят, не спят и не жалуются (если специально не запрограммировано иное).
5. Бонусы для ботов Боты
Telegram уникальны во многих отношениях — мы предлагаем два типа клавиатур, дополнительные интерфейсы для команд по умолчанию и глубинные ссылки, а также форматирование текста, интегрированные платежи и многое другое.
Встроенный режимПользователи могут взаимодействовать с вашим ботом с помощью встроенных запросов прямо из поля ввода текста в любом чате . Все, что им нужно сделать, это начать сообщение с именем пользователя вашего бота, а затем ввести запрос.
Получив запрос, ваш бот может вернуть некоторые результаты. Как только пользователь нажимает на один из них, он отправляется в текущий открытый чат пользователя. Таким образом, люди могут запрашивать контент у вашего бота в любом из своих чатов, групп или каналов.
Загляните в этот блог, чтобы увидеть в действии пример встроенного бота. Вы также можете попробовать ботов @sticker и @music, чтобы убедиться в этом сами.
Мы также реализовали простой способ для вашего бота переключаться между встроенным режимом и режимом PM.
Платежная платформаПодробнее о встроенном режиме »
Вы можете использовать ботов для приема платежей от пользователей Telegram по всему миру.
- Отправляйте счета на в любой чат , в том числе в группы и каналы.
- Создание счетов-фактур, которые могут быть переадресованы, и использованы несколькими покупателями для заказа вещей.
- Используйте встроенный режим, чтобы помочь пользователям показывать ваши товары и услуги своим друзьям и сообществам.
- Разрешить подсказок от пользователей с предварительно установленными и настраиваемыми суммами.
- Принимать платежи от пользователей в мобильных или настольных приложениях .
- Попробуйте @ShopBot, чтобы создать тестовый счет — или начните сообщение с
@ShopBot ...
в любом чате для встроенного счета . - Зайдите в Demo Shop, чтобы увидеть пример канала Telegram, используемого в качестве виртуальной витрины .
Игровая платформаПодробнее о Платежной платформе »
Боты могут предложить своим пользователям игр HTML5 , чтобы играть в одиночку или соревноваться друг с другом в группах и в чатах один на один. Платформа позволяет вашему боту отслеживать рекордов, за каждую игру, сыгранную в каждом чате. Каждый раз, когда в игре появляется новый лидер, другие участники чата уведомляются о том, что им нужно активизировать его.
Поскольку в основе лежит технология HTML5, игры могут быть любыми, от простых аркад и головоломок до многопользовательских 3D-шутеров и стратегических игр в реальном времени. Наша команда создала для вас несколько простых демонстраций:
Вы также можете проверить бота @gamee , у которого более 20 игр.
КлавиатурыПодробнее об игровой платформе »
Традиционных чат-ботов, конечно, можно научить понимать человеческий язык.Но иногда вам требуется более формальный ввод от пользователя — и именно здесь настраиваемых клавиатур могут стать чрезвычайно полезными.
Всякий раз, когда ваш бот отправляет сообщение, он может передать специальную клавиатуру с предопределенными параметрами ответа (см. ReplyKeyboardMarkup). Приложения Telegram, которые получают сообщение, будут отображать вашу клавиатуру для пользователя. Нажатие любой кнопки немедленно отправит соответствующую команду. Таким образом, вы можете значительно упростить взаимодействие пользователя с вашим ботом.
В настоящее время мы поддерживаем текст и эмодзи для ваших кнопок. Вот несколько примеров пользовательской клавиатуры:
Встроенные клавиатуры и обновление на летуДля получения дополнительной технической информации о настраиваемых клавиатурах обратитесь к руководству по Bot API (см. SendMessage).
Бывают случаи, когда вы предпочитаете делать что-либо, не отправляя никаких сообщений в чат. Например, когда ваш пользователь меняет настройки или просматривает результаты поиска. В таких случаях вы можете использовать встроенные клавиатуры, которые интегрированы непосредственно в сообщения, которым они принадлежат.
В отличие от настраиваемых клавиатур для ответов, нажатие кнопок на встроенных клавиатурах не приводит к отправке сообщений в чат. Вместо этого встроенные клавиатуры поддерживают кнопки, которые работают за кулисами: кнопки обратного вызова, кнопки URL и переключение на встроенные кнопки.
Когда используются кнопки обратного вызова, ваш бот может обновлять свои существующие сообщения (или только свои клавиатуры), чтобы чат оставался аккуратным. Ознакомьтесь с этими примерами ботов, чтобы увидеть встроенные клавиатуры в действии: @music, @vote, @like.
Команды КомандыПодробнее о встроенных клавиатурах и редактировании «на лету» »
представляют собой более гибкий способ связи с вашим ботом.Может использоваться следующий синтаксис:
/ команда
Команда всегда должна начинаться с символа «/» и не может быть длиннее 32 символов. Команды могут использовать латинские буквы, цифры и символы подчеркивания. Вот несколько примеров:
/ get_messages_stats
/ set_timer 10мин будильник!
/ get_timezone Лондон, Великобритания
Сообщения, начинающиеся с косой черты, всегда передаются боту (вместе с ответами на его сообщения и сообщениями, которые @ упоминают бота по имени пользователя).Приложения Telegram будут:
- Предложите список поддерживаемых команд с описаниями, когда пользователь вводит ‘/’ (для того, чтобы это работало, вы должны предоставить список команд для BotFather). Нажатие на команду в списке немедленно отправляет команду.
- Показывать дополнительную кнопку (/) в поле ввода во всех чатах с ботами. При нажатии на нее набирается ‘/’ и отображается список команд.
- Выделите / команды в сообщениях. Когда пользователь нажимает выделенную команду, команда отправляется сразу.
Если в группе несколько ботов, можно добавить имена пользователей ботов в команды, чтобы избежать путаницы:
/ старт @ TriviaBot
/ start @ ApocalypseBot
Это делается автоматически, когда команды выбираются из списка предложений. Помните, что ваш бот должен уметь обрабатывать команды, за которыми следует его имя пользователя.
Глобальные командыЧтобы упростить пользователям навигацию по мультивселенной ботов, мы просим всех разработчиков поддерживать несколько основных команд.В приложениях Telegram будет ярлыков интерфейса для этих команд.
- / начало — начинает взаимодействие с пользователем, например, отправляя приветственное сообщение. Эту команду также можно использовать для передачи боту дополнительных параметров (см. Глубинные ссылки)
- / help — возвращает справочное сообщение. Это может быть краткий текст о том, что может делать ваш бот, и список команд.
- / settings — (если применимо) возвращает настройки бота для этого пользователя и предлагает команды для редактирования этих настроек.
Пользователи увидят кнопку Start , когда они впервые начнут беседу с вашим ботом. Справка и Настройки Ссылки будут доступны в меню на странице профиля бота.
Форматирование: полужирный, курсив, текст фиксированной ширины и встроенные ссылкиВы можете использовать полужирный, курсив или текст фиксированной ширины, а также встроенные ссылки в сообщениях ваших ботов. Клиенты Telegram будут отображать их соответственно.
Режим конфиденциальностиПодробнее читайте в руководстве по Bot API »
Ботов часто добавляют в группы, чтобы улучшить общение между пользователями-людьми, например.грамм. путем предоставления новостей, уведомлений от внешних служб или дополнительных функций поиска. Это особенно актуально для групп, связанных с работой. Теперь, когда вы делитесь группой с ботом, вы склонны спрашивать себя: «Как я могу быть уверен, что этот маленький негодяй не продает мою историю чата моим конкурентам?» Ответ — приватный режим .
Бот, работающий в режиме конфиденциальности, не будет получать все сообщения, которые люди отправляют группе. Вместо этого он получит только:
- Сообщения, начинающиеся с косой черты ‘/’ (см. Команды выше)
- Ответы на собственные сообщения бота
- Служебные сообщения (люди, добавленные или удаленные из группы и т. Д.)
- Сообщения из каналов, в которых он участвует
С одной стороны, это помогает некоторым из нас лучше спать по ночам (в наших колпаках из фольги), с другой — позволяет разработчикам ботов экономить много ресурсов, поскольку им не нужно обрабатывать десятки тысяч несущественных сообщения каждый день.
Режим конфиденциальности включен по умолчанию для всех ботов, кроме ботов, которые были добавлены в группу как админов (админы ботов всегда получают все сообщения). Его можно отключить, чтобы бот получал все сообщения, как обычный пользователь (для того, чтобы это изменение вступило в силу, необходимо повторно добавить бота в группу).Мы рекомендуем делать это только в тех случаях, когда для работы вашего бота это абсолютно необходимо — пользователи всегда могут видеть текущие настройки конфиденциальности бота в списке участников группы. В большинстве случаев использования опции принудительного ответа для сообщений бота более чем достаточно.
Итак, какие именно сообщения будет получать мой бот? »
Глубокие ссылкиTelegram-боты имеют механизм глубоких ссылок, который позволяет передавать дополнительные параметры боту при запуске. Это может быть команда, запускающая бота, или токен аутентификации для подключения учетной записи Telegram пользователя к его учетной записи на каком-либо внешнем сервисе.
У каждого бота есть ссылка, открывающая с ним беседу в Telegram — https://t.me/
. К этой ссылке можно добавить параметры start или startgroup со значениями длиной до 64 символов. Например:
https://t.me/triviabot?startgroup=test
A-Z
, a-z
, 0-9
, _
и -
разрешены. Мы рекомендуем использовать base64url для кодирования параметров с двоичными и другими типами содержимого.
Переход по ссылке с параметром start откроет индивидуальный диалог с ботом, показывая кнопку СТАРТ вместо поля ввода. Если используется параметр startgroup , пользователю предлагается выбрать группу для добавления бота. Как только пользователь подтверждает действие (нажимает кнопку СТАРТ в своем приложении или выбирает группу для добавления бота), ваш бот получит сообщение от этого пользователя в следующем формате:
/ начало PAYLOAD
PAYLOAD
обозначает значение параметра start или startgroup , которое было передано в ссылке.
Предположим, сайт example.com хочет отправлять уведомления своим пользователям через бота Telegram. Вот что они могут сделать, чтобы включить уведомления для пользователя с идентификатором 123
.
- Создайте бота с подходящим именем пользователя, например @ExampleComBot
- Настроить веб-перехватчик входящих сообщений
- Сгенерировать случайную строку достаточной длины, например
$ memcache_key = "vCh2vGWJxfSeofSAs0K5PA"
- Поместите значение
123
с ключом$ memcache_key
в Memcache на 3600 секунд (один час) - Покажем нашему пользователю кнопку
https: // t.меня / ExampleComBot? start = vCh2vGWJxfSeofSAs0K5PA
- Настройте процессор веб-перехватчиков для запроса Memcached с параметром, который передается во входящих сообщениях, начиная с
/ start
. Если ключ существует, запишите chat_id, переданный веб-перехватчику, как telegram_chat_id для пользователя123
. Удалите ключ из Memcache. - Теперь, когда мы хотим отправить уведомление пользователю
123
, проверяем, есть ли у него поле telegram_chat_id .Если да, используйте метод sendMessage в API ботов, чтобы отправить им сообщение в Telegram.
Некоторым ботам для правильной работы требуются дополнительные данные от пользователя. Например, знание местоположения пользователя помогает получить более релевантные географические результаты. Номер телефона пользователя может быть очень полезен для интеграции с другими сервисами, такими как банки и т. Д.
Боты могут запрашивать у пользователя его местонахождение и номер телефона с помощью специальных кнопок.Обратите внимание, что кнопки и номера телефона, и кнопки запроса местоположения будут работать только в приватных чатах.
При нажатии этих кнопок клиенты Telegram отображают подтверждающее уведомление, которое сообщает пользователю, что должно произойти.
Руководство: Цифровые и позиционные кнопки »
6. BotFather
Вверх, чтобы узнать все о ботах Telegram »
BotFather — единственный бот, который правит ими всеми. Это поможет вам создать новых ботов и изменить настройки существующих.
Создание нового ботаИспользуйте команду / newbot для создания нового бота. BotFather запросит у вас имя и имя пользователя, а затем сгенерирует токен авторизации для вашего нового бота.
Имя вашего бота отображается в контактных данных и в других местах.
Имя пользователя — это короткое имя, которое используется в упоминаниях и ссылках на t.me. Имена пользователей состоят из 5–32 символов и нечувствительны к регистру, но могут включать только латинские символы, числа и символы подчеркивания.Имя пользователя вашего бота должно заканчиваться на на «бот», например tetris_bot или TetrisBot.
Токен — это строка, соответствующая строкам 110201543: AAHdqTcvCh2vGWJxfSeofSAs0K5PALDsaw
, которая требуется для авторизации бота и отправки запросов в API бота. Держите свой токен в безопасности и храните его, он может быть использован кем угодно для управления вашим ботом.
Если ваш существующий токен скомпрометирован или вы потеряли его по какой-либо причине, используйте команду / token для создания нового.
Botfather командуетОстальные команды говорят сами за себя:
- / mybots — возвращает список ваших ботов с удобными элементами управления для редактирования их настроек
- / mygames — делает то же самое для ваших игр
Редактировать ботов
- / setname — измените имя вашего бота.
- / setdescription — изменить описание бота , короткий текст до 512 символов, описывающий вашего бота.Пользователи увидят этот текст в начале разговора с ботом, озаглавленный «Что умеет этот бот?».
- / setabouttext — изменить бота на информацию , еще более короткий текст до 120 символов. Пользователи увидят этот текст на странице профиля бота. Когда они делятся вашим ботом с кем-то, этот текст отправляется вместе со ссылкой.
- / setuserpic — изменить фото профиля бота. Всегда приятно поменять имя на лицо.
- / setcommands — изменить список команд, поддерживаемых вашим ботом.Пользователи будут видеть эти команды как предложения, когда они набирают
/
в чате с вашим ботом. У каждой команды есть имя (должно начинаться с косой черты ‘/’, буквенно-цифровое значение плюс подчеркивание, не более 32 символов, без учета регистра), параметры и текстовое описание. Пользователи будут видеть список команд всякий раз, когда они набирают ‘/’ в разговоре с вашим ботом. - / deletebot — удалите своего бота и освободите его логин.
Изменить настройки
- / setinline — переключить встроенный режим для вашего бота.
- / setinlinegeo — запросить данные о местоположении для предоставления встроенных результатов на основе местоположения.
- / setjoingroups — переключить, можно ли добавлять вашего бота в группы или нет. Любой бот должен уметь обрабатывать личные сообщения, но если ваш бот не предназначен для работы в группах, вы можете отключить это.
- / setprivacy — укажите, какие сообщения будет получать ваш бот при добавлении в группу. Если режим конфиденциальности отключен, бот будет получать все сообщения.Мы рекомендуем оставить режим конфиденциальности включенным. Вам нужно будет повторно добавить бота в существующие группы, чтобы это изменение вступило в силу.
Управление играми
- / newgame — создать новую игру.
- / listgames — получите список своих игр.
- / editgame — редактировать игру.
- / deletegame — удалить существующую игру.
Предупреждения о состоянииОбратите внимание, что может потребоваться несколько минут , чтобы изменения вступили в силу.
миллионов выбирают Telegram за его скорость. Чтобы оставаться конкурентоспособным в этой среде, ваш бот также должен быть отзывчивым. Чтобы помочь разработчикам поддерживать своих ботов в форме, Botfather отправляет оповещения о статусе, если видит, что что-то не так.
Мы будем проверять количество ответов и коэффициент конверсии запросов / ответов для популярных ботов (~ 300 запросов в минуту: но не записывайте это, поскольку значение может измениться в будущем).Если мы получим аномально низкие показания, вы получите уведомление от Botfather.
Ответ на предупрежденияПо умолчанию вы будете получать только одно предупреждение на одного бота в час. Каждое предупреждение имеет следующие кнопки:
- Фиксированный. Используйте это, если вы обнаружили проблему с ботом и устранили ее. Если вы нажмете кнопку исправления, мы возобновим отправку предупреждений в обычном режиме, чтобы вы могли видеть, сработало ли исправление в течение 5–10 минут, вместо того, чтобы ждать час.
- Поддержка. Используйте это, чтобы открыть чат с @BotSupport, если вы не видите проблем с ботом или считаете, что проблема на нашей стороне.
- Отключение звука на 8 часов / 1 нед. Используйте это, если вы не можете исправить своего бота в данный момент. Это отключит все предупреждения для рассматриваемого бота за указанный период времени. Мы не рекомендуем использовать эту опцию, поскольку ваши пользователи могут перейти на более стабильный бот. Вы можете включить оповещения в настройках своего бота через Botfather.
В настоящее время мы будем уведомлять вас о следующих проблемах:
1.
Слишком мало ** личных сообщений ** отправлено по сравнению с предыдущими неделями: ** {value} **
Ваш бот отправляет гораздо меньше сообщений, чем в предыдущие недели. Это полезно для ботов в стиле информационных бюллетеней, которые рассылают сообщения без подсказок от пользователей. Чем больше значение, тем значительнее разница.
2.
Слишком мало ответов на входящие ** личные сообщения **. Коэффициент конверсии: ** {value} **
Ваш бот не отвечает на все отправляемые ему сообщения (коэффициент конверсии запросов / ответов для вашего бота был слишком низким как минимум в течение двух из трех последних 5-минутных периодов).Чтобы обеспечить удобство работы пользователей, отвечайте на все сообщения, отправляемые вашему боту. Ответьте на сообщение обновления , вызвав методы send… (например, sendMessage).
3.
Слишком мало ответов на ** встроенные запросы **. Коэффициент конверсии: ** {value} **
Ваш бот не отвечает на все отправляемые ему встроенные запросы, рассчитанные таким же образом, как указано выше. Ответьте на обновлений inline_query , вызвав answerInlineQuery.
4.
Слишком мало ответов на ** запросы обратного вызова **. Коэффициент конверсии: ** {значение} **
Слишком мало ответов на ** запросы к игре обратного вызова **. Коэффициент конверсии: ** {value} **
Ваш бот не отвечает на все запросы обратного вызова, которые ему отправляются (с играми или без них), рассчитанные таким же образом, как указано выше. Ответьте на обновления callback_query , вызвав answerCallbackQuery.
Обратите внимание, что функция предупреждений о состоянии все еще тестируется и будет улучшена в будущем.
Это введение. Теперь вы определенно готовы перейти к РУКОВОДСТВУ ПО API BOT .
Если у вас есть вопросы, ознакомьтесь с часто задаваемыми вопросами о Bot »
Как создать чат-бота с нуля
Давно прошли те времена, когда для создания чат-ботов требовались продвинутые навыки программирования. Такие платформы, как ChatBot, позволяют создавать диалоговых ботов по многим каналам связи без написания строчки кода. Разве это не звучит захватывающе?
Из этого туториала Вы шаг за шагом узнаете, как создать бота для генерации лидов с помощью платформы ChatBot.Вы узнаете, как протестировать своего нового бота и узнать, как легко добавить его на свой веб-сайт.
Чтобы создать своего бота с помощью платформы ChatBot, у вас должна быть активная учетная запись ChatBot. Чтобы создать учетную запись, посетите chatbot.com и зарегистрируйтесь как новый пользователь.
ChatBot предлагает бесплатную 7-дневную пробную версию, так что вы можете создать своего бота за это время. Вы можете продлить пробный период еще на 7 дней, пройдя короткий урок по адаптации.
После создания учетной записи вы попадете на панель управления ChatBot, где сможете создать новую историю.Нажмите кнопку Создать бота .
Назовите свою новую историю как бот для генерации лидов .
После создания первой истории вы будете переведены в Visual Builder ChatBot . По умолчанию мы уже подготовили базовое дерево разговоров, которое поможет вам начать работу.
Начальная точка показывает, где начинается ваша история. Это точка срабатывания, которую нельзя изменить. Кроме того, чтобы приветствовать пользователей, мы добавили приветственное сообщение по умолчанию .Вы можете отредактировать его так, как хотите. Воспользуемся случаем, чтобы привлечь внимание пользователя!
Начальная точка показывает, где начинается ваша история. Это точка срабатывания, которую нельзя изменить. Кроме того, чтобы приветствовать пользователей, мы добавили приветственное сообщение по умолчанию . Вы можете отредактировать его так, как хотите. Воспользуемся случаем, чтобы привлечь внимание пользователя!
Щелкните блок Ответ бота , чтобы открыть его окно редактирования. Мы уже подготовили четыре варианта приветственного сообщения.Вы можете оставить их как есть или отредактировать по своему усмотрению.
Что такое Ответ бота ? Блок ответа бота содержит сообщение, которое ваш чат-бот отправляет пользователю. Здесь вы можете задать пользователю вопрос или позволить ему выбрать из набора предопределенных ответов.
Что такое Ответ бота ? Блок ответа бота содержит сообщение, которое ваш чат-бот отправляет пользователю. Здесь вы можете задать пользователю вопрос или позволить ему выбрать из набора предопределенных ответов.
Затем выберите ответ Изображение в левом меню и перетащите его под первым текстовым сообщением. Затем загрузите изображение, которое хотите показывать пользователям.
Ваш образ готов!
Затем перетащите еще один ответ Text из меню и поместите его под изображением. Затем введите свое сообщение.
Затем добавьте ответ Быстрый ответ . Здесь вы можете спросить пользователя, хотят ли он подписаться на вашу рассылку новостей.Вы можете побудить пользователя сделать это, предложив, например, код купона.
Теперь вам нужно настроить кнопки , чтобы пользователи могли решать, хотят ли они оставлять свою электронную почту. Щелкните первую кнопку, чтобы открыть ее содержимое. Введите название кнопки в поле Название кнопки . Затем установите Тип кнопки на Отправить сообщение . Когда будете готовы, сохраните настройки.
Теперь вам нужно подготовить вторую кнопку для пользователей, которые не хотят подписываться на вашу рассылку.Нажмите на кнопку Добавить поле.
Введите название кнопки. Затем выберите тип кнопки Отправить сообщение и сохраните настройки.
Когда будете готовы, нажмите «Сохранить», чтобы закрыть.
Теперь очередь пользователя. Чтобы продолжить разговор, выберите в главном меню блок Пользовательский ввод и отпустите его после блока ответа бота .
Что такое Пользовательский ввод ? Блок User input позволяет собирать ответы пользователей.В этом блоке вам нужно определить, какие типы пользовательских сообщений будут вызывать реакцию бота. Чтобы создать Пользовательский ввод , вы должны определить Ключевые слова и Пользователь говорит . Это подходящие системы, из которых вы можете выбирать.
Что такое Пользовательский ввод ? Блок User input позволяет собирать ответы пользователей. В этом блоке вам нужно определить, какие типы пользовательских сообщений будут вызывать реакцию бота. Чтобы создать Пользовательский ввод , вы должны определить Ключевые слова и Пользователь говорит .Это подходящие системы, из которых вы можете выбирать.
Щелкните добавленный Пользовательский ввод , чтобы открыть окно редактирования, и введите имя блока. Затем введите тип сообщений, которые вызовут следующий ответ чат-бота. Вы можете сделать это в разделе Ключевые слова или Пользователь говорит .
Если вы хотите, чтобы ваш бот отвечал на определенное ключевое слово, используйте систему соответствия Ключевые слова . Если вы ожидаете, что пользователи будут отвечать более длинными фразами, используйте User говорит.
Если вы хотите, чтобы ваш бот отвечал на определенное ключевое слово, используйте систему соответствия Ключевые слова . Если вы ожидаете, что пользователи будут отвечать более длинными фразами, используйте User говорит.
Когда ваш ответ будет готов, нажмите «Сохранить и закрыть».
Теперь вам нужно получить электронную почту пользователя. Перетащите блок Question из главного меню и отпустите его после блока User input .
Щелкните блок Question и введите имя блока.
Теперь введите свой вопрос в поле Варианты вопроса . Здесь вы можете добавить больше вариантов. Таким образом, когда пользователь указывает неправильный формат электронной почты, бот будет использовать другие слова, чтобы снова спросить о правильной форме электронной почты. Сделав это, вы можете сделать звучание вашего чат-бота более естественным.
Теперь в поле Проверить ответ с помощью объекта выберите Электронная почта из системных объектов. Из-за этого ваш чат-бот будет знать, предоставил ли пользователь правильный формат своего адреса электронной почты.
Затем в поле Сохранить ответ для атрибута установите атрибут электронной почты по умолчанию . Таким образом, если пользователь предоставит правильный адрес электронной почты, ChatBot назначит этот адрес электронной почты пользователю.
Затем в блоке Action on failure вы можете выбрать, что должен делать ваш бот, если пользователь не может ввести правильный формат своего электронного письма.
Если вы выберете Перейти к блоку сбоя , бот не сохранит неправильный формат адреса электронной почты и снова спросит пользователя о предоставлении правильного формата его электронной почты.
Если вы выберете Перейти к блоку сбоя , бот не сохранит неправильный формат адреса электронной почты и снова спросит пользователя о предоставлении правильного формата его электронной почты.
Затем выберите Повторить после заполнения , чтобы бот продолжал попытки, пока не получит правильный ответ. Когда будете готовы, нажмите «Сохранить и закрыть».
Теперь вам нужно поблагодарить пользователя за его адрес электронной почты и предоставить ему обещанный код купона.Для этого перетащите Bot Response из главного меню и отпустите его после блока Success .
Введите имя блока.
Теперь добавьте ответ Image и загрузите изображение, которое хотите использовать.
Наконец, добавьте несколько текстовых ответов и введите свои сообщения. Не забудьте добавить код купона! Когда будете готовы, нажмите «Сохранить и закрыть».
Теперь вам нужно подготовить сообщение бота на случай, если пользователь не хочет подписываться на вашу рассылку.Для этого перетащите Пользовательский ввод из главного меню и отпустите его после приветственного сообщения .
Щелкните блок User input и введите имя блока. Затем введите ответы пользователя, используя Ключевые слова или Пользователь говорит . Введите все возможные ответы, которые могут отправить ваши пользователи. Когда будете готовы, нажмите «Сохранить и закрыть».
Теперь вы можете закончить разговор. Перетащите Ответ бота из главного меню и отпустите его после Пользовательский ввод с отказом подписаться на ваш информационный бюллетень.
Щелкните блок Ответ бота . Выберите текстовый ответ и введите сообщение бота. Затем нажмите «Сохранить и закрыть».
Наконец, под приветственным сообщением вы можете увидеть Откат по умолчанию . В ChatBot каждая история поставляется с четырьмя вариантами резервного сообщения по умолчанию . Вы можете щелкнуть по нему и отредактировать его содержимое по своему усмотрению.
Что такое Резервный по умолчанию? Откат по умолчанию работает как точка срабатывания, и его нельзя редактировать.Он активируется, когда чат-бот не может найти подходящий ответ на вопрос пользователя. Чтобы восстановить диалог, вы можете добавить Ответ бота к резервному запросу по умолчанию и отобразить специальное резервное сообщение.
Что такое Резервный по умолчанию? Откат по умолчанию работает как точка срабатывания, и его нельзя редактировать. Он активируется, когда чат-бот не может найти подходящий ответ на вопрос пользователя. Чтобы восстановить диалог, вы можете добавить Ответ бота к Default fallback и отобразить специальное резервное сообщение.
ChatBot собирает все несогласованные взаимодействия, которые ответили резервным взаимодействием, и сохраняет их в разделе Training . Вы можете добавить их прямо в историю своего чат-бота, чтобы ваш бот мог распознать их в следующий раз и предоставить соответствующие ответы. ChatBot собирает все несогласованные взаимодействия, которые ответили резервным взаимодействием, и сохраняет их в разделе Training . Вы можете добавить их прямо в историю своего чат-бота, чтобы ваш бот мог распознать их в следующий раз и предоставить соответствующие ответы.Похоже, вы создали бота для лидогенерации. Отличная работа! Давайте посмотрим на это в действии. Visual Builder ChatBot позволяет вам проверить свою историю из приложения. Таким образом, вы сможете гораздо быстрее обнаруживать ошибки и исправлять их, прежде чем показывать своего чат-бота клиентам.
Когда все будет хорошо, вы готовы разместить чат-бота на своем сайте!
Вот и все! Ваш чат-бот готов и ждет, чтобы связаться с вашими клиентами и построить с ними хорошие отношения.Помните, что вы всегда можете вернуться к истории своего чат-бота и со временем улучшить ее. Продолжайте хорошую работу!
У вас есть вопросы по созданию чат-ботов на платформе ChatBot? Напишите нам на [email protected] .
Создать бота
Создайте чат с ботом для связи с посетителями вашего сайта. Бот появится в виде виджета чата на страницах вашего сайта, где посетитель сможет начать беседу. Бот может помочь квалифицировать потенциальных клиентов, назначить встречи или создать заявки в службу поддержки, отправив серию вопросов и автоматических ответов.Используйте бота, чтобы собрать исходную информацию о посетителе, прежде чем член вашей команды возьмет на себя разговор.
Обратите внимание: только пользователи с разрешениями Chatflows на вкладке CRM могут создавать и редактировать потоки сообщений.
Если вы хотите связать посетителя с членом вашей живой команды, как только они начнут разговор через виджет чата, узнайте, как создать поток чата с живым чатом.
Вы также можете создать бота для своей учетной записи Facebook Messenger.Узнайте, как создать чат для Facebook Messenger.
Чтобы увидеть обзор этого процесса, посмотрите видео ниже:
Прежде чем начать
Прежде чем создавать бота, подключите канал чата к почтовому ящику разговоров. Канал чата — это место, где вы можете настроить доступность своей команды и внешний вид виджета. Кроме того, если вы добавляете бота на веб-сайт, который не размещен на HubSpot, вам необходимо добавить код отслеживания на свои внешние страницы, прежде чем создавать бота.Бот не появится, если код отслеживания не установлен.
После того, как ваш канал чата подключен к почтовому ящику и код отслеживания установлен на любых внешних страницах, вы можете создать бота с нуля или с помощью одного из пяти различных шаблонов ботов, созданных HubSpot, а затем настроить действия бота и добавить if / затем разветвляется, чтобы определить ход разговора.
- В своей учетной записи HubSpot перейдите к Беседы > Чаты .
- В правом верхнем углу нажмите Создать чат .
- Выберите Веб-сайт . Если вы хотите добавить поток чата в свою учетную запись Facebook Messenger, узнайте, как создать поток чата для Facebook Messenger.
- На левой боковой панели в разделе Build a bot выберите шаблон бота:
- Concierge bot ( Service Hub Professional или Enterprise only) : используйте этот шаблон, чтобы направлять посетителей в нужную команду в зависимости от причины, по которой они начали чат.В зависимости от ответа посетителя он может выполнить поиск в базе знаний, связаться с членом вашей действующей команды или назначить встречу с вашей командой. Чтобы использовать этот шаблон бота, вам необходим доступ к инструменту базы знаний.
- Квалификационный бот лидов: используйте этот шаблон для сбора информации о посетителе и причине его посещения вашего сайта.
- Бот для встреч: используйте этот шаблон, чтобы поделиться ссылкой на встречу с посетителем, чтобы он мог зарезервировать время с вами или вашей командой.
- Бот для заявок: используйте этот шаблон для сбора информации о запросах посетителей в службу поддержки, а затем создайте заявку, чтобы отслеживать их проблему в почтовом ящике для разговоров. У вас должен быть доступ к редактированию заявок, чтобы использовать этого бота.
- База знаний и бот поддержки ( Service Hub Professional или Enterprise только) : используйте этот шаблон, чтобы делиться статьями базы знаний с посетителями, а затем дать им возможность обратиться к вашей команде или отправьте заявку, если им все еще нужна помощь.Прежде чем использовать этот шаблон, выберите пользователей и команды, которым нужно направить беседы, если запрос не может быть разрешен с помощью статьи.
- Offline bot ( Sales Hub или Service Hub Professional и Enterprise только) : используйте этот шаблон для маршрутизации посетителей к доступным членам вашей команды, чтобы они могли сразу же начать разговор . Или, если ваша команда недоступна, вы можете получить электронную почту посетителя, чтобы ваша команда могла связаться позже.Перед использованием этого шаблона выберите пользователей и команды, доступность которых будет определять поток работы бота.
- Начать с нуля: создать собственного бота с нуля, используя различные действия бота.
- Щелкните Далее .
- Слева настройте папку «Входящие» и язык:
- Если в вашей учетной записи настроено несколько ящиков входящих, щелкните раскрывающееся меню Входящие и выберите входящие , чтобы подключить поток чата.
- Чтобы изменить язык чата, щелкните раскрывающееся меню Язык .
- Если вы создаете бота Concierge или бота Meetings , чтобы выбрать, какая ссылка на встречу будет предоставлена посетителю, щелкните раскрывающееся меню Meetings link .
- Если вы создаете базу знаний + бот поддержки в реальном времени или бот Offline , чтобы указать, какие пользователи будут получать входящие сообщения, щелкните раскрывающееся меню Выбрать пользователей для входящих сообщений .
1. Сборка — создать приветственное сообщение и добавить действия бота
На вкладке Build настройте шаблон бота и создайте приветственное сообщение, которое будет приветствовать ваших посетителей. Вы также можете добавить дополнительные действия, чтобы настроить поток беседы с ботом.
Создать приветственное сообщение
Приветственное сообщение — это первое, что увидит посетитель, когда начнет с вами чат.
- Чтобы изменить содержимое приветственного сообщения, щелкните шаг Приветственное сообщение в шаблоне бота.
- На панели Добро пожаловать, сообщение , которая открывается справа, введите сообщение , затем щелкните Сохранить .
Добавить действия бота
Создаете ли вы бота с нуля или используете шаблон, вы можете использовать различные действия бота для сбора информации о посетителе. Вы можете задавать вопросы, устанавливать значение собственности для контакта или компании, делиться статьей из базы знаний или назначать встречу с помощью действий бота.
- На правой панели выберите действие .Узнайте больше о различных действиях ботов.
- На правой панели отредактируйте сведения о действии. Параметры, которые можно изменить, зависят от действия. Например, если вы задаете собственный вопрос, вы можете ввести вопрос и задать быстрые ответы, которые посетитель может выбрать в качестве ответов на ваше сообщение.
- Щелкните Сохранить .
- Чтобы изменить настройки существующего действия, щелкните действие в редакторе бота и внесите изменения на правой панели.
- Если вы являетесь пользователем Professional или Enterprise , вы можете настроить поток беседы с ботом с помощью веток if / then. Если / то ветки позволяют вам отправить посетителя на конкретное действие бота в зависимости от его ответа, значения свойства контакта или доступности вашей команды.
Обратите внимание: : Стартовые и бесплатные пользователи не могут добавлять ветки if / then к своим действиям ботов.
- Если вы являетесь пользователем с правами доступа к учетной записи , вы можете направить беседу с ботом конкретному члену вашей команды.Чтобы направить беседу бота члену вашей команды, щелкните значок «добавить плюс», затем выберите Отправить члену команды на правой панели.
Обратите внимание: пользователю, к которому вы направляетесь, должно быть назначено рабочее место Центр продаж или Центр обслуживания .
- Чтобы повторно подключить любые действия, которые были отключены при редактировании потока вашего бота, нажмите кнопку Alerts в верхнем левом углу. Вы также можете искать любые отключенные действия с помощью строки поиска Перейти к действию в правом верхнем углу.
- Когда вы закончите редактировать действия бота, вы увидите каждое действие на пути бота в одном окне. Вы можете просматривать и вносить изменения в логику ветвления if / then, редактировать настройки отдельного действия или искать конкретное действие, используя панель поиска Go to action в правом верхнем углу.
- Чтобы увидеть, как бот будет выглядеть на вашем веб-сайте, в правом верхнем углу нажмите Предварительный просмотр .
- Чтобы продолжить, нажмите Сохранить внизу, затем щелкните вкладку Целевой .
В зависимости от вашего варианта использования, после сбора некоторой базовой информации о посетителе, вы можете направить посетителя к члену вашей действующей группы или в почтовый ящик разговоров для члена группы для сортировки, или отправить заявку.
2. Цель — решить, когда должен появиться бот
На вкладке Target вы можете решить, когда бот будет отображаться на страницах вашего веб-сайта. Вы можете отображать бота, когда посетитель находится на определенном URL-адресе страницы, или на основе известной информации о ваших посетителях.Вы также можете комбинировать параметры таргетинга, чтобы создать индивидуальный подход для посетителей вашего сайта. Узнайте больше о различных вариантах таргетинга и правилах таргетинга, которые вы можете использовать в своих чатах.
- Чтобы показать бота, когда посетитель находится на определенном URL-адресе веб-сайта, в разделе URL-адрес веб-сайта :
- Щелкните первое раскрывающееся меню и выберите URL-адрес веб-сайта .
- Щелкните второе раскрывающееся меню и выберите правило таргетинга .
- Введите критерии правила в текстовое поле.
- Чтобы показать бота, когда посетитель находится на странице веб-сайта, URL-адрес которой включает определенные параметры запроса:
- Щелкните первое раскрывающееся меню и выберите параметр запроса .
- В первом текстовом поле введите имя параметра запроса .
- Щелкните раскрывающийся список и выберите правило таргетинга .
- Во втором текстовом поле введите значение параметра запроса .
- Чтобы добавить еще одно правило, щелкните Добавить правило .
- Чтобы исключить бота с определенных страниц (например, страницы политики конфиденциальности), нажмите Добавить правило исключения .
Вы также можете настроить таргетинг своего бота на определенные контакты на основе известной информации о них. Чтобы установить критерии, основанные на информации о посетителях, в разделе Информация для посетителей :
- Щелкните первое раскрывающееся меню и выберите фильтр .Вы можете использовать фильтры, специально предназначенные для известных контактов или неизвестных посетителей.
- Щелкните второе раскрывающееся меню и выберите свой c riteria .
- Чтобы добавить еще одно правило, щелкните Добавить правило .
- Чтобы исключить всплывающую форму на определенных страницах (например, на странице политики конфиденциальности), щелкните Добавить правило исключения .
- Чтобы создать другую группу фильтров с дополнительными правилами таргетинга, щелкните Добавить группу фильтров .
- Чтобы продолжить, нажмите Сохранить внизу, затем щелкните вкладку Показать .
3. Дисплей — настройка внешнего вида бота
Настройте параметры отображения бота, включая заголовок чата, поведение виджета чата и триггеры виджета чата. Чтобы изменить цвет акцента бота и его размещение на странице, узнайте, как дополнительно настроить внешний вид виджета чата в настройках вашего почтового ящика.
- По умолчанию название компании, которое вы задали в настройках фирменного стиля своей учетной записи, будет отображаться в качестве заголовка чата.Чтобы изменить заголовок чата, щелкните, чтобы развернуть раздел Выберите аватар чата , затем отредактируйте имя в поле Заголовок чата . Чтобы изменить изображение аватара, наведите указатель мыши на аватар и нажмите Изменить фото .
- В разделе Поведение отображения чата можно управлять поведением виджета на экранах настольных компьютеров или мобильных устройств. Щелкните Заголовок чата , чтобы развернуть раздел.
- На вкладке Desktop установите переключатель рядом с предпочтительным поведением отображения:
- Всплывающее окно для открытия приветственного сообщения в качестве приглашения: отображение предварительного просмотра приветственного сообщения над виджетом чата.
- На вкладке Desktop установите переключатель рядом с предпочтительным поведением отображения:
- Показывать только средство запуска чата: отображает только средство запуска чата, поэтому посетители должны щелкнуть, чтобы открыть окно чата.
- Показать приветственное сообщение, затем открыть чат при срабатывании триггера: отобразить предварительный просмотр приветственного сообщения, а открыть виджет чата при срабатывании триггера или когда посетитель щелкнет виджет, в зависимости от того, что наступит раньше.
- На вкладке Mobile установите переключатель рядом с предпочтительным режимом отображения:
- Всплывающее окно для открытия приветственного сообщения в качестве приглашения: отображение предварительного просмотра приветственного сообщения над виджетом чата.
- Показывать только средство запуска чата: отображает только средство запуска чата, поэтому посетители должны щелкнуть, чтобы открыть окно чата.
- На вкладке Mobile установите переключатель рядом с предпочтительным режимом отображения:
Обратите внимание: , чтобы отключить чат на мобильных устройствах, вы можете добавить правило исключения в свои настройки таргетинга, чтобы скрыть чат, когда кто-то просматривает вашу страницу на мобильном устройстве.
- Вы также можете решить, когда загружать виджет чата на странице. Щелкните Triggers , чтобы развернуть раздел, затем установите флажок рядом с триггером отображения чата.
- При выходе: запускает бота, когда мышь посетителя перемещается в верхнюю часть окна браузера.
- Время на странице в секундах: запускает бота, когда проходит заданное количество времени (в секундах), пока посетитель находится на странице.
Обратите внимание: для более быстрой загрузки страницы HubSpot рекомендует задержку в 5 секунд или более. Узнайте больше о времени загрузки страницы вашего сайта.
- Процент прокручиваемой страницы: запускает виджет живого чата, когда посетитель прокручивает страницу до определенного места.
- Щелкните Сохранить , затем щелкните вкладку Параметры .
Обратите внимание: после завершения настройки бота вы можете автоматически открывать виджет чата, когда посетитель загружает URL определенной страницы. Добавьте # hs-chat-open в конец URL-адреса страницы. Затем вы можете связать эти URL-адреса в своих сообщениях электронной почты, на целевых страницах и в других маркетинговых кампаниях, чтобы отправлять посетителей прямо в виджет чата.
4. Опции
Настройте дополнительные параметры для своего бота, включая настраиваемые сообщения об ошибках, язык отображения и параметры GDPR.
Общие
- Чтобы установить задержку между каждым сообщением, отправляемым посетителям, щелкните раскрывающееся меню Задержка ввода между сообщениями и выберите нужный вариант.
- Чтобы настроить время, которое должно пройти, прежде чем сеанс чата будет сброшен до начала, щелкните раскрывающееся меню Тайм-аут сеанса и выберите параметр. Тайм-аут начинается, когда посетитель перестает отвечать. Если посетитель отправляет другое сообщение после истечения тайм-аута, беседа повторно отправляет приветственное сообщение.
Обратите внимание: , когда посетитель выполняет все действия бота, то есть достигает последнего шага в потоке вашего бота, сеанс чата не сбрасывается по истечении выбранного времени сеанса.
- Чтобы настроить ответ, который посетители увидят при сбое запроса, введите сообщение об ошибке в поле Общее сообщение об ошибке .
Язык
Чтобы изменить язык отображения бота, щелкните раскрывающееся меню Выберите язык и выберите другой язык.
Наличие
Решите, когда виджет чата должен появиться на вашем сайте, в зависимости от доступности вашей команды, установленной в настройках вашего канала. Щелкните раскрывающееся меню Доступность и выберите вариант:
- Показывать только тогда, когда участники группы доступны для чата: виджет чата будет отображаться только в рабочее время или когда доступен хотя бы один член команды.
- Показывать всегда: виджет чата всегда будет отображаться на вашем сайте.
Обратите внимание: , если в вашей учетной записи настроено несколько потоков чата, при определении приоритетов потока чата не проверяется доступность команды при принятии решения, какой поток чата отображать.
Конфиденциальность данных и согласие
- Чтобы включить текст согласия на использование файлов cookie для виджета живого чата, нажмите, чтобы включить Согласие на сбор файлов cookie чата . Вы не можете настроить текст согласия на использование файлов cookie, который отображается в баннере.
- Когда вы включаете текст согласия на использование файлов cookie, вы можете выбрать, когда должен отображаться баннер согласия.
- Чтобы отобразить баннер согласия перед тем, как посетитель начнет чат, выберите Показывать баннер согласия перед тем, как посетитель начнет чат. переключатель.
- Для отображения баннера, когда посетитель начинает покидать страницу, установите переключатель Показывать баннер согласия посетителю при намерении выхода .
- Чтобы получить согласие посетителей на обработку их данных, щелкните, чтобы включить Согласие на обработку данных. .
- Щелкните раскрывающееся меню Consent type и выберите один из следующих вариантов:
- Требовать явного согласия: , если этот параметр включен, посетителям нужно будет щелкнуть Я согласен , прежде чем они смогут отправить сообщение.
- Законный интерес: согласие посетителей подразумевается, когда они начинают общаться с вами. Текст согласия на обработку данных по-прежнему будет отображаться, им не нужно нажимать Я согласен , чтобы начать чат.
- В поле Согласие на процесс текст появится текст HubSpot по умолчанию. Вы можете отредактировать текст, чтобы объяснить, почему вам нужно хранить и обрабатывать личную информацию посетителя. Если вы настроили текст согласия, но затем хотите вернуться к тексту по умолчанию, нажмите Восстановить текст по умолчанию, предоставленный HubSpot .
Обратите внимание: , хотя эти функции находятся в HubSpot, ваша юридическая команда — лучший ресурс, который даст вам рекомендации по соблюдению требований в вашей конкретной ситуации.
Маркетинговые контакты
Если у вас есть доступ к маркетинговым контактам в вашей учетной записи и вы хотите, чтобы контакты, созданные из этого потока чата, были установлены в качестве маркетинговых контактов, нажмите, чтобы включить переключатель Маркетинговые контакты .Когда вы закончите редактировать бота, нажмите Сохранить . В правом верхнем углу нажмите Preview , чтобы проверить настройку бота. Когда вы закончите редактирование, нажмите, чтобы включить , переключатель , чтобы добавить его на страницы вашего веб-сайта.
Когда ваш бот находится на страницах вашего веб-сайта, посетители могут начать разговор с ботом. Затем вы можете просматривать входящие сообщения и отвечать на них в папке входящих разговоров или анализировать производительность вашего бота.
Как создать бота
Пора предприятиям рассматривать чат-ботов как эффективный бизнес-инструмент, а не как нечто запоздалое или «может быть». Если задуматься, современные технологии оказывают серьезное влияние на бизнес-операции сегодня. Независимо от размера вашего бизнеса, бесспорно, чат-боты могут обеспечить как материальные, так и нематериальные преимущества, такие как помощь и удобство, как поставщику, так и потребителю.
Это руководство о том, как создать простого чат-бота, научит вас советам и приемам, которые позволят создать бота, даже если у вас нет большого количества денег на вашем счету или степени ИТ, чтобы поддержать его. С помощью новейших технологий любой может создать бота, который может помочь бэкэнду бизнеса, при этом обеспечивая результаты, требуемые клиентами.
В этом руководстве мы поговорим о том, что такое чат-бот, о различных типах чат-ботов, о том, когда их следует использовать, о том, как создать чат-бота с нуля, и о 6 надежных советах при создании своего собственного.
Сводка
Что такое чат-бот? И, прежде всего, почему они важны?
Чат-боты играют огромную роль, когда речь идет о революционных изменениях в способах общения компаний со своими клиентами. В сегодняшней загруженной деловой среде крайне важно взаимодействовать с клиентами как можно быстрее и четче.
До того, как появились чат-боты, клиентам оставалось только связаться с компанией, позвонив в службу поддержки клиентов или отправив электронное письмо. Сейчас есть несколько компаний, которые предлагают чат-робота, который обеспечивает удобное обслуживание клиентов 24/7.Чат-боты — это диалоговые компьютерные программы или приложения, которые предназначены для имитации письменной речи человека. Пользователи могут общаться с помощью этого инструмента, используя платформы обмена сообщениями или веб-сайт компании, так же, как они общаются с другим человеком.
Эти продвинутые боты необходимы для любого бизнеса, тем более что большинство магазинов электронной коммерции конкурируют с такими корпоративными гигантами, как Google, Facebook, Microsoft и Amazon, которые устанавливают довольно высокие стандарты обслуживания клиентов; их безупречно быстрая скорость отклика на запросы — одна из причин, которые помогли им доминировать на рынке в течение многих лет.
Эти огромные неумолимые силы непреднамеренно изменили ожидания как пользователя, так и клиента. Это особое отношение, хотите верьте, хотите нет, подсознательно заложено в каждом покупателе. Клиенты ожидают, что получат такие же безупречные, немедленные и актуальные ответы от службы поддержки клиентов, когда они задают вопрос и ждут ответа. При таком весе, который ложится на плечи человеческих ресурсов, практически невозможно обеспечить постоянное обслуживание клиентов, соответствующее этим стандартам.К счастью, здесь могут помочь чат-боты. Просто убедитесь, что вы используете правильного чат-бота для работы.
Какие бывают типы чат-ботов?
Понимание факторов, влияющих на эффективность чат-ботов, может помочь компаниям принять осознанное решение о том, какой чат-бот лучше всего подходит для их платформ. Существует два разных чат-бота: чат-боты на основе правил и чат-боты с ИИ.
1. Чат-боты на основе правил
Самым простым объяснением для чат-ботов на основе правил является то, что эти боты могут давать только предопределенный ответ на очень конкретные вопросы.Важно помнить, что он не может отвечать на вопросы, выходящие за рамки установленных правил. Чат-боты на основе правил эффективны и действенны только в тех сценариях, которым вы их обучили.
Ботов, основанных на правилах, обучаются значительно быстрее, чем ботов с ИИ, но у этого есть ограничения — одно из них заключается в том, что они не могут обучаться самостоятельно. Ответы, которые они дают клиентам, во многом зависят от ответов людей, которые их обучают. Хотя это приносит пользу компании, когда дело доходит до последовательности.Учитывая, что боты, основанные на правилах, включены в программу, по которой они проходят обучение, они будут давать последовательный и единообразный ответ клиентам. Если беседа попадает в неизвестное поле для бота, он передаст беседу представителю-человеку, чтобы справиться с ситуацией.
2. Чат-боты AI
Напротив, боты с ИИ — это самообучающиеся боты. Эти продвинутые боты работают через обработку естественного языка (NLP). НЛП — это точно такой же психологический подход, который создавал системы распознавания голоса, используемые известными виртуальными помощниками, такими как Siri, Google Now и Microsoft Cortana.
Поскольку НЛП является корнем ИИ-ботов, оно предназначено для понимания контекста и цели вопроса перед составлением плана ответа. Чем больше обучаются эти боты, тем большему они учатся. Хотя на их обучение уходит много времени; как только они будут должным образом обучены и оснащены, они смогут не отставать от пользователя, независимо от того, насколько сложна ситуация.
Чат-боты с искусственным интеллектом полезны для глубокого обучения. В отличие от чат-ботов, основанных на правилах, чат-ботов с ИИ можно запрограммировать так, чтобы они понимали эмоции или текущее настроение клиента, даже без помощи человеческих сил.Он предоставляет индивидуальные услуги каждому клиенту, и если он достаточно долго обучен, он также может понимать и общаться на разных языках.
В каких ситуациях следует создавать чат-бота?
Требования заказчика довольно просты. Им нужен , самые быстрые и самые эффективные решения своих проблем — даже если они задают вопрос посреди ночи. Похоже, это не так уж сложно сделать, правда? Дополнительная проблема здесь заключается в том, что помимо быстрой доставки ваших ответов клиентам необходимо чувствовать, что их ценят.Лидеры отрасли сейчас сталкиваются с камнем преткновения: им нужно найти масштабируемый способ помочь клиентам решить их проблемы, заставляя их чувствовать себя важными.
Обеспечить высокий уровень обслуживания клиентов — непростая задача. Клиенты хотят только лучшего и безупречного опыта общения с представителями бизнеса. Автоматизированные сервисы, такие как чат-боты, идеально подходят для этой обуви. Они не идеальны, это само собой разумеющееся. Но чат-боты запрограммированы так, чтобы понимать намерения клиента и очень быстро работают с этим элементом, чтобы помочь им .Успешное внедрение чат-бота может дать бизнесу следующие преимущества:
- Экономия рабочего времени
- Повышение лояльности к бренду
- Более высокий коэффициент конверсии
- Определите голос и индивидуальность бренда
- Выделитесь из множества конкурентов
- Повышение вовлеченности и взаимодействия
- Расширенная база данных для лучшего понимания пользователей и потенциальных клиентов
Инвестирование в эту новую норму обслуживания клиентов поможет компании оставаться впереди всех и без особых усилий завоевать отличную репутацию.Знание того, что клиенты убегают, когда они недовольны услугами и более чем готовы выразить свое недовольство в Интернете, лишь подчеркивает необходимость современных изменений.
Как создать бота с нуля?
Создание чат-бота с нуля сначала звучит пугающе, но это не так. Прежде чем мы погрузимся глубже, вам необходимо понять несколько вещей. Что такое фреймворк для разработки ботов и чем он отличается от платформы для ботов?
Bot Development Frameworks предоставляет инструменты и встроенные функции, которые устраняют всю ручную работу, необходимую при создании чат-бота.Это помогает разработчикам и кодировщикам быстрее писать коды для лучшего применения. С другой стороны, бот-платформы обычно используются новичками, которые не являются техническими пользователями. Это платформы, на которых назначенные профессионалы будут помогать маркетологам компании при создании и обслуживании своих чат-ботов.
Фреймворки на основе кода для разработки ботов
Для работы чат-бота необходимы предварительно разработанные веб-приложения. Коннекторы платформы обмена сообщениями получают разговоры от различных сред чата, NLP для обработки сообщений и сервера для обеспечения непроницаемой связи с API.Существует несколько фреймворков на основе кода, которые могут помочь в разработке ботов: API. AI, Microsoft Bot Framework, IBM’s Watson Conversation и Ada.
1. API. AI
Программное обеспечение API.AI обеспечивает плавность всего процесса создания бота, помогая разработчикам предоставлять конкретную информацию, адаптированную к потребностям бота. Он работает с намерением, распознаванием речи и управлением контекстом бота.
API.AI — это фреймворк кода с простым веб-интерфейсом. Он разрешает пользователям создавать увлекательные беседы с использованием различных библиотек и SDK.Сюда входят Android, Webkit HTML5, IOS, Node.js и Python API.
2. Microsoft Bot Framework
Microsoft Bot Framework позволяет разрабатывать чат-ботов на нескольких платформах, таких как SMS и сторонние платформы. Напротив, эта структура особенно эффективна в сочетании с другими инструментами и службами Microsoft. Примерами инструментов и служб Microsoft являются служба Azure Bot, BotBuilder и Cognitive Services.
Бот-платформа для создания вашего бота
1.IBM’s Watson Conversation
Что делает Watson Conversation особенным, так это то, что он использует машинное обучение для обучения и построения диалоговых взаимодействий между ботом и клиентом. Watson Conversation программирует бота, чтобы он отвечал клиенту в манере, напоминающей естественный человеческий разговор.
2. Ада
Ada помогает компаниям создавать простых и сложных чат-ботов без необходимости программирования. Любой бизнес может автоматизировать обслуживание клиентов с помощью наглядного конструктора, который упрощает создание структурированных рабочих процессов для любого отдела.
Как создать чат-бота на Python
Чтобы создать чат-бота на Python, все необходимые переменные, которые вы хотите использовать и встроить в своего чат-бота, должны быть готовы и импортированы.
Необходимые библиотеки и данные
1. chatgui.py — код, позволяющий пользователям легко взаимодействовать с ботом.
2. train_chatbot.py — код для чтения на естественном языке и превращающий его в обучающий набор.
3. classes.pkl — список различных типов и категорий ответов.
4. words.pkl — список, в котором хранятся различные слова, которые входят в наш словарь и которые могут быть использованы для распознавания образов ботов.
5. intents.json — файл данных, в котором есть предопределенные ответы и шаблоны.
chatbot_model.h5 — обученная модель, содержащая всю информацию о конкретной модели.
Пошаговая процедура
1.Импортировать все файлы и переменные
Прежде всего, импорт библиотеки в вашу систему является решающим шагом при создании чат-бота на Python. Импортируйте все необходимые пакеты и файлы для своего чат-бота и разделите переменные, которые вы будете использовать в этом проекте Python.
2. Данные постобработки
Работа с текстовыми данными требует предварительной обработки перед созданием модели машинного обучения. Есть несколько рабочих требований, которые необходимо выполнить для эффективной предварительной обработки данных.Самая основная постобработка, используемая в текстовых данных, называется «токенизация». Это процесс разбиения всего текста на более мелкие части или слова.
3. Создайте тестовые данные
Создание тестовых данных предоставит все необходимые шаблоны ввода и вывода. Цель создания и тестирования данных состоит в том, чтобы сузить все до самой простой формы. Это сэкономит много времени и предотвратит возникновение мелких ошибок, когда слова проходят процесс машинного обучения.
4. Построение модели
Когда все данные для обучения будут готовы, вы можете начать процесс построения модели глубокого обучения из керасов, называемых «Последовательная». Последовательная модель, в частности, имеет 3 уровня. Первый слой имеет 128 нейронов, второй — 64, а последний имеет количество намерений как конечное количество нейронов.
5. Ожидайте ответа (графический интерфейс пользователя)
Прежде всего, вам необходимо ввести те же данные, что и при обучении бота.Это создаст несколько функций, которые будут выполнять предварительную обработку текста, а затем предсказывать класс.
На данный момент вашим приоритетом является наличие всех необходимых процедур для запуска графического интерфейса пользователя. Clean_up_sentence () — это первая функция, которую вам нужно использовать — она полирует вводимые предложения. Затем функция clean_up_sentence () используется в функции bow (). Функция bow () берет отшлифованные предложения и генерирует список слов, которые используются для предсказания их классов.После того, как вы предскажете класс, скорее всего, вы получите случайный ответ из списка намерений.
6. Запускаем чат-бота
Заключительный этап — тестирование бота. Для этого этапа необходимы два основных файла: chatapp.py и train_chatbot.py.
Во-первых, вы должны обучить модель, используя python train_chatbot.py в терминале. Если он работает без сбоев и ошибок не обнаружено, это означает, что вы успешно создали своего бота. Чтобы запустить файл, бот автоматически появится в окне графического интерфейса в течение нескольких секунд.
Как создать бота с нуля для нетехнических пользователей
Прочитав о фреймворках на основе кода, вы, возможно, открыли новую вкладку и набрали «Как создать чат-бота без программирования» в строке поиска Google. Мы получим это. Это может быть слишком много для нетехнических пользователей, но есть конструкторы платформ чат-ботов, которые могут помочь вам создать чат-бота без сложного кода.
Конструкторы чат-ботов без кода, такие как Ada
Ada дает своим пользователям простой и понятный план, которому нужно следовать при создании своего бота в первый раз.Преимущество использования Ada в том, что вы можете общаться с AI. Он автоматически учится на настроении и эмоциях клиентов, читает опечатки и понимает простой и сложный жаргон. Расширенные функции Ada даже поддерживают более 100 языков, а также персонализированные приветствия и ответы, которые предоставят премиальные услуги каждому клиенту — вашим клиентам даже не будет казаться, что они разговаривают с роботом.
Если вы хотите заказать демонстрацию, щелкните здесь.
Как создать чат-бота в Facebook
Неудивительно, что Facebook Messenger — одна из наиболее часто используемых коммуникационных платформ во всем мире.С 1,3 миллиардами активных пользователей в месяц, нет никаких сомнений в том, что чат-боты определенно являются полезным инструментом для их платформы.
При правильном использовании чат-бота каждое взаимодействие с клиентом будет автоматизировано. Все, что нужно сделать пользователям, — это нажать кнопку «Сообщение» на странице Facebook, после чего автоматически запустится инструмент обмена сообщениями или чат-бот. Этот быстрый и простой инструмент позволяет пользователю ввести вопрос и мгновенно начать общение с ботом.
В зависимости от сложности чат-бота и типа разговоров, которые он предназначен для общения, лучший способ установить и разработать его — это обратиться за внешней помощью.Чат-бот, оснащенный заранее запрограммированными ответами, обычно разрабатывается быстрее, чем чат-боты, использующие обработку естественного языка в качестве основного элемента своих намерений.
Для более подробного и пошагового объяснения того, как создать и установить чат-бота Facebook, у Facebook есть краткое руководство для разработчиков.
6 советов по созданию первого чат-бота
Создание простого чат-бота с нуля открывает множество полезных навыков, которые можно использовать в науке о данных и общем программировании.Теперь, когда вы почти готовы к работе, вот 6 полезных советов, которые следует учитывать, когда вы, наконец, создали своего первого чат-бота:
1. Убедитесь, что ваш чат-бот не звучит как робот.
То, что чат-боты — это роботы, не означает, что это должно быть похоже на одного человека. Чат-боты умнее и созданы для того, чтобы выполнять гораздо больше, чем обычный тон * I-am-a-robot * .
Обработка естественного языка запрограммирует вашего чат-бота на запуск и завершение естественного разговора, который звучит так, как будто он просто разговаривает со старым другом.Убедившись, что ваш чат-бот не похож на робота, он позволяет клиентам легче задавать вопросы и понимать решение.
2. Сборка. Тренироваться. Развертывать. Мера.
Build: Совершенно очевидно, что создание чат-бота — это первый начальный шаг. После того, как вы создали своего чат-бота, следующий важный шаг в процессе разработки. Для чего нужен бот? С какими типами разговоров он предназначен? Какие типы ответов они должны давать? Вы можете реализовать эти общие вопросы всякий раз, когда тренируете бота для реального взаимодействия с людьми.
Train: Процесс обучения вашего чат-бота прост и, без сомнения, требует повторения. Процесс зависит от того, насколько продвинутым вы хотите, чтобы ваш чат-бот был. Он предназначен для ответов на простые и распространенные вопросы или для сложных и спонтанных вопросов? Ответ на эти вопросы станет основой того, сколько вам нужно для обучения своего бота. Просто убедитесь, что у вас действительно есть время, чтобы удовлетворить все потребности ботов, чтобы они были эффективными.
Развертывание: теперь, когда он обучен и готов к работе, вы, наконец, можете развернуть его в действии.Вы можете использовать разные платформы, такие как Facebook, веб-страницу вашей компании или другие средства, на которых вы можете это продемонстрировать. После развертывания клиенты могут начать задавать вопросы о вашей компании, продуктах, которые вы продаете, и услугах, которые вы предоставляете. По сути, все, на что бот был обучен реагировать.
Измерение: этот последний шаг заключается в измерении и отслеживании бота после нескольких взаимодействий с людьми. Вы даже можете следить за своими клиентами и спрашивать их, как прошел их опыт работы с чат-ботом.Очень важно получить их отзывы, поскольку чат-бот технически разработан для их обслуживания.
Если вы получили отрицательный отзыв, это нормально. Не ругайте себя за это. Вы всегда можете определить каждую ошибку и начать ее улучшать, чтобы повысить успешность чат-бота в будущем.
3. Если вы создаете с нуля или используете бесплатный тарифный план чат-бота для трудоемкого процесса
Когда вы создаете чат-бота, вы должны учитывать количество времени, которое вам нужно потратить на обучение и анализ потока их разговоров.Планирование добавляемого вами контента также занимает много времени. С технической точки зрения вы обучаете робота думать и говорить как человек. Одна только эта идея уже кажется большой работой.
4. Дайте чат-боту настоящий голос
Покупатели абсолютно ненавидят, когда ответы «слишком роботизированы». Представьте, что вам приходится повторять один и тот же вопрос снова и снова, но ответы чат-бота слишком запрограммированы и бесполезны. Убедитесь, что когда вы запускаете своего чат-бота, у него реалистичный голос и характер, которые могут легко адаптироваться к окружающей среде, в которой он находится.
5. Анализируйте наиболее частые запросы клиентов
Глубокое понимание общих запросов ваших клиентов является ключом к достижению ваших бизнес-целей. Пытаетесь ли вы оптимизировать их обслуживание клиентов или создавая более привлекательный контент для своего чат-бота, знание своих клиентов лучше, чем кто-либо, по-прежнему является королем.
6. Работайте со своей командой CX — или даже поручите им руководить
Основная цель команды CX — совместно создавать новые захватывающие впечатления от клиентов.Они централизуют и анализируют отзывы клиентов и записывают ценные данные. Они — лучшая команда для работы с чат-ботами, потому что они определяют сложные показатели, которые позволяют им отслеживать и контролировать, влияют ли эти показатели положительно на бизнес-результаты. Имеет смысл, что они возглавляют контент и развитие вашего чат-бота.
Начать работу — Создайте своего первого бота — Команды
- 6 минут на чтение
В этой статье
В этом руководстве вы узнаете, как создавать, запускать и развертывать бот-приложение Teams.Бот действует как посредник между пользователем Teams и веб-службой. Пользователи могут общаться с ботом, чтобы быстро получать информацию, запускать рабочие процессы или делать что-нибудь еще, что может делать ваш веб-сервис.
Важно
В настоящее время боты доступны в правительственном облаке сообщества (GCC), но не доступны в GCC-High и Министерстве обороны (DOD).
Прежде чем начать
Убедитесь, что ваша среда разработки настроена, установив необходимые компоненты.
Создайте свой проект
Используйте набор инструментов Teams для создания своего первого проекта:
Откройте код Visual Studio.
Щелкните значок Teams на боковой панели, чтобы открыть набор инструментов Teams.
Выберите Создать новый проект .
Выберите Создайте новое приложение Teams .
В разделе Выбрать возможности выберите Bot , отмените выбор Вкладка и выберите OK .
В разделе Регистрация бота выберите Создать новую регистрацию бота .
В разделе Programming Language выберите JavaScript .
Выберите папку рабочего пространства. В папке вашей рабочей области будет создана папка для создаваемого вами проекта.
Введите подходящее имя для своего приложения, например
helloworld
. Название приложения должно содержать только буквенно-цифровые символы. Нажмите Введите , чтобы продолжить.
Ваше приложение Teams будет создано в течение нескольких секунд.
Используйте teamfx
CLI, чтобы создать свой первый проект. Начните с папки, в которой вы хотите создать папку проекта.
teamfx новые
Интерфейс командной строки задает несколько вопросов для создания проекта. Каждый вопрос расскажет вам, как на него ответить (например, использовать клавиши со стрелками для выбора варианта). Когда вы ответите на вопрос, подтвердите свой выбор, нажав Введите .
- Выберите Создайте новое приложение Teams .
- Выберите Bot и отмените выбор Tab .
- Выберите Создайте новую регистрацию бота .
- Выберите JavaScript в качестве языка программирования.
- Нажмите Введите , чтобы выбрать папку рабочего пространства по умолчанию.
- Введите подходящее имя для своего приложения, например
helloworld
. Название приложения должно состоять только из буквенно-цифровых символов.
Ваш проект будет создан после того, как будут даны ответы на все вопросы.
Ознакомьтесь с исходным кодом
Если вы хотите пока пропустить этот раздел, вы можете запустить приложение локально.
Расширение обмена сообщениями использует Bot Framework, чтобы позволить пользователю взаимодействовать с вашим сервисом через диалог. После строительных лесов ваш проект будет выглядеть так:
Код бота хранится в каталоге бота
. Бот / teamBot.js
— это основная точка входа для бота.
Подсказка
Ознакомьтесь с ботами за пределами Teams, прежде чем интегрировать своего первого бота в Teams.Вы можете найти дополнительную информацию о ботах, просмотрев руководства по службе Azure Bot.
Запустите приложение локально
Teams Toolkit позволяет размещать ваше приложение локально. Для этого:
- Приложение Azure Active Directory зарегистрировано в клиенте M365.
- Манифест приложения отправлен в Центр разработчиков для Teams. Установлен
- ngrok, который используется для создания туннеля между Teams и кодом вашего бота.
Чтобы собрать и запустить приложение локально:
В Visual Studio Code нажмите клавишу F5 , чтобы запустить приложение в режиме отладки.
При первом запуске приложения загружаются все зависимости и создается приложение. Окно браузера автоматически открывается после завершения сборки. Это может занять 3-5 минут.
Ваш веб-браузер запустит приложение. Если будет предложено открыть рабочий стол Teams, выберите Отменить , чтобы оставаться в браузере. Вам также может быть предложено переключиться на рабочий стол Teams в другое время; в этом случае выберите веб-приложение Teams.
Вам может быть предложено войти в систему. Если это так, войдите в свою учетную запись M365.
Когда будет предложено установить приложение в Teams, выберите Добавить .
После загрузки приложения вы попадете прямо в сеанс чата с ботом. Вы можете ввести
добро пожаловать,
, чтобы показать вводную карточку, ивыучить
, чтобы перейти к документации по адаптивной карточке и командам бота.Отладка работает нормально — попробуйте сами! Откройте бота
/ teamBot.js
и найдите методonMessage ()
. Установите точку останова в любом случае. Затем введите текст.
При нажатии клавиши F5 набор инструментов Teams:
- Регистрирует приложение в Azure Active Directory.
- Регистрирует приложение для «боковой загрузки» в Microsoft Teams.
- Запускает туннель ngrok, чтобы команды могли взаимодействовать с вашим приложением.
- Запускает Microsoft Teams с помощью команды, указывающей Teams на загрузку неопубликованного приложения.
Для успешного запуска приложения в Teams у вас должна быть учетная запись разработки Microsoft 365, которая позволяет загружать неопубликованные приложения. Для получения дополнительной информации об открытии счета см. Предварительные требования.
Важно
В настоящее время приложения для загрузки неопубликованных приложений доступны в правительственном облаке сообщества (GCC), GCC-High и DOD.
Подсказка
Проверьте наличие проблем перед загрузкой неопубликованного приложения с помощью инструмента проверки приложения, который включен в набор инструментов. Исправьте ошибки, чтобы успешно загрузить приложение.
Разверните приложение в Azure
Развертывание состоит из двух этапов. Сначала создаются необходимые облачные ресурсы (также известные как подготовка), затем код, составляющий ваше приложение, копируется в созданные облачные ресурсы.
Откройте код Visual Studio.
Выберите Teams Toolkit на боковой панели, щелкнув значок Teams.
Выберите Provision in the Cloud .
При необходимости выберите подписку для использования ресурсов Azure.
Примечание
Для размещения вашего приложения всегда используются некоторые ресурсы Azure.
Диалоговое окно предупреждает, что при запуске ресурсов в Azure могут возникнуть расходы. Нажмите Положение .
В процессе подготовки создаются ресурсы в облаке Azure.На это нужно время. Вы можете следить за прогрессом, наблюдая за диалогами в правом нижнем углу. Через несколько минут вы увидите следующее уведомление:
После завершения подготовки выберите Развернуть в облаке . Как и в случае с подготовкой, этот процесс занимает некоторое время. Вы можете следить за процессом, наблюдая за диалогами в правом нижнем углу. Через несколько минут вы увидите уведомление о завершении.
В окне вашего терминала:
Запустить
teamfx provision
.резерв teamfx
Вам может быть предложено войти в свою подписку Azure. При необходимости вам будет предложено выбрать подписку Azure для использования для ресурсов Azure.
Примечание
Для размещения вашего приложения всегда используются некоторые ресурсы Azure.
Запустите
teamfx deploy
.Развертывание командfx
Примечание
В чем разница между подготовкой и развертыванием?
На этапе Provision создаются ресурсы в Azure и M365 для вашего приложения, но без кода (HTML, CSS, JavaScript и т. Д.)) копируется в ресурсы. На этапе Deploy код вашего приложения копируется в ресурсы, созданные на этапе подготовки. Обычно развертывание выполняется несколько раз без предоставления новых ресурсов. Поскольку этап подготовки может занять некоторое время, он отделен от этапа развертывания.
После завершения этапов подготовки и развертывания:
- В Visual Studio Code откройте панель отладки ( Ctrl + Shift + D / ⌘⇧-D или View> Run )
- Выберите Launch Remote (Edge) из раскрывающегося списка конфигурации запуска.
- Нажмите кнопку Play, чтобы запустить приложение — теперь оно работает удаленно из Azure!
Перед развертыванием приложение выполнялось локально:
Конечная точка HTTP приложения, в которую Microsoft Teams загружает приложение, выполняется локально.
Развертываниевключает в себя подготовку ресурсов в активной подписке Azure и развертывание (загрузку) кода серверной части и внешнего интерфейса для приложения в Azure.