Создать своего бота: Как подключитьTelegram чат-бот | SendPulse

Содержание

Как подключитьTelegram чат-бот | SendPulse

Чат-бот — это автоматизированный многофункциональный помощник, который может показывать информацию подписчикам и собирать информацию по запросу согласно заранее подготовленным сценариям.

Следуйте пошаговой инструкции, чтобы создать своего первого чат-бота для Telegram мессенджера или подключить существующий к сервису SendPulse для дальнейшей настройки.

Если у вас уже создан бот, пропустите первый пункт и переходите сразу ко второму.

Как создать нового бота в Telegram

Откройте мессенджер Telegram, войдите в вашу учетную запись или создайте новую.

Шаг 1. Введите в поле поиска @BotFather и выберите бота.

Обратите внимание, что у официального бота Telegram будет стоять синий подтверждающий знак возле имени в виде галочки.

Шаг 2. Нажмите «Запустить» для активации бота BotFather.

В ответ вы получите список команд по управлению ботов.

Шаг 3. Выберите или напечатайте и отправьте команду /newbot.

Шаг 4. Дайте имя боту — клиенты увидят это имя при общении с ботом. И никнейм бота — по нему можно будет найти бота в Telegram. Никнейм должен быть уникальным, не повторять существующие в базе и заканчиваться на слово «bot».

После того как вы выберите подходящее имя бот будет создан. Вы получите сообщение со ссылкой на бота t.me/<никнейм_бота>, рекомендации по настройке аватарки, описание бота и список команд для настройки бота.

Для подключения бота в SendPulse вам понадобится токен. Скопируйте значение токена и перейдите к последнему пункту.

Где найти ключ для уже существующего бота

Шаг 1. Перейдите к боту @BotFather и введите команду /token.

Вы увидите кнопки с созданными ботами.

Шаг 2. Выберите бота, которого нужно подключить.

Скопируйте значение токена.

Как подключить бота в Sendpulse

Перейдите в раздел «Чат-боты» в вашем аккаунте SendPulse. Если ранее у вас не было подключенных каналов, нажмите на кнопку «Подключить каналы». Если же вы уже подключали ботов, перейдите в раздел «Управление ботами».

Затем выберите нужный канал и нажмите на кнопку «Подключить Telegram».

Введите ключ доступа — токен полученный в созданном боте. Нажмите «Подключить».

Нажмите на кнопку «Подписаться на бота». Таким образом вы сможете тестировать каждое сообщение и цепочку и отправлять их себе перед реализацией.

Вы будете перенаправлены в приложение «Telegram», нажмите на кнопку «Запустить» и вы подпишетесь на своего бота.

Чат-бот будет успешно добавлен.

Можете переходить в него и начинать создавать приветственные и триггерные цепочки, массовые рассылки.

Обратите внимание, что подписчики не импортируются автоматически. После подключения вы сможете собирать аудиторию с помощью виджета подписки или делясь ссылкой на бота t.me/<никнейм_бота> напрямую. Также вы можете вручную загрузить файл с ранее собранными подписчиками.

Подключить чат-бота Telegram

Обновлено: 29.03.2021

Как создать телеграм-бота | База знаний 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.

Итог

Готов для работы бот, доступный в Телеграме, отвечающий на команды и способный автоматически масштабироваться под нагрузкой и без сервера.

Как быстро создать бота в 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-бота.

В остальном сервис просто отличный. Много различных функций, понятные цепочки действий, никакой левой рекламы и детальное руководство в форматах текста и видео.


Как создать Discord бота с помощью Python

Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.

Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.

Мы будем использовать целый ряд инструментов, в том числе Discord API, библиотеки Python, и платформы облачных вычислений под названием Repl.it.

Как создать учетную запись Discord Bot

Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.

Вот шаг к созданию учетной записи Discord Bot.

1. Убедитесь, что вы вошли на сайт Discord.

2. Перейдите на страницу приложения.

3. Щелкните кнопку «Новое приложение».

4. Дайте приложению имя и нажмите «Создать».

5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить действие, нажав «Yes, do it!»

Оставьте настройки по умолчанию для Public Bot и Require OAuth3 Code Grant.

Ваш бот создан. Следующим шагом будет копирование токена.

Этот токен является паролем вашего бота, поэтому не сообщайте его никому. Это может позволить кому-то войти в ваш бот и делать разные плохие вещи.

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

Как пригласить вашего бота присоединиться к серверу

Теперь вам нужно подключить своего пользователя-бота к серверу. Для этого вы должны создать для него URL-адрес приглашения.

Перейдите на вкладку «OAuth3». Затем выберите «бот» в разделе «scopes».

Теперь выберите нужные разрешения для бота. Наш бот будет в основном использовать текстовые сообщения, поэтому нам не нужно много разрешений. Вам может потребоваться больше, в зависимости от того, что вы хотите, чтобы ваш бот делал. Будьте осторожны с разрешением «Администратор».

После выбора соответствующих разрешений нажмите кнопку «Copy» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.

Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».

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

Теперь, когда вы создали пользователя-бота, мы начнем писать код Python для бота.

Как написать код для базового бота Discord с помощью библиотеки discord.py

Мы будем использовать библиотеку Python discord.py, чтобы написать код для бота. discord.py — это оболочка API для Discord, которая упрощает создание бота Discord на Python.

Как создать реплику и установить disocrd.py

Вы можете разработать бота на своем локальном компьютере с помощью любого редактора кода. Однако в этом уроке мы будем использовать Repl.it, потому что это упростит всем пользователям следовать его указаниям. Repl.it — ​​это онлайн-среда IDE, которую вы можете использовать в своем веб-браузере.

Создайте новый Repl и выберите «Python» в качестве языка.

Чтобы использовать библиотеку discord.py, просто напишите import discord  вверху main.py. Repl.it автоматически установит эту зависимость, когда вы нажмете кнопку «Run».

Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:

python3 -m pip install -U discord.py

Возможно, вам придется использовать pip3 вместо pip.

Если вы используете Windows, вы должны вместо этого использовать следующую строку:

py -3 -m pip install -U discord.py

Как настроить события Discord для вашего бота

discord.py вращается вокруг концепции событий. Событие — это то, что вы слушаете, а затем реагируете. Например, когда происходит сообщение, вы получаете событие об этом, на которое можете ответить.

Сделаем бота, который отвечает на конкретное сообщение. Этот простой код бота вместе с объяснением кода взят из документации discord.py. Позже мы добавим в бота дополнительные функции.

Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.

import discord
import os

client = discord.Client()

@client.event
async def on_ready():
    print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('$hello'):
        await message.channel.send('Hello!')

client.run(os.getenv('TOKEN'))

Когда вы создали своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env. Просто замените os.getenv('TOKEN') токеном.

.env файлы используются для объявления переменных среды. На Repl.it большинство создаваемых вами файлов видны всем, но .env файлы видны только вам. Другие люди, просматривающие публичный ответ, не смогут увидеть содержимое файла .env.

Поэтому, если вы разрабатываете на Repl.it, включайте в файл .env только личную информацию, такую ​​как токены или ключи.

Нажмите кнопку «Добавить файл» и создайте файл с именем .env.

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

Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.

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

У нас есть код для бота, поэтому теперь нам просто нужно его запустить.

Как запустить бота

Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.

Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:

В Windows:

В других системах:

Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».

Как улучшить бота

Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».

Этот бот будет отвечать сообщением ‘Hello!’ всякий раз, когда кто-то отправляет сообщение, содержащее грустное или удручающее слово.

Любой желающий сможет добавить ободряющие сообщения для использования бота, а отправленные пользователем сообщения будут храниться в базе данных Repl.it.

Бот также вернет случайную вдохновляющую цитату из API, когда кто-то наберет в чате сообщение «$inspire».

Мы начнем с добавления функции «$inspire».

Как добавить в бота вдохновляющие цитаты

Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote() и обновить код нашего бота, чтобы вызвать функцию.

Вот обновленный код. После кода я объясню новые части.

import discord
import os
import requests
import json

client = discord.Client()

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']
  return(quote)

@client.event
async def on_ready():
  print('We have logged in as {0.user}'.format(client))

@client.event
async def on_message(message):
  if message.author == client.user:
    return

  if message.content.startswith('$inspire'):
    quote = get_quote()
    await message.channel.send(quote)

client.run(os.getenv('TOKEN'))

Теперь нам нужно импортировать модуль requests. Этот модуль позволяет нашему коду делать 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", "depressed", "unhappy", "angry", "miserable"]

Не стесняйтесь добавлять в список больше слов.

Как добавить в бота обнадеживающие сообщения

Теперь мы добавим список ободряющих сообщений, которыми бот ответит.

Добавьте следующий список после созданного вами списка sad_words:

starter_encouragements = [
  "Cheer up!",
  "Hang in there.",
  "You are a great person / bot!"
]

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

Как отвечать на сообщения

Теперь нам нужно обновить нашего бота, чтобы он использовал два созданных нами списка. Во-первых, импортируйте модуль random, потому что бот будет случайным образом выбирать сообщения из списка. Добавьте следующую строку в операторы импорта в верхней части кода:

Теперь мы обновим функцию on_message(), чтобы проверять все сообщения, чтобы увидеть, содержат ли они слово из списка sad_words. Если будет найдено грустное слово, бот отправит случайное сообщение из списка.

Вот обновленный код:

async def on_message(message):
  if message.author == client.user:
    return

  msg = message.content

  if msg.startswith('$inspire'):
    quote = get_quote()
    await message.channel.send(quote)
    
  if any(word in msg for word in sad_words):
    await message.channel.send(random.choice(starter_encouragements))

Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота. 

Как создавать ботов в 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’ (или любой другой метод, используемый ботом).

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

Без единой строчки кода!

Telegram — мессенджер, созданный Павлом Дуровым в 2013 году, которым пользуется свыше 100 миллионов человек во всем мире. Помимо переписки с живыми людьми в нем можно общаться с ботами, программами которые в ответ на запросы пользователя выдают какую-либо информацию. Примеры интересных ботов:

