Многие из нас так или иначе пользуются или хотя бы пробовали пользоваться различными напоминалками. Их сейчас множество: платные и бесплатные, мобильные и десктопные, сложные и простые — как говорится, на любой вкус.
Для меня главным требованием к таким напоминалкам является простота установки напоминания, иначе говоря, возможность ввода напоминания своими словами. Например, «через 20 минут перезвонить коллеге» или «завтра в 15 в налоговую». Важно также, чтобы напоминалка умела откладывать напоминания.
Подобную напоминалку я как-то искал под Linux и, не найдя, написал сам. А для Windows я всем советовал похожую программку XMinder.
Время прошло, возможностей для разработки и реализации таких напоминалок стало больше.
И одна из таких возможностей — боты в Telegram.
Я подумал, было бы здорово найти такого бота, который бы принимал запросы на напоминания, написанные своими словами, и отправлял бы в установленное время соответствующие сообщения. Но такого бота, который бы понимал простой русский язык, я не нашел и написал своего.
Бот называется @remindmemegabot. Реализован на языке Golang с использованием библиотек tgbotapi и at и развернут на сервере под управлением Linux.
РемайндМиМегаБот умеет работать с часовыми поясами и понимает команды, написанные простыми словами, например:
- через 15 минут позвонить другу
- через час позвонить другу
- через два дня позвонить другу
- завтра в 10 позвонить другу
- в среду в 11:15 позвонить другу
- 23 мая в 15-10 позвонить другу
- 17.04.2018 в 9 позвонить другу
Напоминания можно отложить на 15 минут, час, 2 часа или любое другое время.
Особенно удобно пользоваться ботом на десктопном приложении Telegram
К боту можно подключиться по ссылке https://telegram.me/remindmemegabot
Update:
25.04.2017 в 18:41 по московскому времени бот обновился. Теперь он стал стабильнее.
Комментарии (29)
hedgeven
22.04.2017 18:12+1Было бы неплохо увидеть код этого бота.
Насколько я понимаю, он создает одноразовую задачу в обычном «at», а значит планы и задачи ваших пользователей будут оседать на вашем сервере в открытом виде. И ладно бы надо было доверять только вам, так ведь еще и придется доверять любому, кто посетит (например, без вашего ведома) ваш сервер.
Задумка хорошая, но реализацию можно было бы доработать. Также, если бы вы выложили код, любой желающий мог бы развернуть проект на своем сервере.zelenin
22.04.2017 22:21Насколько я понимаю, он создает одноразовую задачу в обычном «at»
вот интересно, с чего вы так решили? Я бы что угодно предположил, кроме как at (хотя at, конечно, удобная вещь)
сорри, надо просто было читать статью, а не лезть в комменты) странновато
S_A
22.04.2017 19:22Как сделать напоминалку?
1. Телеграм
2. Go
3.…
4. Статья на Хабре
5. ...???
У меня уже давно собственный бот на банальном пхп за меньше часа писанины напоминает мне с примитивного lamp-хостинга (на котором у меня еще три-четыре сайта) о делах. По запросу «напомни [когда] [что]» (а по «нарисуй» еще и барчарт поставленных/выполненных задач по датам шлёт).
Оценок не ставлю, штука и действительно тупо удобная. Просто пост можно было бы сделать полезнее и интереснее.S_A
22.04.2017 19:47+3Чтобы не быть голословным, и на случай любопытства — код тут
https://pastebin.com/2A38vAVj
Он был делан на скорую руку, но рабочий на php 5.4 (надо иметь кстати библиотеку phplop.php, все её потребности — imagick вроде достаточно — и mod_curl на сервере).
Код весьма так себе, отдаю себе в это отчет. Отчасти потому и не на гитхабе. Но для личных нужд годно, полгода ежедневного использования, полёт нормальный.
Понимает:
«Напомни через 3 часа сделать то-то что-то» — напомнит через 3 часа,
«Напомни 15 в 19:00 текст который будет напоминанием» — выведет начиная с текст… в ближайшее 15 число,
«Напиши» — напишет все будущие дела,
«Нарисуй» — пришлет диаграмму.
Вся история.
Akuma
22.04.2017 20:25+1Пользуюсь гугло-календарем. Пока устраивает и смысла в тонне ботов, которые могут завтра закрыться — нет.
vostapenko
23.04.2017 01:18+1Спасибо, неплохо было бы добавить периодические напоминания.
vsile
23.04.2017 16:21Да, я думал над этим. Отлавливать команду можно будет по слову «каждый(-е)» и направлять задание в cron.
В этом случае придется создать базу данных для хранения периодических напоминаний пользователя, чтобы потом была возможность их отключить. Отменять задания можно будет, к примеру, следующим образом: послать боту команду /cancel, бот выдаст сообщение со пронумерованным списком всех периодических напоминаний, ввести номер периодического напоминания…
Буду работать над этим.
vldby
23.04.2017 01:39Если отправить боту
\' в 6:66
(время любое), он жалуется, что разработчику его нужно перезагрузить. Что происходит в этот момент?vldby
23.04.2017 09:03В принципе, он «перезагружается» почти на каждое действие (стикер, аудиозапись и т.д.). Я бы над этим поработал на вашем месте.
vsile
23.04.2017 17:37Со стикерами и аудиозаписями — всё ок. Бот направляет сообщение: «Неверный формат, попробуйте еще раз».
После ввода одинарной кавычки бот перезагрузился. Для того, чтобы отправлять ему задания, нужно ввести команду /start и установить часовой пояс.
Просто этого в ответ на стикеры, аудиозаписи и др. файлы бот, как я уже написал, направляет сообщение о неверном формате.
vsile
23.04.2017 17:29Это баг (связан с одинарной кавычкой). Спасибо, что обнаружили и рассказали о нем.
Ошибку исправлю как можно скорее…
Prostlalka
23.04.2017 10:34На самом деле во всех похожих сервисах еще очень не хватает задания вроде напоминай каждый день в 7 утра или там каждый понедельник и так далее
cagami
23.04.2017 11:28я поставил однотипные напоминания 60шт в течении двух минут
через 15 минут позвонить другу
ожидаемое поведение:
два напоминания(через 14 и 15 минут)
60 напоминаний(30 через 14 и 30 через 15 минут)НО у вас что-то пошло не так
Хронология
напоминания я поставил в 00:40 и 00:41
а напоминания начали приходить в
одно в 00:54
одно в 01:26
одно в 01:50
одно в 01:56
два в 01:58
три в 02:00
семь в 02:03
одно в 02:05
пять в 02:06
etc…
(=vsile
24.04.2017 17:19Проблема, как выяснилось, была связана с утечкой оперативной памяти на сервере (какой-то баг с процессом mate-settings-daemon)… Сейчас всё работает.
Буду искать выделенный сервер для бота…zelenin
24.04.2017 22:05+1mate-settings-daemon
Не… не на домашнем. Пока бот развернут на рабочем сервереточно уверены, что не на домашнем?
decomeron
23.04.2017 17:40Пишет неверный формат, попробуйте еще раз, что я делаю не так?
Пишу-напомни позвонить в 14.30vsile
23.04.2017 17:51
Спасибо за комментарий. Но у меня, к сожалению, не получилось воспроизвести эту ошибку. Бот корректно обрабатывает задание… Если ввели в точности так, как написали, ошибки быть не должно… Если ошибка всё-таки продолжает появляться, сообщите, пожалуйста…
de_arnst
24.04.2017 10:14+1Телеграм превращается в какой-то монстр…
У меня связка напоминаний Google Calendar (др, встречи, концерты) и Google Keep (что-то купить, посмотреть, послушать). При этом Keep может напоминать не по времени, а по геолокации. Оказался дома — лови напоминалку и так далее.
Ryav
25.04.2017 10:37Прошу прощения за оффтоп, но нет ли бота, которые считает количество дней/часов/минут/секунд до события и с настраиваемой периодичностью оповещает об этом?
pythonchik
29.04.2017 15:55Было бы интересно посмотреть на код. Хотя бы ту часть, которая занята распознованием времени на русском языке, выложите.
Mihail57
Такое ощущение, что это статья не для Хабра. Ну или не хватает хаба «Я пиарюсь».