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

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

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

  • https://github.com/Hixon10/telegram-calendar-notifications — исходники бота
  • https://telegram.me/calendar_notifications_bot — ссылка на bot

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

  1. Пользователь добавляет в бота ссылка на ics файлы, про которые юзер хочет получать уведомления. Тут же нужно указать за сколько минут до события бот должен присылать нотификацию.
  2. Бот должен переодически переиндексировать все календари. Это необходимо, чтобы получать новые события, а также менять информацию о тех евентах, которые изменились (например, поменялось время)
  3. Бот должен переодически просыпаться и брать те евенты, по которым пришло время для уведомления. В общем, типичная очередь отложенных задач, ничего особенного.

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

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

  • Kotlin — как язык
  • Micronaut — как базовый фреймворк (я из него использую DI, Http client и сборку докер образа)
  • GraalVM (Substrate VM) — как рантайм. То есть, я AOT компилирую бота в бинарник, который уже никак не зависит от JVM.

Комментарии по выбронному стеку.

  • Котлин — норм, но и Java 15 — тоже норм, и не факт, что есть смысл в Котлине на бэке.
  • Micronaut — супер впечатления. Читать исходники очень приятно, так как код более прямолинейный, чем в Спринге. (создателям пришлось так писать код, чтобы была поддержка Graalvm native image
  • Нативные образы Грааля — очень сыро. Все проблемы, которые возникли в ходе реализации бота, были только с этим. По двум из проблем (а их было больше) завёл баги — https://github.com/oracle/graal/issues/2942 и https://github.com/micronaut-projects/micronaut-gcp/issues/287
  • Из примечательного — бот может работать с лимитом в 100 MB на контейнер. Конечно, стандартной джаве это вряд ли удастся.

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

Другие записи из этой рубрики:

  • Первый опыт разработки кроссплатформенного плагина для браузеров
  • Как был запущен данный docker контейнер?
  • Пробуем Micronaut вместе с GraalVM Native Image
  • Статья на Хабре про R2DBC и PostgreSQL
  • Macbook pro 2019 13 inch для программирования

Обо мне

Всем привет! Меня зовут Денис. Я увлекаюсь веб-разработкой, а также пытаюсь стать профессионалом в стеке технологий Linux, Apache, MySQL, PHP.

Как создать напоминание в телеграм

Прямой эфир

  • Мои любимые VIM жесты движений (motions)
  • Как улучшить своё Динамическое программирование?
  • Как тренироваться в Rust программирование?
  • Rust in Action — Рецензия
  • С новым, 2023 годом

Источник: hixon.ru

Топ-7 сервисов для создания чат-бота в Телеграме самостоятельно и бесплатно

Создать чат-бота в Telegram можно без специальных знаний и умений. Есть 7 сервисов, с помощью которых можно сделать всё бесплатно и быстро.

Топ-7 сервисов для создания чат-бота в Телеграме самостоятельно и бесплатно

Что такое чат-боты

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

Для каких задач создают чат-ботов

  • Прочие мессенджеры и социальные сети.
  • Мобильные приложения.
  • Сайты (онлайн-чат).
  • Голосовые ассистенты.
  • Отдельные веб-страницы и так далее.

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

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

Еще по теме:  Интересные статусы в Телеграмме

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

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

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

1. Botman — бесплатный сервис

Теперь не обязательно знать языки программирования и обладать специальными навыками. С Botman.pro вы сделаете своего первого чат-бота за 5 минут и совершенно бесплатно. При этом для тех, кто не хочет разбираться сам, в сервисе есть очень хорошо продуманная поддержка. Можно посмотреть обучающие видео, написать персональному менеджеру, оставить заявку на настройку чат-бота под ключ — опытный специалист настроит всё за вас.

Перед созданием бота вам потребуется Токен. Вот как его получить.

2) Жмём команду /newbot или прописываем её в чате.

3) Выбираем имя для вашего бота. Я делаю такое: sozdanie_bota_TG.

4) Следующим шагом необходимо придумать ник. Он должен заканчиваться на bot, поэтому я пишу такой: sozdanie_bota_TG_bot.

