Бот Телеграм который составит расписание

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

ТЗ

Есть группа, есть родители, есть их дети. Родителям в группу должно приходить напоминание, что, например, завтра произойдет Мероприятие «Х» с 14.00 до 15.00. Рассылка должна приходить ежедневно, в случае наличия таковых мероприятий на завтра. Мероприятия приходят от учителя.

Предварительные шаги

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

Это удобно по ряду причин:

  • Унификация и систематизация данных
  • Избегание дополнительного ручного труда при занесении или переносе данных — доступ к календарю есть с любого телефона.

Гугл календарь

Был создан дополнительный гугл календарь, к нему дан доступ жене — пока вносить будет она.

Телеграм бот для твоей шараги. Часть 4 (система расписания)

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

google calendar id

Гугл скрипт взаимодействия бота с календарем — календарная часть

function searchDay() < const searchDay = new Date(); searchDay.setDate(searchDay.getDate() + 2); return searchDay; >function getCalendarEvents() < const today = new Date() const schoolCalendar = CalendarApp.getCalendarById(CAL_ID); const eventsForDay = schoolCalendar.getEvents(today, searchDay()); const eventsArr = []; const optionLocaleObject = < timeStyle: «short» >if (eventsForDay.length !== 0) < for (let i = 0; i < eventsForDay.length; i++) < let formatedDay = eventsForDay[i].getStartTime().toLocaleDateString(‘ru-RU’) let startTime = eventsForDay[i].getStartTime().toLocaleTimeString(‘ru-RU’, optionLocaleObject) let endTime = eventsForDay[i].getEndTime().toLocaleTimeString(‘ru-RU’, optionLocaleObject) let eventDescription = eventsForDay[i].getDescription() let eventTitle = eventsForDay[i].getTitle() eventsArr.push([eventTitle, formatedDay, startTime, endTime, eventDescription]) >> return eventsArr >

searchDay() возвращает дату — послезавтра.

getCalendarEvents() собирает в массив все данные из календаря за сегодня и завтра через schoolCalendar.getEvents(today, searchDay()); — получает все события, происходящие в заданном временном диапазоне. Этот метод возвращает события, которые начинаются в указанном временном диапазоне, заканчиваются в этом временном диапазоне или охватывают временной диапазон.

Еще по теме:  Как залить Телеграм бота на vds сервер

Скрипт — подготовка данных для телеграма

function filteredArrToText() < const filteredArr = getCalendarEvents(); const beautyArr = filteredArr.map(row =>[` «$» состоится $, начало в $ до $, детали: $`]) return (beautyArr.join(‘nn’)) > function eventsCheckerToSend() < const text = filteredArrToText() if (text.length !== 0) < // если длина текста не равна 0 — т.е. там есть что отправлять let messageText = ` Мероприятия на сегодня и завтра:n` sendMessage(GROUP_ID, (messageText + text)) // отправка сообшения >>

filteredArrToText() приводит массив данных в текст — для передачи в телеграм.

eventsCheckerToSend() вешается на триггер и если массив не пустой — каждый день отправляет текст в группу телеграма.

Выглядит это следующим образом:

telegram bot message

Скрипт телеграм бота

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

Общий код

// Установка вебХука в телеграме function setWebHook() < //выполняется единожды — установить вебХук const url = telegramUrl + «setWebhook?url=» + googleUrl; const response = UrlFetchApp.fetch(url).getContentText(); const textResponse = JSON.parse(response); console.log(textResponse) >// Удаление вебХука в телеграме function deleteWebHook() < //выполняется единожды — удалить установленный выше вебХук const url = telegramUrl + «deleteWebhook?url=» + googleUrl; const response = UrlFetchApp.fetch(url).getContentText(); const textResponse = JSON.parse(response); console.log(textResponse) >// основная функция, которая обрабатывает входящие данные от телеграма function doPost(e) < try < const main = JSON.parse(e.postData.contents); // получаем данные из телеграм бота // вытаскиваем все данные из contents const chatId = main.message.chat.id; const firstName = main.message.chat.first_name; const lastName = main.message.chat.last_name; const messageText = main.message.text; const arrayText = messageText.split(» «); // массив для последующей обработки команд const detailsArray = [chatId, firstName, lastName, messageText, arrayText]; //собираем все что выше массив const objToTransfer = Object.assign(<>, detailsArray); // делаем из массива объект для передачи analyseDetails(objToTransfer); > catch (error) < sendMessage(ADMIN_ID, error) >>

Back-end часть телеграм бота

function analyseDetails(objReceived) < // анализ того, что пришло со стороны телеграма const receivedCommand = objReceived[4][0].toLowerCase(); // «4»: [«/list», «», «» и тд] switch (receivedCommand) < //если пришла команда case ‘/start’: sendStartMessage(objReceived); break; case ‘/help’: sendStartMessage(objReceived); break; default: // если пришло что-то отличное от команды onModer(objReceived); break; >> function sendStartMessage(obj) < const userId = obj[0]; //Юзер id const startMessage = ` Привет! nn Я — бот, присылающий напоминания о предстоящих мероприятиях на сегодня и завтра.nn Весь календарь мероприятий доступен по ссылке $` sendMessage(userId, startMessage); > // если пришло что-то отличное от команды — отправить администратору бота function onModer(obj) < const userId = obj[0] const userName = obj[1] const userSurname = obj[2] const userMessage = obj[3] const text = `Пользователь $$ с ID $ послал на модерацию сообщение: $` sendMessage(ADMIN_ID, text) sendMessage(userId, ‘Ваше сообщение отправлено администратору бота’) >