А если вы не подписались на бота от iPhones.ru, то пришла пора сделать это! @iPhonesRu_Bot

Сейчас очень модно заводить Telegram-боты. У каждого крупного интернет-ресурса или крупной компании есть свой бот, в которых клиенты получают ответы на вопросы или читают новости. Если у вас есть свой сайт, группа в соцсети или просто интересная идея бота, то эта инструкция поможет вам с минимальным усилиями внести свой вклад в волшебный мир Telegram.

Есть два пути создания ботов. Первый — написать приложение с помощью Telegram API, а второй — воспользоваться сервисом для создания ботов. Один из таких, manybot.io, мы будем использовать в статье.

Устанавливаем Telegram

Инструкцию из статьи можно выполнить в версии Telegram для любой платформы:

Сама я буду использовать версию для OS X, так как без полноценной клавиатуры создавать бота не совсем удобно.

Создаем бота

1. Набираем в поиске Manybot, кликаем на значок бота и нажимаем на кнопку Start:

2. Нажимаем на кнопку Добавить нового бота:

4. Переходим в @BotFather, нажимаем кнопку Start и вводим команду /newbot:

6. Вводим имя бота, которое будет отображаться при поиске и техническое имя бота, копируем полученный API-токен:

7. Возвращаемся в @Manybot и вставляем в него API-токен из буфера обмена:

8. Указываем описание бота:

9. Бот готов:

10. Находим свой бот через поиск и начинаем пользоваться:

Создаем свою команду

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

1. Набираем /commands:

2. Набираем имя новой команды и текст, который она будет выдавать в ответ (при желании к тексту можно прикрепить файлы):

3. Нажимаем кнопку Сохранить и дожидаемся завершения создания команды:

Для того, чтобы отредактировать команду /hello надо набрать /commands, /hello:

Чтобы увидеть ответ команды, надо нажать кнопку Показать команду. К сожалению, я не нашла способа проверить как будет выглядеть бот в приложении у подписчиков, кроме как попросить кого-нибудь зайти со своего аккаунта и посмотреть:

Добавляем пункт в меню

При желании, для команды можно сделать кнопку в меню, которая будет ее запускать.

1. Набираем /commands:

2. Нажимаем на кнопку Настроить главное меню, а затем на кнопку Добавить пункт меню:

3. Выбираем из списка команду, которую хотим добавить в меню и указываем название для кнопки:

Включаем автопостинг из соцсетей

В ботах можно настроить трансляцию новостей из Twitter, Youtube, VK или RSS.

1. Набираем команду /autoposting:

2. Нажимаем кнопку с нужной соцсетью и указываем ссылку на страницу:

Создаем отложенный пост

В ботах Telegram можно отправлять сообщения, которые будут приходить всем его подписчикам. Вот инструкция, как создать такое сообщение и запланировать его отправку на определенное время:

1. Набираем команду /newpost:

2. Вводим текст поста и нажимаем на кнопку Отложить пост, указываем текущее время:

3. Указываем время поста и сохраняем пост:

Собираем данные

Еще с помощью ботов можно проводить опросы среди подписчиков:

1. Набираем /commands, выбираем пункт меню Создать команду и вводим имя для новой команды:

2. Нажимаем на кнопку Добавить вопрос, выбираем тип ответа и вводим текст вопроса:

3. Нажимаем на кнопку Сохранить и получаем уведомление об успешном создании команды:

4. Ответы на вопрос можно посмотреть в Главное меню-> Ответы на формы -> название команды:

Вот и все, что нужно знать, чтобы создать простейшего бота. Больше информации о функциях, которые может добалять manybot.io можно узнать, если набрать в своем боте команды /help.

Если нужно что-то посложнее

Возможности ботов Telegram гораздо шире, чем те которые есть у ботов, созданных на платформе code.telegram.org можно почитать подробнее о Telegram API и создании приложений на его основе.

Кстати, для расширения кругозора рекомендую статью 10 фактов о Telegram, которые ты не знаешь.

🤓 Хочешь больше? Подпишись на наш Telegram. … и не забывай читать наш Facebook и Twitter 🍒 В закладки iPhones.ru Без единой строчки кода! Telegram — мессенджер, созданный Павлом Дуровым в 2013 году, которым пользуется свыше 100 миллионов человек во всем мире. Помимо переписки с живыми людьми в нем можно общаться с ботами, программами которые в ответ на запросы пользователя выдают какую-либо информацию. Примеры интересных ботов: Игра Что? Где? Когда? Поиск паролей от Wi-Fi Проверка…
  • До ←

    PhotoFast iOS Card Reader. Увеличь память iPhone без регистрации и смс

  • После →

    Новый дрон DJI Matrice 600 перевернет мир кино

Начало работы — сборка первого бота — Teams

  • Чтение занимает 5 мин

В этой статье

Это руководство содержит сведения о том, как создать, запустить и развернуть чат-бота для Teams. Чат-бот выступает в качестве посредника между пользователем Teams и веб-службой. Пользователи могут общаться с ботом, чтобы быстро получить информацию, инициировать рабочие процессы или выполнить другие действия, предлагаемые веб-службой.

Важно!

В настоящее время боты доступны в облако сообщества для государственных организаций (GCC), но недоступны в GCC-High и Министерстве обороны (DOD).

Прежде чем начать

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

Создание проекта

Используйте набор средств Teams для создания своего первого проекта.

  1. Откройте Visual Studio Code.

  2. Выберите значок Teams на боковой панели, чтобы открыть Teams набор средств.

    .

  3. Выберите Создать проект.

    .

  4. Выберите Создать приложение Teams.

  5. В разделе Выбор возможностей выберите Бот, отклоницу вкладку и выберите ОК.

  6. В разделе Регистрация ботов выберите Создать новую регистрацию бота.

  7. В разделе Язык программирования выберите JavaScript.

  8. Выберите папку рабочей области. В папке рабочей области будет создана папка для создаваемого проекта.

  9. Введите подходящее имя для приложения, например helloworld. Имя приложения должно содержать только буквы. Чтобы продолжить, нажмите клавишу ВВОД.

Создание приложения Teams займет несколько секунд.

Используйте для создания первого проекта интерфейс командной строки teamsfx. Начните с папки, в которой будет создана папка проекта.

teamsfx new

Интерфейс командной строки выдаст несколько вопросов, ответы на которые используются для создания проекта. Каждый вопрос сопровождается подсказкой о том, как на него отвечать (например, использовать клавиши со стрелками для выбора варианта). Ответив на вопрос, подтвердите свой выбор, нажав клавишу ВВОД.

  1. Выберите Создать приложение Teams.
  2. Выберите вкладку Bot и deselect.
  3. Выберите Создать новую регистрацию бота.
  4. Выберите JavaScript в качестве языка.
  5. Нажмите клавишу ВВОД, чтобы выбрать папку рабочей области по умолчанию.
  6. Введите подходящее имя для приложения, например helloworld. Имя приложения должно состоять только из букв и цифр.

После ответа на все вопросы создается проект.

Знакомство с исходным кодом

Если вы хотите пропустить этот раздел, вы можете запустить приложение локально.

Расширение для сообщений использует Bot Framework, чтобы дать пользователю возможность взаимодействовать со службой посредством общения. После генерации кода проект будет выглядеть следующим образом:

Код бота хранится в каталоге bot. Основная bot/teamsBot.js точка входа для бота.

Совет

Перед интеграцией своего первого бота в Teams ознакомьтесь с ботами за пределами Teams. Дополнительные сведения о ботах см. в руководстве Служба Azure Bot.

Локальный запуск приложения

Набор средств Teams позволяет размещать приложение локально. Для этого:

  • Приложение Azure Active Directory регистрируется в клиенте M365.
  • Манифест приложения отправляется в Центр разработчиков для Teams.
  • ngrok устанавливается и используется для обеспечения туннеля между Teams и кодом бота.

Чтобы создать и запустить приложение локально, выполните следующие действия.

  1. С Visual Studio Code нажмите клавишу F5, чтобы запустить приложение в режиме отлаживания.

    При первом запуске приложения произойдет загрузка всех зависимостей и сборка приложения. По завершении сборки автоматически откроется окно браузера. Для завершения может потребоваться от 3 до 5 минут.

  2. Веб-браузер начинает запускать приложение. Если вам будет предложено открыть Teams рабочий стол, выберите Отмена, чтобы оставаться в браузере. Вам также может быть предложено перейти на рабочий Teams в другое время; выберите Teams веб-приложение, когда это произойдет.

  3. Вам может быть предложено выполнить вход. В этом случае войдите с учетной записью M365.

  4. Если вам предложено установить приложение на Teams, выберите Добавить.

    После загрузки приложения вы будете доставлены непосредственно в сеанс чата с ботом. Вы можете ввести, чтобы показать вводную карту, а также перейти welcome learn к адаптивной документации командной карты и бота.

    Отладка работает надлежащим образом — попробуйте сами! Откройте файл bot/teamsBot.js и найдите метод onMessage(). Установите точку разлома в любом случае. Затем введите какой-нибудь текст.

Узнайте, что происходит при локальном запуске приложения в отладчике.

При нажатии клавиши F5 Teams набор средств:

  1. Регистрирует приложение с помощью Azure Active Directory.
  2. Регистрирует приложение для «боковой загрузки» в Microsoft Teams.
  3. Запускает туннель ngrok, чтобы Teams взаимодействовать с приложением.
  4. Начинается Microsoft Teams с командой Teams для загрузки приложения.
Узнайте, как устранить распространенные проблемы при локальном запуске приложения.

Чтобы запустить приложение в Teams, у вас должна быть учетная запись разработчика Microsoft 365, позволяющая устанавливать неопубликованные приложения. Дополнительные сведения о создании учетной записи см. в разделе Необходимые компоненты.

