Сделать бота: Sorry, this page can’t be found.

Содержание

Как создать телеграм-бота | База знаний Selectel

С помощью ботов можно упростить себе задачу коммуникации с пользователями, создав для них умного помощника. Боты понимают текстовые команды и могут обращаться к API вашего вебсайта, сервиса или быть самостоятельным продуктом с уникальными услугами. Обычно, для создания бота требуется сервер, но в этой статье мы разберём подход, позволяющий обойтись без него. Он идеален при резких колебаниях количества запросов и прекрасно выдерживает пиковые нагрузки.
Настроить Телеграм-бота на Облачных функциях, используя официальный API и заготовленный нами пример, можно в 3 этапа:

  1. Запрограммировать логику работы Телеграм-бота.
  2. Зарегистрировать нового бота в Telegram.
  3. Связать бота и его логику воедино.

Запрограммировать логику работы Телеграм-бота

Чтобы упростить задачу, мы написали пример такого бота. Его исходный код доступен по ссылке github.com/selectel/cloud-telegram-bot. Он понимает команды:

  • /start с приветственным сообщением;
  • /sticker
    с ответом в виде стикера;
  • /getwebhook чтобы вы могли получить информацию о настройках вашего бота;
  • /setwebhook для настройки вашего бота, но об этом позже.

Пройдите следующие шаги с нашим примером бота, чтобы освоиться:

  1. Скачайте исходный код как архив («Clone or download» → «Download ZIP») и распакуйте его.
  2. Внутри должно быть:
    • «setup.py» с минимальным кодом, чтобы Python-окружение приняло содержимое папки за модуль для установки;
    • «requirements.txt» с описанием зависимостей;
    • «bot» — папка с исходным кодом нашего бота.
  3. Выделите все эти файлы и папки, а затем создайте из них новый ZIP-архив, тогда исходный код внутри архива не будет иметь лишних папок (как в случае с архивом, скачанным с github).
  4. Перейдите в панели управления в раздел Облачная ПлатформаФункции и нажмите кнопку Создать функцию.
  5. Выберите среду выполнения и задайте имя, например Bot.
  6. В поле Загрузить выберите Архив.
  7. Загрузите ZIP-файл в качестве Кода функции.
  8. Укажите Путь к файлу как /bot/tele_bot.py.
  9. Укажите Вызываемую функцию как main.
  10. Получите токен по инструкции и в поле Переменные окружения
    добавьте его ключ и значение.
  11. Нажмите кнопку Сохранить и развернуть.
  12. Чтобы получить ссылку для вызова функции, перейдите на вкладку Триггеры и нажмите на тумблер HTTP-запрос.

Теперь у нас есть API, реализующее логику ответов бота. Следующим этапом мы зарегистрируем его в Telegram.

Зарегистрировать нового бота в Telegram

Чтобы Telegram знал о существовании нашего бота, его нужно зарегистрировать. Для этого существует только один способ:

  1. Найдите бота @BotFather в Телеграм. Это официальный бот, созданный специально для управления ботами.
  2. Отправьте ему команду:

    /newbot
  3. @BotFather спросит вас, как вы назовёте вашего бота. Следующим сообщением отправьте его название, заканчивающееся на «_bot».

  4. Запишите полученный токен от @BotFather — это ключ для работы с Telegram API.

Теперь у нас API, регистрация бота в Telegram и его токен. Осталось связать это вместе.

Как связать бота и его логику воедино?

На этом этапе надо сделать так, чтобы бот знал токен пользователя, а Telegram знал, где его API:

  1. Найдите переменную окружения «TOKEN» в настройках функции. Мы оставили её пустой на первом этапе.
  2. Укажите в этой переменной токен вашего бота, который получили от @BotFather.
  3. Нажмите Сохранить и развернуть
    .

Далее нужно направить сообщения, которые пользователи отправляют в Telegram, нашему боту — в то API, которое для него создали.

Способ 1. Через бота @SelectelServerless_bot

  1. Найдите бота @SelectelServerless_bot в Телеграме.
  2. Введите команду:

    /setwebhook <Токен от вашего бота> <URL от облачной функции>
  3. Бот ответит тем, что получит из Telegram API. Если всё хорошо, это будет «true».

  4. Чтобы удостовериться в том, что всё корректно, отправьте команду:

    /getwebhook <Токен от вашего бота>
  5. В ответ должна прийти информация о 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

  1. Заходим в дашборд, пункт Automation
  2. Переходим в пункт 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

8. Распакуйте и откройте файлы index.php и php из папки Viberbot.


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.

  1. Первая строка импортирует библиотеку discord.py.
  2. Вторая строка импортирует библиотеку ОС, но она используется только для получения переменной TOKEN из файла .env . Если вы не используете .env , эта строка вам не нужна.
  3. Затем мы создаем экземпляр клиента . Это связь с Discord.
  4. Декоратор @ client.event () используется для регистрации события. Это асинхронная библиотека, поэтому все делается с помощью обратных вызовов. Обратный вызов — это функция, которая вызывается, когда происходит что-то еще. В этом коде событие on_ready () вызывается, когда бот готов к использованию. Затем, когда бот получает сообщение, вызывается событие on_message () .
  5. Событие on_message () срабатывает каждый раз при получении сообщения, но мы не хотим, чтобы оно выполняло какие-либо действия, если сообщение пришло от нас. Поэтому, если Message.author совпадает с Client.user , код просто возвращается.
  6. Затем мы проверяем, начинается ли Message.content с '$ hello' . Если да, то бот отвечает «Привет!» на канал, в котором он использовался.
  7. Теперь, когда бот настроен, последняя строка запускает бот с токеном входа.Он получает токен из файла .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 минут. При постоянных пингах бот никогда не перейдет в стадию сна и просто продолжит работу.

Итак, нам нужно сделать еще две вещи, чтобы наш бот работал непрерывно:

  1. создать веб-сервер в repl.it и
  2. настроить 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