Базовый метод отправки сообщения

function sendMessage(chatid, chatText) < const chatId = chatid; const text = chatText; // const chatId = 309144243; // const text = ‘Test text’; const payload = < «method»: «sendMessage», «chat_id»: String(chatId), «text»: text, «parse_mode»: ‘HTML’, «disable_web_page_preview»: true >; const data = < «method»: «post», «payload»: payload >; UrlFetchApp.fetch(telegramUrl, data); >

Еще по теме:  Telegram не отправляет код по смс

Ну и напоследок — отдельно объявленные глобальные переменные

// КАЛЕНДАРЬ// const DAYS_NUM = 2 const DAYS_WEEK = 7 const CAL_ID = ‘ID КАЛЕНДАРЯ’ // ТЕЛЕГРАМ // const botToken = ‘botToken, полученный от BotFather’; const telegramUrl = «https://api.telegram.org/bot» + botToken + «/»; const googleUrl const ADMIN_ID = ваш_ID; const GROUP_ID = -ID группы куда будет вещать бот;

Так же хочется обратить внимание, что Id группы в телеграме начинаются со знака минус «-«. Это просто — чтоб не пугаться

Для того, чтобы не путаться где и что, я обычно разношу это по разным блокам-файлам:

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

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

Недавно в приложении Телеграм появилось новая функция, позволяющая отправлять сообщения по таймеру. Чтобы ей воспользоваться необходимо обновить свое устройство до последней версии. Загрузите его в App-Store для айфона либо в Google Play для Андроида.

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

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

Пошаговая инструкция по отправке запланированного сообщения в Телеграмме

Определяемся с чатом, куда хотим отправить сообщение.

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

Пишем необходимое сообщение, затем зажимаем удерживаем кнопку отправки.

Перед вами появится окно в виде выпадающего меню. Здесь нужно нажать на “Отправить позже”.

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

Выбираем время отправки и жмем кнопку “Отправить”.

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

Сделано! Отправка сообщения запланирована. Теперь ваш собеседник получит его в установленное время.

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

Отложенное сообщение в Телеграмм с телефона

Для того, чтобы создать отложенное сообщение необходимо проделать следующее:

  • заходим в Телеграм и выбираем получателя;
  • вводим сообщение, которое необходимо отправить;
  • чтобы отправить запланированное сообщение, нужно нажать на значок стрелки и удерживать до тех пор, пока не появится окошко с 2-мя опциями;
  • жмем на позднюю отправку;
  • всплывет окно, в котором потребуется ввести время и дату отправки. Определяемся с числом и жмем пункт “Отправить”.

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

Сделано! Сообщение будет доставлено получателю в установленное время.

Отложенное сообщение в Телеграмм с компьютера

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

  • заходим в приложение, находим нужного получателя и пишем сообщение;
  • для отправки сообщения необходимо кликнуть левой кнопкой мыши на иконку с изображением синей стрелки (ее можно увидеть в углу). Чтобы
  • отправить отложенное сообщение, нужно сделать все тоже самое, только правой кнопкой;
  • всплывет окно с 2-мя опциями;
  • нажимаем на “Отправить позже”;
  • вы увидите окно, где нужно указать дату и число отправки сообщения (задержка может быть до 1 года). Затем кликаем на “Запланировать”.
Еще по теме:  Можно ли как то посмотреть удаленные сообщения в Телеграмме

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

Как смотреть запланированный месседж в Телеграмм?

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

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

  • копирование;
  • редактирование;
  • удаление;
  • срочная отправка отложенных постов.

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

Отправка сообщения по времени с помощью бота

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

Самые известные боты: FleepBot и Controller Bot.

Для использования бота нужно:

  • Зайти в приложение Телеграмм, вбить в поиск название бота и нажать “Старт”.
  • Затем выбрать необходимый канал.
  • Перед вами появится руководство по подключению бота.

Удаляем отложенное сообщение

Все запланированные сообщения можно редактировать и удалять. У ПК и телефона одинаковые функции.

Для редактирования сообщения нужно нажать на него и выбрать необходимое действие:

  • редактировать;
  • сделать копию;
  • отправить немедленно;
  • удалить;
  • отредактировать время и дату.

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

Чат-бот напоминатор – о важном не забудешь!

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

Bot Info

Команды для бота:

Jivo чат

Дальше бот попросит ввести дату напоминания:

Вам интересны интернет-маркетинг и продвижение бизнеса в интернете? Подписывайтесь на наш Telegram-канал!

Вводите дату в формате:

Напоминатор

18.04.2019 00:00

//если не укажите год, то бот возьмет произвольно – текущий год, 2019.

  1. Бот спросит про повторения – выберите удобный для вас вариант (назначьте дату и время) или откажитесь от повторений напоминаний, если это не нужно.

Также рекомендуем прочитать статью: 40 лучших телеграм-каналов про бизнес.

Список напоминаний:

Подпишитесь на авторский телеграм-канал про предпринимательство в России.

Список напоминаний

Чтобы удалить напоминание бота в Телеграмм:

Бот сразу же удалит напоминание под номером 5)

Как это выглядит в действии:

Как это выглядит в действии

Напоминатор в группах:

Бота можно добавлять в группы вот так:

Контент-план

Так бот-напоминатор напомнит о дедлайне задачи всем участникам группы. Пробуйте в своей работе или просто в жизни нового чат-бота – с ним вы ничего не упустите ☺

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

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