Важно!

В настоящее время приложения для облако сообщества для государственных организаций (GCC), GCC High и DOD.

Совет

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

Развертывание приложения в Azure

Развертывание состоит из двух этапов. Сначала создаются необходимые облачные ресурсы (также известные как подготовка), затем код, который составляет ваше приложение, копируется в созданные облачные ресурсы.

  1. Откройте Visual Studio Code.

  2. Выберите Teams набор средств на боковой панели, выбрав значок Teams.

  3. Выберите Положение в облаке.

  4. При необходимости выберите подписку для использования для ресурсов Azure.

    Примечание

    Для размещения приложения всегда используются некоторые ресурсы Azure.

  5. Диалоговое окно предупреждает, что при запуске ресурсов в Azure могут возникнуть затраты. Press Provision.

    Процесс подготовка создает ресурсы в облаке Azure. Это занимает некоторое время. Вы можете отслеживать ход, наблюдая за диалогами в правом нижнем углу. Через несколько минут вы увидите следующее уведомление:

  6. Как только подготовка завершена, выберите Развертывание в облаке. Как и в случае с подготовками, этот процесс занимает некоторое время. Вы можете отслеживать процесс, наблюдая диалоги в правом нижнем углу. Через несколько минут вы увидите уведомление о завершении.

В окне терминала:

  1. Запустите teamsfx provision.

    teamsfx provision
    

    Возможно, вам будет предложено войти в свою подписку Azure. При необходимости вам будет предложено выбрать подписку Azure для использования для ресурсов Azure.

    Примечание

    Для размещения приложения всегда используются некоторые ресурсы Azure.

  2. Запустите teamsfx deploy.

    teamsfx deploy
    

Примечание

В чем разница между Provision и Deploy?

Шаг Provision создает ресурсы в Azure и M365 для вашего приложения, но код (HTML, CSS, JavaScript и т.д.) не копируется в ресурсы. Шаг Развертывание копирует код приложения на ресурсы, созданные во время шага по предоставлению. Часто развертывается несколько раз без предоставления новых ресурсов. Так как этап предоставления может занять некоторое время, он отделен от шага развертывания.

После завершения этапов подготовка и развертывание:

  1. С Visual Studio Code откройте панель отключки (Ctrl+Shift+D / ⌘⇧-D или Просмотр > Run)
  2. Выберите Пульт запуска (Edge) из выпадаемой конфигурации запуска.
  3. Нажмите кнопку Play, чтобы запустить приложение — теперь он работает удаленно из Azure!
Узнайте, что происходит после развертывания приложения в Azure

До развертывания приложение работает локально:

  1. Конечная точка HTTP приложения, в которую Microsoft Teams загружает приложение, работает локально.

    Развертывание включает подготовку ресурсов для активной подписки Azure и развертывание (загрузку) внутреннего и внешнего кода приложения в Azure. Серверная часть использует различные службы Azure, включая службу приложений Azure и службу Azure Bot.

См. также

встроенных ботов

Помимо отправки команд в личных сообщениях или группах, пользователи могут взаимодействовать с вашим ботом с помощью встроенных запросов . Если встроенные запросы включены, пользователи могут вызвать вашего бота, введя его имя пользователя и запрос в поле ввода текста в любом чате . Запрос отправляется вашему боту в обновлении. Таким образом, люди могут запрашивать контент у вашего бота в любых своих чатах, группах или каналах, вообще не отправляя никаких сообщений.


Чтобы включить эту опцию, отправьте команду / setinline в @BotFather и укажите текст-заполнитель, который пользователь увидит в поле ввода после ввода имени вашего бота.

См. Соответствующие методы и объекты в Руководстве по API для ботов.

Встроенные результаты

Встроенные боты поддерживают всех типов контента , доступных в Telegram (всего 20). Они могут отправлять стикеры, видео, музыку, локации, документы и многое другое.


Клиенты могут отображать результаты с вертикальной или горизонтальной прокруткой, в зависимости от типа контента:


Как только пользователь нажимает на элемент, он немедленно отправляется получателю, а поле ввода очищается.

Переключение режимов inline / PM

Некоторым встроенным ботам может быть полезен процесс начальной настройки, например подключение их к учетной записи на внешней службе (например, YouTube). Мы добавили простой способ переключения между приватным чатом с ботом и любым чатом, в котором пользователь хочет делиться встроенными результатами.


Вы можете отобразить специальную кнопку «Перейти в личку» над встроенными результатами (или вместо них). Эта кнопка откроет приватный чат с ботом и передаст параметр по вашему выбору, чтобы вы могли запрашивать у пользователя соответствующие действия по настройке. После этого вы можете использовать встроенную клавиатуру с кнопкой switch_inline_query , чтобы отправить пользователя обратно в исходный чат.

Примеры ботов
@youtube — показывает кнопку «Войти на YouTube», а затем предлагает персонализированные результаты.

Руководство: переход на PM

Результаты на основе местоположения

Встроенные боты могут запрашивать данные о местоположении у своих пользователей. Используйте команду / setinlinegeo с @BotFather, чтобы включить это. Ваш бот будет запрашивать у пользователя разрешение на доступ к их местоположению всякий раз, когда он отправляет встроенный запрос.

Пример бота
@foursquare — этот бот запросит разрешение на доступ к местоположению пользователя, а затем предоставит результаты с геотаргетингом.

Вирусное распространение

В сообщениях, отправленных с помощью вашего бота, рядом с именем отправителя будет отображаться его имя пользователя.

Когда пользователь нажимает на имя пользователя бота в заголовке сообщения, упоминание автоматически вставляется в поле ввода. При вводе символа @ в поле ввода появляется список предложений, в которых представлены недавно использованные встроенные боты.

Сбор отзывов

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

Обратите внимание, что это может создать проблемы с загрузкой популярных ботов — вы можете получить больше результатов, чем фактические запросы из-за кеширования (см. Параметр cache_time в answerInlineQuery). В этих случаях мы рекомендуем отрегулировать настройку вероятности, чтобы получить 1/10, 1/100 или 1/1000 результатов.

Примеры встроенных ботов

Вот несколько примеров встроенных ботов на случай, если вам интересно увидеть один в действии.Попробуйте любой из этих вариантов:
@gif — поиск GIF
@vid — поиск видео
@pic — поиск изображений в Яндексе
@bing — поиск изображений Bing
@wiki — поиск в Википедии
@imdb — поиск IMDB
@bold — выделите жирным, курсивный или фиксированный системный текст

NEW
@youtube — Подключите свою учетную запись для получения персонализированных результатов
@music — Поиск и отправка классической музыки
@foursquare — Найдите и отправьте адреса мест проведения
@sticker — Найдите и отправьте стикеры на основе эмодзи

Боты FAQ

Если вы новичок в ботах Telegram, мы рекомендуем сначала ознакомиться с нашим Знакомство с ботами .
Вы также можете найти Bot API Manual полезным.


Общие вопросы
Как создать бота?

Создавать ботов Telegram очень просто, но вам потребуются хотя бы некоторые навыки компьютерного программирования. Чтобы бот работал, создайте учетную запись бота с помощью @BotFather, а затем подключите его к своему внутреннему серверу через наш API.

К сожалению, готовых способов создать работающего бота, если вы не разработчик, не существует.Но мы уверены, что скоро вы найдете множество ботов, созданных другими людьми, с которыми можно будет поиграть.

Я разработчик. Где найти примеры?

Вот два примера ботов, написанных на PHP:

  • Hello Bot демонстрирует основы API бота Telegram.
  • Бот
  • Simple Poll является более полным примером, он поддерживает как длинный опрос, так и Webhooks для получения обновлений.

Многие члены нашего сообщества создают ботов и публикуют исходники.
Собираем их на на этой странице »

Напишите нам на @BotSupport, если вы создали бота и хотели бы поделиться им с другими.

Будете ли вы добавлять X в Bot API?

API ботов еще довольно молод. Есть много потенциальных возможностей, которые следует рассмотреть и реализовать. Некоторое время мы будем изучать, что люди делают со своими ботами, чтобы увидеть, какие направления будут наиболее важными для платформы.

Все разработчики ботов могут делиться идеями для нашего Bot API в нашей учетной записи @BotSupport .

Какие сообщения будет получать мой бот?

1. Все боты , независимо от настроек, получат:

  • Все служебные сообщения.
  • Все сообщения из приватных чатов с пользователями.
  • Все сообщения от каналов, участником которых они являются.

2. Администраторы ботов и боты с отключенным режимом конфиденциальности будут получать все сообщения, кроме сообщений, отправленных другими ботами.

3. Боты с включенным режимом конфиденциальности получит:

  • Команды, явно предназначенные для них (например, / command @ this_bot).
  • Общие команды от пользователей (например, / start) если бот был последним ботом, отправившим сообщение группе.
  • Сообщения, отправленные через этого бота.
  • Отвечает на любые сообщения, явно или неявно предназначенные для этого бота.

Обратите внимание на , что каждое конкретное сообщение может быть доступно только одному боту с включенной конфиденциальностью , т.е.е. ответ боту A, содержащий явную команду для бота B или отправленный через бота C, будет доступен только боту A. Ответы имеют наивысший приоритет.

Почему мой бот не видит сообщения от других ботов?

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

Получение обновлений
Как мне получать обновления?

В настоящее время есть два способа получения обновлений.Вы можете использовать либо длинный опрос, либо Webhooks. Обратите внимание, что , а не , возможно получать обновления с помощью длительного опроса, пока установлен исходящий Webhook.

Длинный опрос дает мне одни и те же обновления снова и снова!

Метод getUpdates возвращает 100 первых неподтвержденных обновлений. Чтобы подтвердить обновление, используйте параметр смещение при вызове getUpdates следующим образом:

  смещение = update_id последнего обработанного обновления + 1  