5) Готово, вы получили Токен. Сохраните его, он нам потребуется для создания чат-бота.

Следуйте инструкции по созданию Бота.

Переходим на официальный сайт Botman.pro и проходим простейшую регистрацию.

Жмём в боковом меню — Чат-Боты — Создать бота.

Добавляем новый канал (маленькая кнопочка под полем для выбора канала).

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

Далее снова жмём создать бота и видим, что у нас подтянулся канал. Внизу вводим название бота в сервисе Botman, у меня это «Обучение созданию чат ботов».

Теперь чат-бот добавлен в сервис и с ним можно начать работать. Жмите на него.

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

Можно добавлять не только текст, но и сопроводительное видео, файл, голосовое сообщение, опросы и картинки.

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

Для каждой кнопки делаем свои сценарии.

Далее тестируем или сразу публикуем бота.

Выглядит это всё в сервисе примерно так.

Проверка работоспособности чат-бота

Переходим на главную страницу, дальше жмём на бота, которого мы создали.

Запускаем чат-бота в Телеграм командой /start. Далее видим, как приходит первое текстовое сообщение из нашего конструктора.

Теперь можно тестировать функционал кнопок, которые были созданы при помощи конструктора в Botman.pro.

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

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

2. Senler

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

Из основных плюсов площадки следует выделить:

  • эффективный прогрев аудитории;
  • сбор и сегментация ЦА;
  • автоматизация процессов общения с аудиторией;
  • автоматическая сегментация на основе поведенческих реакций.

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

3. SaleBot

С помощью SaleBot можно без особых сложностей создать бота в ТГ, используя интуитивно-понятный и простой интерфейс. Правда, для разработки потребуется иметь базовые навыки работы с Telegram Bot API и знать о нюансах своего API, то есть уметь кодить. Но даже без кодинга можно запросто создать бота в Телеграмме самому, используя автоматизированные инструменты.

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

  • множество интеграций с разными сервисами;
  • удобный интерфейс;
  • доступные тарифы;
  • есть пробный период.
  • нужны навыки кодирования.

4. BotHelp

Если вам нужно создать бота для Телеграм с нуля, конструктор BotHelp поможет. Сервис предназначается для автоматизации заполнения форм, приёма заказов и отправки рассылок, а также общения с целевой аудиторией. Здесь можно создавать вариативные цепочки сообщений, делающие ответы максимально персонализированными, организовать сбор базы e-mail и телефонов прямо в мессенджере, генерировать мини-лендинги, составлять аналитические ответы для повышения эффективности рекламы, а также настраивать авторассылку сообщений.

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

  • возможность создания автоворонок;
  • поддержка интеграции нескольких аккаунтов или сайтов;
  • пробный период на 2 недели с доступом к полному функционалу.
  • автоматическое продление подписки.
  • постоянно что-то не работает или ломается.
Еще по теме:  В Телеграмме пишут срок ссылки истек

5. ManyChat

Вы также можете написать бота в Телеграм через англоязычный сервис ManyChat (можно переключиться на русскоязычную версию). Платформа разработана для реализации различных маркетинговых стратегий и повышения объёмов продаж. Это простой, но очень эффективный и мощный портал, автоматизирующий бизнес-процессы и общение с клиентами. Ключевым преимуществом конструктора является интуитивно-понятный интерфейс, поэтому вы сможете создать чат-бота в Телеграм без владения навыками программирования, знания ключей токена и прочих сложных вещей.

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

6. Multy

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

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

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

7. th.moderator

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

Как зарабатывать на разработке ботов в Телеграм

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

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

При этом компании готовы оплачивать не только разработку, но и техническое сопровождение ботов, позволяя получать дополнительные 5000–10 000 за обслуживание.

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

Источник: www.cossa.ru

Телеграм бот на Node JS. Как создать тайм-трекер с помощью API Telegram Bot и веб хуков.

Телеграм бот на Node JS. Как создать тайм-трекер с помощью API Telegram Bot и веб хуков.