Все обновления с update_id меньше или равным смещению будут помечены как подтвержденные на сервере и больше не будут возвращаться.

У меня проблемы с Webhooks.

Если вы успешно настроили веб-перехватчик, но не получаете никаких обновлений, запомните:

  • Для работы веб-перехватчиков необходим действующий сертификат SSL.
  • Чтобы использовать самозаверяющий сертификат, вам необходимо загрузить сертификат открытого ключа с помощью параметра certificate в setWebhook. Пожалуйста, загрузите как InputFile, отправка строки не будет работать.
  • Порты, поддерживаемые в настоящее время для Webhooks: 443 , 80 , 88 , 8443 .
  • Подстановочные сертификаты могут не поддерживаться.
  • Перенаправления не поддерживаются.
  • CN должен точно соответствовать вашему домену.

Пожалуйста, ознакомьтесь с этим новым WEBHOOK GUIDE , чтобы узнать все, что нужно знать о веб-перехватчиках!

У меня проблемы с самозаверяющим сертификатом!

Ознакомьтесь с этим руководством по самозаверяющим сертификатам, которое мы сделали специально для вас. Если вы прочитали это, но у вас все еще есть вопрос, напишите нам в службу поддержки ботов.

Как я могу убедиться, что запросы Webhook поступают из Telegram?

Если вы хотите убедиться, что запрос Webhook исходит от Telegram, мы рекомендуем использовать секретный путь в URL-адресе, который вы нам даете, например www.example.com/your_token. Поскольку никто другой не знает токен вашего бота, можете быть уверены, что это мы.

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

Это возможно, если вы используете веб-перехватчики. Положительный момент в том, что вам нужно меньше запросов, недостаток — в этом случае невозможно узнать, что такой запрос был успешным, или получить его результат.

Каждый раз, когда вы получаете обновление веб-перехватчика, у вас есть два варианта:

1. Отправьте сообщение POST на https://api.telegram.org/bot/method

2. Ответьте напрямую и укажите метод как полезную нагрузку JSON в ответе

Вы также можете взглянуть на наш пример HelloBot, он предлагает реализацию этого PHP.

Работа со СМИ
Как мне скачивать файлы?

Используйте метод getFile.Обратите внимание, что это будет работать только с файлами размером до 20 МБ.

Как загрузить большой файл?

Боты в настоящее время могут отправлять файлы любого типа размером до 50 МБ, так что да, очень большие файлы пока работать не будут. Извините. Этот лимит может быть изменен в будущем.

Могу ли я рассчитывать на постоянство file_ids?

Да, file_ids можно рассматривать как постоянные.

Вещание пользователям
Мой бот достигает пределов, как мне этого избежать?

При отправке сообщений в определенном чате избегайте отправки более одного сообщения в секунду.Мы можем разрешить короткие пакеты, превышающие этот предел, но в конечном итоге вы начнете получать 429 ошибок.

Если вы отправляете массовые уведомления нескольким пользователям, API не будет разрешать более 30 сообщений в секунду или около того. Для достижения наилучших результатов рассмотрите возможность рассылки уведомлений через большие интервалы в 8–12 часов.

Также обратите внимание, что ваш бот не сможет отправлять более 20 сообщений в минуту в одну и ту же группу.

Как я могу отправить сообщение всем подписчикам моего бота сразу?

К сожалению, на данный момент у нас нет способов рассылки массовых сообщений, например.грамм. уведомления. Мы можем добавить что-нибудь в этом роде в будущем.

Чтобы избежать выхода за наши пределы при рассылке массовых уведомлений, рассмотрите возможность их распространения на более длительные интервалы, например 8-12 часов. API не будет разрешать массовые уведомления для более чем ~ 30 пользователей в секунду, если вы перейдете через это, вы начнете получать 429 ошибок.

См. Также: Как избежать превышения лимита?


Если у вас есть вопросы, на которые нет ответа на этой странице, напишите нам на @BotSupport в Telegram.
Мы приветствуем любые предложения по бот-платформе и API.

Начать работу — Создайте своего первого бота — Команды

  • 6 минут на чтение

В этой статье

В этом руководстве вы узнаете, как создавать, запускать и развертывать бот-приложение Teams. Бот действует как посредник между пользователем Teams и веб-службой.Пользователи могут общаться с ботом, чтобы быстро получать информацию, запускать рабочие процессы или делать что-нибудь еще, что может делать ваш веб-сервис.

Важно

В настоящее время боты доступны в правительственном облаке сообщества (GCC), но не доступны в GCC-High и Министерстве обороны (DOD).

Прежде чем начать

Убедитесь, что ваша среда разработки настроена, установив необходимые компоненты.

Создайте свой проект

Используйте набор инструментов Teams для создания своего первого проекта:

  1. Откройте код Visual Studio.

  2. Щелкните значок Teams на боковой панели, чтобы открыть набор инструментов Teams.

  3. Выберите Создать новый проект .

  4. Выберите Создайте новое приложение Teams .

  5. В разделе Выберите возможности выберите Bot , снимите флажок Tab и выберите OK .

  6. В разделе Регистрация бота выберите Создать новую регистрацию бота .

  7. В разделе Programming Language выберите JavaScript .

  8. Выберите папку рабочего пространства. В папке рабочей области будет создана папка для создаваемого вами проекта.

  9. Введите подходящее имя для своего приложения, например helloworld . Название приложения должно содержать только буквенно-цифровые символы. Нажмите Введите , чтобы продолжить.

Ваше приложение Teams будет создано в течение нескольких секунд.

Используйте teamfx CLI, чтобы создать свой первый проект. Начните с папки, в которой вы хотите создать папку проекта.

  teamfx новые
  

Интерфейс командной строки задает несколько вопросов для создания проекта. Каждый вопрос расскажет вам, как на него ответить (например, использовать клавиши со стрелками для выбора варианта). Когда вы ответили на вопрос, подтвердите свой выбор, нажав Введите .

  1. Выберите Создайте новое приложение Teams .
  2. Выберите Bot и отмените выбор Tab .
  3. Выберите Создайте новую регистрацию бота .
  4. Выберите JavaScript в качестве языка программирования.
  5. Нажмите Введите , чтобы выбрать папку рабочего пространства по умолчанию.
  6. Введите подходящее имя для своего приложения, например helloworld . Название приложения должно состоять только из буквенно-цифровых символов.

Ваш проект будет создан после того, как будут даны ответы на все вопросы.

Ознакомьтесь с исходным кодом

Если вы хотите пока пропустить этот раздел, вы можете запустить приложение локально.

Расширение обмена сообщениями использует Bot Framework, чтобы позволить пользователю взаимодействовать с вашим сервисом через диалог. После строительных лесов ваш проект будет выглядеть так:

Код бота хранится в каталоге бота . Бот / teamBot.js — это основная точка входа для бота.

Подсказка

Ознакомьтесь с ботами за пределами Teams, прежде чем интегрировать своего первого бота в Teams.Вы можете найти дополнительную информацию о ботах, просмотрев руководства по службе Azure Bot.

Запустите приложение локально

Teams Toolkit позволяет размещать ваше приложение локально. Для этого:

  • Приложение Azure Active Directory зарегистрировано в клиенте M365.
  • Манифест приложения отправлен в Центр разработчиков для Teams.
  • Установлен
  • ngrok, который используется для создания туннеля между Teams и кодом вашего бота.

Чтобы собрать и запустить приложение локально:

  1. В Visual Studio Code нажмите клавишу F5 , чтобы запустить приложение в режиме отладки.

    При первом запуске приложения загружаются все зависимости и создается приложение. Окно браузера автоматически открывается после завершения сборки. Это может занять 3-5 минут.

  2. Ваш веб-браузер запустит приложение. Если будет предложено открыть рабочий стол Teams, выберите Отмена , чтобы оставаться в браузере. Вам также может быть предложено переключиться на рабочий стол Teams в другое время; в этом случае выберите веб-приложение Teams.

  3. Вам может быть предложено войти в систему. Если это так, войдите в свою учетную запись M365.

  4. Когда будет предложено установить приложение в Teams, выберите Добавить .

    После загрузки приложения вы попадете прямо в сеанс чата с ботом. Вы можете ввести добро пожаловать, , чтобы показать вводную карточку, и выучить , чтобы перейти к документации по адаптивной карточке и командам бота.

    Отладка работает нормально — попробуйте сами! Откройте бота / teamBot.js и найдите метод onMessage () . Установите точку останова в любом случае. Затем введите текст.

Узнайте, что происходит, когда вы запускаете приложение локально в отладчике.

Когда вы нажимаете клавишу F5 , набор инструментов Teams:

  1. Регистрирует приложение в Azure Active Directory.
  2. Регистрирует приложение для «боковой загрузки» в Microsoft Teams.
  3. Запускает туннель ngrok, чтобы команды могли взаимодействовать с вашим приложением.
  4. Запускает Microsoft Teams с помощью команды, указывающей Teams на загрузку неопубликованного приложения.
Узнайте, как устранять распространенные проблемы при локальном запуске приложения.

Для успешного запуска приложения в Teams у вас должна быть учетная запись разработки Microsoft 365, которая позволяет загружать неопубликованные приложения. Для получения дополнительной информации об открытии счета см. Предварительные требования.

Важно

В настоящее время приложения для загрузки неопубликованных приложений доступны в правительственном облаке сообщества (GCC), GCC-High и DOD.

Подсказка

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

Разверните приложение в Azure

Развертывание состоит из двух этапов. Сначала создаются необходимые облачные ресурсы (также известные как подготовка), затем код, составляющий ваше приложение, копируется в созданные облачные ресурсы.

  1. Откройте код Visual Studio.

  2. Выберите Teams Toolkit на боковой панели, щелкнув значок Teams.

  3. Выберите Provision in the Cloud .

  4. При необходимости выберите подписку для использования ресурсов Azure.

    Примечание

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

  5. Диалоговое окно предупреждает о том, что при запуске ресурсов в Azure могут возникнуть расходы. Нажмите Provision .

    В процессе подготовки создаются ресурсы в облаке Azure.На это нужно время. Вы можете следить за прогрессом, наблюдая за диалогами в правом нижнем углу. Через несколько минут вы увидите следующее уведомление:

  6. После завершения подготовки выберите Развернуть в облаке . Как и в случае с подготовкой, этот процесс занимает некоторое время. Вы можете следить за процессом, наблюдая за диалогами в правом нижнем углу. Через несколько минут вы увидите уведомление о завершении.

В окне вашего терминала:

  1. Запустите teamfx provision .

      резерв teamfx
      

    Вам может быть предложено войти в свою подписку Azure. При необходимости вам будет предложено выбрать подписку Azure для использования для ресурсов Azure.

    Примечание

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

  2. Запустите teamfx deploy .

      teamfx развертывание
      

Примечание

В чем разница между подготовкой и развертыванием?

На этапе Provision создаются ресурсы в Azure и M365 для вашего приложения, но без кода (HTML, CSS, JavaScript и т. Д.)) копируется в ресурсы. На этапе Deploy код вашего приложения копируется в ресурсы, созданные на этапе подготовки. Обычно развертывание выполняется несколько раз без предоставления новых ресурсов. Поскольку этап подготовки может занять некоторое время, он отделен от этапа развертывания.

После завершения этапов подготовки и развертывания:

  1. В Visual Studio Code откройте панель отладки ( Ctrl + Shift + D / ⌘⇧-D или View> Run )
  2. Выберите Launch Remote (Edge) из раскрывающегося списка конфигурации запуска.
  3. Нажмите кнопку Play, чтобы запустить приложение — теперь оно работает удаленно из Azure!
Узнайте, что происходит при развертывании приложения в Azure

Перед развертыванием приложение выполнялось локально:

  1. Конечная точка HTTP приложения, в которую Microsoft Teams загружает приложение, выполняется локально.

    Развертывание

    включает в себя подготовку ресурсов в активной подписке Azure и развертывание (загрузку) кода серверной части и внешнего интерфейса для приложения в Azure.Серверная часть использует различные службы Azure, включая службу приложений Azure и службу Azure Bot.

См. Также

Создать бота

Создайте чат с ботом для связи с посетителями вашего сайта. Бот появится в виде виджета чата на страницах вашего сайта, где посетитель сможет начать беседу. Бот может помочь квалифицировать потенциальных клиентов, назначить встречи или создать заявки в службу поддержки, отправив серию вопросов и автоматических ответов. Используйте бота, чтобы собрать исходную информацию о посетителе, прежде чем член вашей команды возьмет на себя разговор.

Обратите внимание: только пользователи с разрешениями Чат-потоки на вкладке CRM могут создавать и редактировать чаты.

Если вы хотите связать посетителя с членом вашей живой команды, как только они начнут разговор через виджет чата, узнайте, как создать поток чата с живым чатом.

Вы также можете создать бота для своей учетной записи Facebook Messenger. Узнайте, как создать поток чата для Facebook Messenger.

Чтобы посмотреть обзор этого процесса, посмотрите видео ниже:

Прежде чем начать

Прежде чем создавать бота, подключите канал чата к почтовому ящику разговоров.Канал чата — это то место, где вы можете настроить доступность вашей команды и внешний вид виджета. Кроме того, если вы добавляете бота на веб-сайт, который не размещен в HubSpot, вам необходимо добавить код отслеживания на внешние страницы, прежде чем создавать бота. Бот не появится, если код отслеживания не установлен.

После того, как ваш канал чата подключен к почтовому ящику и код отслеживания установлен на любых внешних страницах, вы можете создать бота с нуля или с помощью одного из пяти различных шаблонов ботов, созданных HubSpot, а затем настроить действия бота и добавить if / затем разветвляется, чтобы определить ход разговора.

  • В своей учетной записи HubSpot перейдите к Беседы > Чаты .
  • В правом верхнем углу нажмите Создать чат .
  • Выберите Веб-сайт . Если вы хотите добавить поток чата в свою учетную запись Facebook Messenger, узнайте, как создать поток чата для Facebook Messenger.
  • На левой боковой панели в разделе Build a bot выберите шаблон бота:
    • Concierge bot ( Service Hub Professional или Enterprise только) : используйте этот шаблон, чтобы направлять посетителей в нужную команду в зависимости от причины, по которой они начали чат.В зависимости от ответа посетителя он может выполнить поиск в базе знаний, связаться с членом вашей действующей команды или записаться на встречу с вашей командой. Чтобы использовать этот шаблон бота, вам необходим доступ к инструменту базы знаний.
    • Бот для проверки потенциальных клиентов: используйте этот шаблон для сбора информации о посетителе и причине его посещения вашего сайта.
    • Бот для встреч: используйте этот шаблон, чтобы поделиться ссылкой на встречу с посетителем, чтобы он мог зарезервировать время с вами или вашей командой.
    • Бот по заявкам: используйте этот шаблон для сбора информации о запросах посетителей в службу поддержки, а затем создайте тикеты, чтобы отслеживать их проблему в почтовом ящике разговоров. У вас должен быть доступ к редактированию заявок, чтобы использовать этого бота.
    • База знаний и бот поддержки ( Service Hub Professional или Enterprise только) : используйте этот шаблон, чтобы делиться статьями базы знаний с посетителями, а затем дать им возможность обратиться к вашей команде или отправьте заявку, если им все еще нужна помощь.Прежде чем использовать этот шаблон, выберите пользователей и команды, которым нужно направить беседы, если запрос не может быть разрешен с помощью статьи.
    • Offline bot ( Sales Hub или Service Hub Professional и Enterprise только) : используйте этот шаблон для маршрутизации посетителей к доступным членам вашей команды, чтобы они могли сразу начать разговор . Или, если ваша команда недоступна, вы можете получить электронную почту посетителя, чтобы ваша команда могла ответить позже.Перед использованием этого шаблона выберите пользователей и команды, доступность которых будет определять поток работы бота.
    • Начать с нуля: создать собственного бота с нуля, используя различные действия бота.
  • Щелкните Далее .
  • Слева настройте папку «Входящие» и язык:
    • Если в вашей учетной записи настроено несколько ящиков входящих, щелкните раскрывающееся меню Входящие и выберите Входящие , чтобы подключить поток чата.
    • Чтобы изменить язык чата, щелкните раскрывающееся меню Язык .
    • Если вы создаете бота Concierge или бота Meetings , чтобы выбрать, какая ссылка на собрание будет предоставлена ​​посетителю, щелкните раскрывающееся меню «Ссылка Meetings» .
    • Если вы создаете базу знаний + бот поддержки в реальном времени или бот офлайн , чтобы указать, какие пользователи будут получать входящие сообщения, щелкните раскрывающееся меню Выбрать пользователей входящей почты .

1. Сборка — создать приветственное сообщение и добавить действия бота

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

Создать приветственное сообщение

Приветственное сообщение — это первое, что увидит посетитель, когда начнет с вами чат.

  • Чтобы изменить содержимое приветственного сообщения, щелкните шаг Приветственное сообщение в шаблоне бота.
  • На панели Добро пожаловать, сообщение , которая открывается справа, введите сообщение , затем щелкните Сохранить .

Добавить действия бота

Создаете ли вы бота с нуля или используете шаблон, вы можете использовать различные действия бота для сбора информации о посетителе. Вы можете задавать вопросы, устанавливать значение собственности для контакта или компании, делиться статьей из базы знаний или назначать встречу с помощью действий бота.

  • На правой панели выберите действие .Узнайте больше о различных действиях ботов.

  • На правой панели отредактируйте сведения о действии. Параметры, которые можно изменить, зависят от действия. Например, если вы задаете собственный вопрос, вы можете ввести вопрос и установить быстрые ответы, которые посетитель может выбрать в качестве ответов на ваше сообщение.
  • Щелкните Сохранить .

  • Чтобы изменить настройки существующего действия, щелкните действие в редакторе бота и внесите изменения на правой панели.
  • Если вы являетесь пользователем Professional или Enterprise , вы можете настроить поток беседы с ботом с помощью веток if / then. Если / то ветки позволяют вам отправить посетителя на конкретное действие бота в зависимости от его ответа, значения свойства контакта или доступности вашей команды.

Обратите внимание: : Стартовые и бесплатные пользователи не могут добавлять ветки if / then к своим действиям ботов.

  • Если вы являетесь пользователем с правами доступа к учетной записи , вы можете направить беседу с ботом конкретному члену вашей команды.Чтобы направить беседу бота члену вашей группы, щелкните значок «добавить плюс», затем выберите Отправить члену команды на правой панели.

Обратите внимание: пользователю, к которому вы направляетесь, должно быть назначено рабочее место Центр продаж или Центр обслуживания .

  • Чтобы повторно подключить любые действия, которые были отключены при редактировании потока вашего бота, нажмите кнопку Alerts в верхнем левом углу. Вы также можете искать любые отключенные действия, используя панель поиска Перейти к действию в правом верхнем углу.
  • Когда вы закончите редактировать действия бота, вы увидите каждое действие на пути бота в одном окне. Вы можете просматривать и вносить изменения в логику ветвления if / then, редактировать настройки отдельного действия или искать конкретное действие, используя панель поиска Go to action в правом верхнем углу.
  • Чтобы увидеть, как бот будет выглядеть на вашем веб-сайте, в правом верхнем углу нажмите Preview .
  • Чтобы продолжить, нажмите Сохранить внизу, затем щелкните вкладку Target .

В зависимости от вашего варианта использования, после сбора некоторой базовой информации о посетителе, вы можете направить посетителя к члену вашей действующей команды или в почтовый ящик разговоров для члена команды для сортировки, или отправить заявку.

2. Цель — решить, когда должен появиться бот