В данной статье вы узнаете, как вести учет рабочего времени с помощью Telegram Bot API и механизма веб хуков (англ. Webhooks). Мы разберем этапы создания, настройки и развертывания тайм-трекера. Но сначала хотелось бы рассказать, как эта идея пришла мне в голову. Если же вас интересует только техническая часть повествования, переходите сразу к следующему разделу.

Введение

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

Идея отличная: телефон практически всегда под рукой, так что ничего не стоит просто написать слова “начало”/“окончание” или что угодно. Я вдохновился этой идеей и задумался о способах ее реализации. Часами я искал хороший инструмент для учета рабочего времени, руководствуясь следующими обязательными условиями: 1) он должен легко вводить сообщение “Задание выполняется” или “Задание готово”; 2) он работает на всех имеющихся устройствах.

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

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

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

Прежде всего, я начал искать существующие библиотеки и примеры использования веб хуков Telegram. Я нашел на GitHub один модуль — node-telegram-bot-api. Решил им воспользоваться по двум причинам: из-за его простоты и моей любви к Node. Поскольку он предоставлял библиотеку, необходимо было создать приложение Node. Отдавая предпочтения TypeScript, я создал проект соответствующим образом.

Есть один классный инструмент под названием typescript-starter , который запускается как исполняемый файл npm через npx typescript-starter . Он задает вопросы, например уточняет намерение создать библиотеку или приложение, последнее как раз представляет наш случай. Создав проект и сохранив значения по умолчанию в диалоговом окне установки typescript-starter , я задал конфигурацию запуска для отладки в VS Code. В результате ряда экспериментов она приняла следующий вид:

«type»: «node»,
«request»: «launch»,
«name»: «Launch Program»,
«program»: «$/build/main/index.js»,
«console»: «integratedTerminal»,
«preLaunchTask»: «tsc: build — tsconfig.json»,
«outFiles»: [
«$/out/**/*.js»
]>

Основная часть кода находится в src/main/index.ts . Чтобы настроить веб хуки для сообщений, отправляемых в Telegram-бот, node-telegram-bot-api предлагает отличный шаблон, который я немного адаптировал. Сначала установил нужные пакеты:

Код Telegram-бота

Далее я изменил импорты из кода примера с require на import с целью обеспечения безопасности типов для импортируемого кода и добавил свой токен. Код выглядел следующим образом и был готов к тестированию:

Еще по теме:  Куда скачиваются гифки из Телеграмма

С помощью хуков on и onText вызываются функции для каждого входящего сообщения ( on ) или сообщений, совпадающих с определенным регулярным выражением ( onText ). В этих функциях код отвечает, отправляя сообщения обратно в соответствующий чат. На мой взгляд, библиотека предоставляет отличный уровень абстракции. Итак, все готово к тестированию.

Сначала я создал бота: перешел в Telegram (или Web Telegram), открыл чат в BotFather (по ссылке t.me в документации), написал /newbot , дал ему имя и имя пользователя в соответствии с требованиями. BotFather предоставил токен, который присваивается const token в начале кода. Затем запустил бота Telegram API посредством ранее добавленной команды запуска в VS Code.

Далее открыл новый чат в боте. Для этого прошел по ссылке, полученной из BotFather, и нажал на Start в правом верхнем углу. После этого я смог протестировать веб хуки, отправив боту /echo Hello . Он ответил Hello (через функцию onText ) и прислал другое текстовое сообщение Received your message , т.е. сообщение получено.

Отлично! Теперь сделаем код более функциональным.

Добавление обработчиков и кода для учета рабочего времени

Как ранее упоминалось, цель проекта — сохранить результаты учета времени в формате CSV для последующего редактирования в Excel. В Node работать с файлами CSV очень просто. Вместо того, чтобы воспользоваться одной из многочисленных библиотек, предназначенных для решения этой задачи, я решил ради интереса написать все с нуля. Для своего прототипа выбрал следующие команды бота:

  • /work $message -> начать работу над задачей $message ;
  • /done -> завершить последнюю начатую задачу;
  • /state -> показать состояние последней задачи (начато или завершено);
  • /print -> записать весь CSV в чат.

Для чтения и записи CSV были реализованы 2 функции:

const getEntries = async () => if (!fs.existsSync(csvFilePath)) fs.writeFileSync(csvFilePath, «»);
>

const val = fs.readFileSync(csvFilePath).toString();
const entries = [];
if (val == «») return entries;
>
val.split(«n»).forEach((row, index) => if (row === «» || index == 0) return;
>
const [work, startDate, endDate, duration] = row.split(delimiter);
const entry = work,
startDate,
endDate,
duration
>;
entries.push(entry);
>);
return entries;
>

const writeFile = (entries) => let str = «work;startDate;endDate;duration;n»;
entries.forEach(e => str += Object.keys(e).map(k => e[k]).join(delimiter);
str += ‘n’;
>);
fs.unlinkSync(csvFilePath);
fs.writeFileSync(csvFilePath, str);
>;

Функция getEntries возвращает содержимое CSV в виде объектов JS, а функция writeFile сохраняет объекты JS в файл CSV. Таким образом, нет никакой реальной необходимости использовать библиотеку. С помощью этих 2-х функций были реализованы 4 ранее упомянутых обработчика:

bot.onText(//work (.+)/, async (msg, match) =>
const chatId = msg.chat.id;
const work = match[1]; // перехваченный «whatever»
const startDate = new Date();
const entries = await getEntries();
entries.push( work,
startDate: startDate.toJSON(),
endDate: null,
duration: null,
>);
writeFile(entries);

bot.sendMessage(chatId, `You started $ at $. Go ahead!`);
>);

bot.onText(//done(.*)/, async (msg, _match) => const chatId = msg.chat.id;
const endDate = new Date();

const entries = await getEntries();
if (entries.length < 1) bot.sendMessage(chatId, `You didn’t start any work that can be ended. Uff.`);
return;
>
const targetEntry = entries[entries.length — 1];
targetEntry.endDate = endDate.toJSON();
const startDate = new Date(targetEntry.startDate);
const diff = format(endDate.valueOf() — startDate.valueOf(), < leading: true, >);
targetEntry.duration = diff;

writeFile(entries);

bot.sendMessage(chatId, `You finished $ at $. It took $. Congrats!`);
>);

bot.onText(//state(.*)/, async (msg, _match) => const chatId = msg.chat.id;
const endDate = new Date();

const entries = await getEntries();
if (entries.length == 0) bot.sendMessage(chatId, `You don’t have any work saved yet. Please start by using /work $myTodo`);
return;
>
const targetEntry = entries[entries.length — 1];
if (!targetEntry.endDate) bot.sendMessage(chatId, `Your current task is $ from $.`);
return;
>
bot.sendMessage(chatId, `You recently finished $ at $. It took $.!`);
>);

bot.onText(//print(.*)/, async (msg, _match) => const chatId = msg.chat.id;

const entries = await getEntries();
let str = «work;startDate;endDate;duration;n»;
entries.forEach(e => str += Object.keys(e).map(k => e[k]).join(delimiter);
str += ‘n’;
>);
bot.sendMessage(chatId, str);

>);

Команда work добавляет запись с начальной датой startDate и соответствующий текст, внесенный в /work . Команда /done проверяет, есть ли в файле хотя бы одна запись, и устанавливает дату окончания endDate и продолжительность. Аналогично функционируют обработчики /state и /print , выполняя вышеописанные действия. Вот и все!

Кода не так много, но зато какое классное чувство испытываешь при работе с этим инструментом! Я запустил его в режиме отладки и убедился, что все функционирует как надо. Теперь переходим к последнему этапу: развертывание.

Развертывание инструмента для учета времени в Telegram

Я добавил Dockerfile с многоэтапной сборкой для запуска на любом хосте. Также для развертывания можно передать токен как переменную env или что-то подобное. Самый простой способ запустить его на сервере (с настройкой Docker) — отправить свой репозиторий на сервер, а затем создать и запустить контейнер (после изменения токена на токен бота):

  • docker build -t telegram-timetracker:latest ;
  • docker run -ti —rm telegram-timetracker:latest ;

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

Источник: uproger.com

Рейтинг
( Пока оценок нет )
Загрузка ...