На вкладке Target вы можете решить, когда бот будет отображаться на страницах вашего веб-сайта. Вы можете отображать бота, когда посетитель находится на определенном URL-адресе страницы, или на основе известной информации о ваших посетителях.Вы также можете комбинировать параметры таргетинга, чтобы создать индивидуальный подход для посетителей вашего сайта. Узнайте больше о различных вариантах таргетинга и правилах таргетинга, которые вы можете использовать в своих чатах.

  • Чтобы показать бота, когда посетитель находится на определенном URL-адресе веб-сайта, в разделе URL-адрес веб-сайта :
    • Щелкните первое раскрывающееся меню и выберите URL-адрес веб-сайта .
    • Щелкните второе раскрывающееся меню и выберите правило таргетинга .
    • Введите критерии правила в текстовое поле.
  • Чтобы показать бота, когда посетитель находится на странице веб-сайта, URL-адрес которой включает определенные параметры запроса:
    • Щелкните первое раскрывающееся меню и выберите параметр запроса .
    • В первом текстовом поле введите имя параметра запроса .
    • Щелкните раскрывающийся список и выберите правило таргетинга .
    • Во втором текстовом поле введите значение параметра запроса .
  • Чтобы добавить еще одно правило, щелкните Добавить правило .
  • Чтобы исключить бота с определенных страниц (например, страницы политики конфиденциальности), щелкните Добавить правило исключения .

Вы также можете настроить таргетинг своего бота на определенные контакты на основе известной информации о них. Чтобы установить критерии на основе информации о посетителях, в разделе Информация для посетителей :

  • Щелкните первое раскрывающееся меню и выберите фильтр .Вы можете использовать фильтры, специально предназначенные для известных контактов или неизвестных посетителей.
  • Щелкните второе раскрывающееся меню и выберите свой c riteria .
  • Чтобы добавить еще одно правило, щелкните Добавить правило .
  • Чтобы исключить всплывающую форму на определенных страницах (например, на странице политики конфиденциальности), щелкните Добавить правило исключения .
  • Чтобы создать другую группу фильтров с дополнительными правилами таргетинга, щелкните Добавить группу фильтров .
  • Чтобы продолжить, нажмите Сохранить внизу, затем щелкните вкладку Display .

3. Дисплей — настройка внешнего вида бота

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

  • По умолчанию название компании, которое вы указали в настройках фирменного стиля своей учетной записи, будет отображаться в качестве заголовка чата.Чтобы изменить заголовок чата, щелкните, чтобы развернуть раздел Выберите аватар чата , затем измените имя в поле Заголовок чата . Чтобы изменить изображение аватара, наведите указатель мыши на аватар и нажмите Изменить фото .
  • В разделе «Поведение отображения чата» можно управлять поведением виджета на экранах настольных компьютеров или мобильных устройств. Щелкните Заголовок чата, чтобы развернуть раздел.
    • На вкладке Desktop выберите переключатель рядом с предпочтительным поведением отображения:
      • Всплывающее окно для открытия приветственного сообщения в качестве приглашения: отображение предварительного просмотра приветственного сообщения над виджетом чата.
      • Показывать только средство запуска чата: отображает только средство запуска чата, поэтому посетители должны щелкнуть, чтобы открыть окно чата.
      • Показать приветственное сообщение, затем открыть чат при срабатывании триггера: отобразить предварительный просмотр приветственного сообщения, а открыть виджет чата при срабатывании триггера или когда посетитель щелкнет виджет, в зависимости от того, что наступит раньше.
    • На вкладке Mobile установите переключатель рядом с предпочтительным режимом отображения:
      • Всплывающее окно для открытия приветственного сообщения в качестве приглашения: отображение предварительного просмотра приветственного сообщения над виджетом чата.
      • Показывать только средство запуска чата: отображает только средство запуска чата, поэтому посетители должны щелкнуть, чтобы открыть окно чата.

Обратите внимание: , чтобы отключить поток чата на мобильных устройствах, вы можете добавить правило исключения в свои настройки таргетинга, чтобы скрыть поток чата, когда кто-то просматривает вашу страницу на мобильном устройстве.

  • Вы также можете решить, когда загружать виджет чата на странице. Щелкните Triggers , чтобы развернуть раздел, затем установите флажок рядом с триггером отображения чата.
    • При выходе: запускает бота, когда мышь посетителя перемещается в верхнюю часть окна браузера.
    • Время на странице в секундах: запускает бота, когда проходит заданное количество времени (в секундах), пока посетитель находится на странице.

Обратите внимание: для более быстрой загрузки страницы HubSpot рекомендует задержку 5 секунд или более. Узнайте больше о времени загрузки страницы вашего сайта.

    • Процент прокручиваемой страницы: запускает виджет живого чата, когда посетитель прокручивает страницу до определенного места.
  • Щелкните Сохранить , затем щелкните вкладку Параметры .

Обратите внимание: после завершения настройки бота вы можете автоматически открывать виджет чата, когда посетитель загружает URL определенной страницы. Добавьте # hs-chat-open в конец URL-адреса страницы. Затем вы можете связать эти URL-адреса в своих сообщениях электронной почты, на целевых страницах и в других маркетинговых кампаниях, чтобы отправлять посетителей прямо в виджет чата.

4. Опции

Настройте дополнительные параметры для своего бота, включая настраиваемые сообщения об ошибках, язык отображения и параметры GDPR.

Общие

  • Чтобы установить задержку между каждым сообщением, отправляемым посетителям, щелкните раскрывающееся меню Задержка ввода между сообщениями и выберите нужный вариант.
  • Чтобы настроить время, которое должно пройти, прежде чем сеанс чата будет сброшен до начала, щелкните раскрывающееся меню Тайм-аут сеанса и выберите параметр. Тайм-аут начинается, когда посетитель перестает отвечать. Если посетитель отправляет другое сообщение после истечения тайм-аута, беседа повторно отправляет приветственное сообщение.

Обратите внимание: , когда посетитель выполняет все действия бота, то есть достигает последнего шага в потоке вашего бота, сеанс чата не сбрасывается по истечении выбранного времени сеанса.

  • Чтобы настроить ответ, который посетители увидят при сбое запроса, введите сообщение об ошибке в поле Общее сообщение об ошибке .

Язык

Чтобы изменить язык отображения бота, щелкните раскрывающееся меню Выберите язык и выберите другой язык.

Наличие

Решите, когда виджет чата должен появиться на вашем сайте, в зависимости от доступности вашей команды, установленной в настройках вашего канала. Щелкните раскрывающееся меню Доступность и выберите вариант:

    • Показывать только тогда, когда участники группы доступны для чата: виджет чата будет отображаться только в рабочее время или когда доступен хотя бы один член команды.
    • Показывать всегда: виджет чата всегда будет отображаться на вашем сайте.

Обратите внимание: , если в вашей учетной записи настроено несколько потоков чата, приоритезация потока чата не проверяет доступность команды при принятии решения, какой поток чата отображать.

Конфиденциальность данных и согласие

  • Чтобы включить текст согласия на использование файлов cookie для виджета живого чата, нажмите, чтобы включить Согласие на сбор файлов cookie чата . Вы не можете настроить текст согласия на использование файлов cookie, который отображается в баннере.
  • Когда вы включаете текст согласия на использование файлов cookie, вы можете выбрать, когда должен отображаться баннер согласия.
    • Чтобы отобразить баннер согласия перед тем, как посетитель начнет чат, установите переключатель Показывать баннер согласия перед тем, как посетитель начнет чат. .
    • Чтобы отображать баннер, когда посетитель начинает покидать страницу, установите переключатель Показывать баннер согласия посетителю при намерении выхода .

  • Чтобы получить согласие посетителей на обработку их данных, щелкните, чтобы включить Согласие на обработку данных .
  • Щелкните раскрывающееся меню Consent type и выберите один из следующих вариантов:
    • Требовать явного согласия: с включенной этой опцией посетителям нужно будет щелкнуть Я согласен , прежде чем они смогут отправить сообщение.
    • Законный интерес: посетителей подразумевают согласие, когда они начинают общаться с вами. Текст согласия на обработку данных по-прежнему будет отображаться, им не нужно нажимать Я согласен , чтобы начать чат.
  • В поле Согласие на процесс текст появится текст HubSpot по умолчанию. Вы можете отредактировать текст, чтобы объяснить, почему вам нужно хранить и обрабатывать личную информацию посетителя. Если вы настроили текст согласия, но затем хотите вернуться к тексту по умолчанию, нажмите Восстановить текст по умолчанию, предоставленный HubSpot .

Обратите внимание: , хотя эти функции находятся в HubSpot, ваша юридическая команда — лучший ресурс, который даст вам совет по соблюдению требований в вашей конкретной ситуации.

Маркетинговые контакты

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

Когда вы закончите редактирование бота, нажмите Сохранить . В правом верхнем углу нажмите Preview , чтобы проверить настройку бота. Когда вы закончите редактирование, нажмите, чтобы включить , переключатель , чтобы добавить его на страницы вашего веб-сайта.

Когда ваш бот находится на страницах вашего веб-сайта, посетители могут начать разговор с ботом. Затем вы можете просматривать входящие сообщения и отвечать на них в папке входящих разговоров или анализировать производительность вашего бота.

Как создать бота и автоматизировать повседневную работу

Большинство заданий связаны с повторяющимися задачами, которые можно автоматизировать, что освобождает часть вашего драгоценного времени. Это делает автоматизацию ключевым навыком, который нужно приобрести.

Небольшая группа квалифицированных инженеров по автоматизации и экспертов в предметной области может автоматизировать многие из самых утомительных задач целых команд.

В этой статье мы исследуем основы автоматизации рабочих процессов с использованием Python — мощного и простого в изучении языка программирования. Мы будем использовать Python, чтобы написать простой и полезный небольшой сценарий автоматизации, который очистит заданную папку и поместит каждый файл в соответствующую папку.

Наша цель не в том, чтобы с самого начала написать идеальный код или создать идеальную архитектуру.
Ничего «нелегального» строить не будем. Вместо этого мы рассмотрим, как создать сценарий, который автоматически очищает данную папку и все ее файлы.

  1. Области автоматизации и с чего начать
    • Простая автоматизация
    • Автоматизация общедоступного API
    • Обратный инжиниринг API
  2. Этические аспекты автоматизации
  3. Создание сценария очистки каталога
  4. Полное руководство по созданию ботов и автоматизации повседневной работы

Области автоматизации и с чего начать

Начнем с определения того, какие виды автоматизации бывают.

Искусство автоматизации применимо к большинству секторов.Во-первых, он помогает с такими задачами, как извлечение адресов электронной почты из группы документов, чтобы вы могли быстро рассылать сообщения электронной почты. Или более сложные подходы, такие как оптимизация рабочих процессов и процессов внутри крупных корпораций.

Конечно, переход от небольших личных сценариев к большой инфраструктуре автоматизации, заменяющей реальных людей, предполагает процесс обучения и совершенствования. Итак, давайте посмотрим, с чего вы можете начать свое путешествие.

Простая автоматизация

Простая автоматизация обеспечивает быструю и понятную точку входа.Это может охватывать небольшие независимые процессы, такие как очистка проекта и реструктуризация файлов внутри каталогов, или части рабочего процесса, такие как автоматическое изменение размера уже сохраненных файлов.

Автоматизация общедоступного API

Автоматизация общедоступного API — это наиболее распространенная форма автоматизации, поскольку в настоящее время мы можем получить доступ к большинству функций с помощью HTTP-запросов к API. Например, если вы хотите автоматизировать полив самодельного умного сада в домашних условиях.

Для этого вы хотите проверить погоду текущего дня, чтобы узнать, нужен ли вам полив или идет дождь.

Обратный инжиниринг API

Автоматизация на основе обратного инжиниринга API чаще встречается в реальных ботах и ​​в разделе «Бот-самозванец» диаграммы в разделе «Этические соображения» ниже.

Путем реверс-инжиниринга API мы понимаем пользовательский поток приложений. Одним из примеров может быть вход в онлайн-браузерную игру.

Понимая процесс входа в систему и аутентификации, мы можем продублировать это поведение с помощью нашего собственного скрипта. Затем мы можем создать собственный интерфейс для работы с приложением, даже если они сами его не предоставляют.

Какой бы подход вы ни выбрали, всегда учитывайте, законен он или нет.

Ты ведь не хочешь попасть в беду? ?

Этические соображения

Однажды со мной связался какой-то парень с GitHub и сказал мне следующее:

«Лайки и вовлеченность — это цифровая валюта, и вы их обесцениваете».

Это запомнилось мне и заставило меня усомниться в инструменте, который я создал именно для этой цели.

Тот факт, что эти взаимодействия и взаимодействие можно автоматизировать и все больше и больше «подделывать», приводит к искаженной и неработающей системе социальных сетей.

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

Мой друг придумал следующую ассоциацию с «Девятью кругами ада» Данте, где с каждым шагом к тому, чтобы стать влиятельным лицом в обществе, вы все меньше и меньше понимаете, насколько на самом деле сломана вся эта система.

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

Уровень 1: Лимбо — Если у вас нет бота
Уровень 2: Флирт — Когда вы вручную ставите лайки и подписываетесь на как можно больше людей, чтобы заставить их подписаться на вас в ответ / лайкнуть ваши сообщения
Уровень 3: Заговор — когда вы присоединяетесь к группе Telegram, чтобы поставить лайк и прокомментировать 10 фотографий, чтобы следующие 10 человек лайкнули и прокомментировали вашу фотографию
Уровень 4: Неверность — Когда вы используете недорогой виртуальный помощник, чтобы поставить лайк и подписывайтесь от своего имени
Уровень 5: Похоть — Когда вы используете бота, чтобы ставить лайки и не получаете взамен лайков (но вы не платите за это — например, расширение Chrome)
Уровень 6: Распущенность — Когда вы используете бота, чтобы поставить 50+ лайков, чтобы получить 50+ лайков, но вы не платите за это — например, расширение Chrome
Уровень 7: Жадность или Чрезвычайная жадность — Когда вы используете бота, чтобы лайкать / подписываться / комментировать от 200 до 700 фотографий, игнорируя шанс быть забаненным 9 0012 Уровень 8: Проституция — Когда вы платите неизвестным сторонним службам, чтобы они автоматически делали лайки / подписчики для вас, но они используют вашу учетную запись, чтобы лайкать / подписываться в ответ
Уровень 9: Мошенничество / ересь — Когда вы покупаете подписчиков и лайков, и попытайтесь продать себя брендам как влиятельного лица

Уровень ботов в социальных сетях настолько распространен, что , если вы не будете использовать бот, вы застрянете на уровне 1, Limbo , без роста числа подписчиков и низкая вовлеченность по сравнению с вашими сверстниками.

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

Помните об этом и никогда не забывайте, какое значение имеет весь этот инструмент для социальных сетей.
Источник: SignalSciences.com

Мы не хотим иметь дело с этическими последствиями и по-прежнему работаем над проектом автоматизации здесь.Вот почему мы создадим простой скрипт очистки каталогов, который поможет вам организовать ваши беспорядочные папки.

Создание сценария очистки каталога

Теперь мы хотим взглянуть на довольно простой сценарий. Он автоматически очищает данный каталог, перемещая эти файлы в соответствующие папки в зависимости от расширения файла.

Итак, все, что мы хотим сделать, это следующее:

Настройка анализатора аргументов

Поскольку мы работаем с такими функциями операционной системы, как перемещение файлов, нам нужно импортировать библиотеку os .В дополнение к этому мы хотим дать пользователю некоторый контроль над очищаемой папкой. Для этого мы воспользуемся библиотекой argparse .

  импорт ОС
import argparse  

После импорта двух библиотек давайте сначала настроим парсер аргументов. Обязательно дайте описание и текст справки к каждому добавленному аргументу, чтобы оказать ценную помощь пользователю, когда он набирает --help .

Наш аргумент будет называться --path . Двойные дефисы перед именем говорят библиотеке, что это необязательный аргумент.По умолчанию мы хотим использовать текущий каталог, поэтому установите значение по умолчанию "." .

  parser = argparse.ArgumentParser (
    description = "Очистите каталог и поместите файлы в соответствующие папки."
)

parser.add_argument (
    "--дорожка",
    type = str,
    по умолчанию = ".",
    help = "Путь к очищаемому каталогу",
)

# разбираем аргументы, данные пользователем, и извлекаем путь
args = parser.parse_args ()
путь = args.path

print (f "Очистка каталога {path}")  

На этом уже заканчивается раздел разбора аргументов — он довольно простой и читаемый, не так ли?

Запустим наш скрипт и проверим на наличие ошибок.

  python directory_clean.py --path ./test

=> Очистка каталога ./test  

После выполнения мы видим, что имя каталога выводится на консоль, отлично.
Давайте теперь воспользуемся библиотекой os для получения файлов по заданному пути.

Получение списка файлов из папки

Используя метод os.listdir (path) и указав ему действительный путь, мы получаем список всех файлов и папок внутри этого каталога.

После перечисления всех элементов в папке мы хотим различать файлы и папки, поскольку мы не хотим очищать папки, а только файлы.

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

  # получить все файлы из заданного каталога
dir_content = os.listdir (путь)

# создать относительный путь от пути к файлу и имени документа
path_dir_content = [os.path.join (path, doc) для документа в dir_content]

# фильтруем содержимое нашего каталога в список документов и папок
docs = [документ для документа в path_dir_content, если os.path.isfile (doc)]
папки = [папка для папки в path_dir_content, если os.path.isdir (папка)]

# счетчик для отслеживания количества перемещенных файлов
# и список уже созданных папок, чтобы избежать многократного создания
перемещено = 0
created_folders = []

print (f "Очистка {len (docs)} элементов {len (dir_content)}.")  

Как всегда, давайте позаботимся о том, чтобы наши пользователи получили обратную связь.Поэтому добавьте оператор печати, который дает пользователю представление о том, сколько файлов будет перемещено.

  python directory_clean.py --path ./test

=> Очистка каталога ./test
=> Очистка 60 из 60 элементов.  

После повторного выполнения скрипта python теперь мы видим, что созданная мной папка / test содержит 60 файлов, которые будут перемещены.

Создание папки для каждого расширения файла

Следующим и более важным шагом теперь является создание папки для каждого расширения файла.Мы хотим сделать это, просмотрев все наши отфильтрованные файлы, и если у них есть расширение, для которого еще нет папки, создайте его.

Библиотека os помогает нам с более приятными функциями, такими как разделение типа файла и пути для данного документа, извлечение самого пути и имени документа.

  # просмотреть все файлы и переместить их в соответствующие папки
для документа в документах:
    # отделить имя от расширения файла
    full_doc_path, filetype = os.path.splitext (документ)
    doc_path = os.path.dirname (полный_doc_path)
    doc_name = os.path.basename (полный_doc_path)

печать (тип файла)
    печать (full_doc_path)
    печать (doc_path)
    печать (doc_name)
    
    break  

Оператор break в конце приведенного выше кода гарантирует, что наш терминал не будет рассылаться спамом, если наш каталог содержит десятки файлов.

После того, как мы это настроили, давайте выполним наш сценарий, чтобы увидеть результат, подобный этому:

  python directory_clean.py --path ./test

=> ...
=> .pdf
=> ./test/test17
=> ./test
=> test17  

Теперь мы видим, что приведенная выше реализация разделяет тип файла, а затем извлекает части из полного пути.

Поскольку теперь у нас есть тип файла, мы можем проверить, существует ли уже папка с именем этого типа.

Прежде чем мы это сделаем, мы хотим пропустить несколько файлов. Если мы используем текущий каталог "." в качестве пути, нам нужно избегать перемещения самого скрипта python.Об этом позаботится простое условие if.

Кроме того, мы не хотим перемещать скрытые файлы, поэтому давайте также включим все файлы, которые начинаются с точки. Файл .DS_Store в macOS является примером скрытого файла.

  # пропустить этот файл, когда он находится в каталоге
    если doc_name == "directory_clean" или doc_name.startswith ('.'):
        Продолжить

    # получить имя подпапки и создать папку, если она не существует
    subfolder_path = os.path.join (путь, тип файла [1:].ниже())

    если subfolder_path не в папках:
    # создать папку  

После того, как мы позаботились о скрипте python и скрытых файлах, мы можем перейти к созданию папок в системе.

В дополнение к нашей проверке, если папка уже была там, когда мы читаем содержимое каталога, вначале нам нужен способ отслеживать папки, которые мы уже создали. По этой причине мы объявили список created_folders = [] . Он будет служить памятью для отслеживания названий папок.

Для создания новой папки библиотека os предоставляет метод под названием os.mkdir (folder_path) , который берет путь и создает там папку с заданным именем.

Этот метод может вызвать исключение, сообщающее нам, что папка уже существует. Так что давайте также обязательно поймем эту ошибку.

  если subfolder_path не в папках и subfolder_path не в created_folders:
        пытаться:
            os.mkdir (путь к подпапке)
            created_folders.добавить (путь к подпапке)
            print (f "Папка {subfolder_path} создана.")
        кроме FileExistsError как err:
            print (f "Папка уже существует в {subfolder_path} ... {err}")  

После настройки создания папки давайте повторно выполним наш скрипт.

  python directory_clean.py --path ./test

=> ...
=> Создана папка ./test/pdf.  

При первом запуске мы можем увидеть список журналов, сообщающих нам, что папки с заданными типами расширений файлов были созданы.

Перемещение каждого файла в правую подпапку

Последний шаг теперь — фактически переместить файлы в их новые родительские папки.

При работе с операциями операционной системы важно понимать, что иногда операции нельзя отменить. Это, например, случай с удалением. Поэтому имеет смысл сначала выйти из системы только так, как наш скрипт достиг бы, если бы мы его выполнили.

Вот почему здесь был прокомментирован метод os.rename (...) .

  # получить новый путь к папке и переместить файл
    new_doc_path = os.path.join (subfolder_path, doc_name) + filetype
    # os.rename (doc, new_doc_path)
    перемещен + = 1
    
    print (f "Файл {doc} перемещен в {new_doc_path}")  

После выполнения нашего сценария и проверки правильности ведения журнала мы теперь можем удалить хэш комментария перед нашим методом os.rename () и дать ему окончательный результат. идти.

  # получить новый путь к папке и переместить файл
    new_doc_path = os.path.join (путь к подпапке, имя_документа) + тип файла
    os.rename (doc, new_doc_path)
    перемещен + = 1

    print (f "Файл {doc} перемещен в {new_doc_path}")

print (f "Переименовано {перемещено} файлов {len (docs)}.")  
  python directory_clean.py --path ./test

=> ...
=> Файл ./test/test17.pdf перемещен в ./test/pdf/test17.pdf
=> ...
=> Переименовано 60 из 60 файлов.  

Это последнее выполнение теперь переместит все файлы в соответствующие папки, и наш каталог будет хорошо очищен без необходимости ручных действий.

На следующем шаге теперь мы могли бы использовать созданный выше сценарий и, например, запланировать его выполнение каждый понедельник, чтобы очистить нашу папку «Загрузки» и получить дополнительную структуру.

Это именно то, что мы создаем в рамках нашего курса Udemy по созданию ботов и автоматизации рабочих процессов.

Мы с Феликсом создали онлайн-видеокурс , чтобы научить вас создавать своих собственных ботов на основе того, что мы узнали о создании InstaPy и его Travian-Bot .Фактически, его даже заставили сбить, так как он был слишком эффективен.

Присоединяйтесь и начинайте учиться.

Промо-видео для курса Udemy

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь обращаться к нам в Twitter или непосредственно в разделе обсуждения курса?

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

Добавьте следующую строку после создания переменной клиента :

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 (обнадеживающее сообщение):
  если "поощрения" в 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 , бот теперь отправляет случайное сообщение из options .

Следующий новый раздел кода используется для добавления нового сообщения, отправленного пользователем, в базу данных. Если сообщение 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». Эта команда принимает аргумент «истина» или «ложь». Вот пример использования: «$ ответ истина».

Код сначала извлекает аргумент со значением = 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 , чтобы импортировать сервер.

  from 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.js

После того, как вы добавите своего бота на сервер, следующим шагом будет начать кодирование и разместить его в сети! Начнем с создания файла конфигурации для токена клиента и основного файла для приложения-бота.

Создание файлов конфигурации

Как объяснено в разделе «Что такое токен?» , ваш токен - это, по сути, пароль вашего бота, и вы должны защищать его как можно лучше.Это можно сделать с помощью файла config.json или с помощью переменных среды.

Откройте свое приложение на портале разработчиков Discord, откройте в новом окне и перейдите на страницу «Бот», чтобы скопировать свой токен.

Использование

config.json

Хранение данных в файле config.json - распространенный способ сохранить конфиденциальные значения в безопасности. Создайте файл config.json в каталоге своего проекта и вставьте свой токен. Вы можете получить доступ к своему токену внутри других файлов, используя require () .

  {
"токен": "ваш-токен-идет сюда"
}
  

1
2
3

  const {token} = require ('./ config.json');

console.log (токен);
  

1
2
3

Использование переменных среды

Переменные среды - это специальные значения для вашей среды (например, сеанс терминала, контейнер докеров или файл переменных среды). Вы можете передать эти значения в область вашего кода, чтобы вы могли их использовать.

Один из способов передать переменные среды - через интерфейс командной строки.При запуске приложения вместо узла index.js используйте TOKEN = your-token-go-here node index.js . Вы можете повторить этот шаблон, чтобы отобразить и другие значения.

Вы можете получить доступ к установленным значениям в вашем коде через глобальную переменную p rocess.env , доступную в любом файле. Обратите внимание, что значения, передаваемые таким образом, всегда будут строками, и вам может потребоваться преобразовать их в число, если вы используете их для вычислений.

  A = 123 B = 456 DISCORD_TOKEN = индекс узла вашего токена.js
  
  console.log (process.env.A);
console.log (process.env.B);
console.log (process.env.DISCORD_TOKEN);
  

1
2
3

Использование dotenv

Другой распространенный подход - сохранение этих значений в файле .env . Это избавляет вас от постоянного копирования вашего токена в командную строку. Каждая строка в файле .env должна содержать пару KEY = значение .

Для этого можно использовать пакет dotenv открыть в новом окне.После установки потребуйте и используйте пакет для загрузки файла .env и присоединения переменных к p rocess.env :

  A = 123
В = 456
DISCORD_TOKEN = ваш токен идет сюда
  

1
2
3

  const dotenv = require ('dotenv');

dotenv.config ();

console.log (process.env.A);
console.log (process.env.B);
console.log (process.env.DISCORD_TOKEN);
  

1
2
3
4
5
6
7

Онлайн-редакторы (Glitch, Heroku, Replit и т. Д.

Хотя мы, как правило, не рекомендуем использовать онлайн-редакторы в качестве хостинговых решений, а скорее инвестируем в правильный виртуальный частный сервер, эти услуги также предлагают способы сохранить ваши учетные данные в безопасности! Дополнительную информацию о том, как обеспечить безопасность конфиденциальных значений, см. В документации по соответствующей службе и в справочных статьях:

Git и

.gitignore

Git - фантастический инструмент для отслеживания изменений кода и позволяет загружать информацию о ходе выполнения в службы. например GitHubopen в новом окне, GitLabopen в новом окне или Bitbucketopen в новом окне.Хотя делиться кодом с другими разработчиками очень полезно, это также связано с риском загрузки файлов конфигурации с конфиденциальными значениями!

Вы можете указать файлы, которые Git должен игнорировать в своих системах управления версиями, с помощью файла .gitignore . Создайте файл .gitignore в каталоге вашего проекта и добавьте имена файлов и папок, которые вы хотите игнорировать:

  node_modules
.env
config.json
  

1
2
3

СОВЕТ

Помимо обеспечения безопасности учетных данных, сюда следует включить node_modules .Поскольку этот каталог можно восстановить на основе записей в файлах package.json и package-lock.json , запустив команду npm install , его не нужно включать в Git.

Вы можете указать довольно сложные шаблоны в файлах .gitignore , для получения дополнительной информации ознакомьтесь с документацией Git по .gitignore открыть в новом окне!

Создание главного файла

Откройте редактор кода и создайте новый файл. Мы предлагаем вам сохранить файл как индекс .js , но вы можете называть его как хотите.

Вот базовый код для начала:

 
const {Клиент, Намерения} = require ('discord.js');
const {токен} = требуется ('./ config.json');


const client = новый клиент ({intents: [Intents.FLAGS.GUILDS]});


client.once ('готово', () => {
console.log («Готово!»);
});


client.login (токен);
  

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Вот как вы создаете экземпляр клиента для своего бота Discord и входите в Discord.Параметр Intents.FLAGS.GUILDS intents необходим для правильной работы вашего клиента.

Откройте свой терминал и запустите node index.js , чтобы запустить процесс. Если вы видите "Готово!" через несколько секунд все готово!

СОВЕТ

Вы можете открыть файл package.json и отредактировать поле "main": "index.js" , чтобы оно указывало на ваш основной файл. Затем вы можете запустить узел . в вашем терминале, чтобы начать процесс!

После закрытия процесса с помощью Ctrl + C вы можете нажать стрелку вверх на клавиатуре, чтобы вызвать последние выполненные вами команды.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *