Простая напоминалка в Telegram

    Хотел бы поделиться своей разработкой, которая, думаю, пригодится пользователям Telegram.

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

    Для меня главным требованием к таким напоминалкам является простота установки напоминания, иначе говоря, возможность ввода напоминания своими словами. Например, «через 20 минут перезвонить коллеге» или «завтра в 15 в налоговую». Важно также, чтобы напоминалка умела откладывать напоминания.

    Подобную напоминалку я как-то искал под Linux и, не найдя, написал сам. А для Windows я всем советовал похожую программку XMinder.

    Время прошло, возможностей для разработки и реализации таких напоминалок стало больше.
    И одна из таких возможностей — боты в Telegram.

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

    Бот называется @remindmemegabot. Реализован на языке Golang с использованием библиотек tgbotapi и at и развернут на сервере под управлением Linux.

    РемайндМиМегаБот умеет работать с часовыми поясами и понимает команды, написанные простыми словами, например:

    • через 15 минут позвонить руководителю
    • через час подготовить отчет
    • проверить платеж через два дня
    • завтра в 10 оплатить услуги
    • в среду в 11:15 в налоговую
    • подготовиться к мероприятию в субботу вечером
    • в 8 вечера доделать работу
    • 23 мая в 15-10 на почту
    • 17.04.2018 в 9 поздравить коллегу с днем рождения
    • каждый день в 18 домой
    • каждую среду в 17-30 на тренировку
    • каждое 30 мая подарок на годовщину


    Напоминания можно отложить на 15 минут, час, 2 часа или любое другое время.


    Особенно удобно пользоваться ботом на десктопном приложении Telegram

    К боту можно подключиться по ссылке https://telegram.me/remindmemegabot

    Update:
    25.04.2017 в 18:41 по московскому времени бот обновился. Теперь он стал стабильнее.
    Поделиться публикацией

    Похожие публикации

    Комментарии 32
      +4
      Такое ощущение, что это статья не для Хабра. Ну или не хватает хаба «Я пиарюсь».
        +1
        Было бы неплохо увидеть код этого бота.

        Насколько я понимаю, он создает одноразовую задачу в обычном «at», а значит планы и задачи ваших пользователей будут оседать на вашем сервере в открытом виде. И ладно бы надо было доверять только вам, так ведь еще и придется доверять любому, кто посетит (например, без вашего ведома) ваш сервер.

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

          вот интересно, с чего вы так решили? Я бы что угодно предположил, кроме как at (хотя at, конечно, удобная вещь)
          сорри, надо просто было читать статью, а не лезть в комменты) странновато

            0

            Тоже в своё время реализовывал подобную штуку (https://github.com/MasterGroosha/telegram-reminder-bot), к сожалению, кроме at ничего толкового не нашёл.
            Если что-то знаете – подскажите, пожалуйста, давно зреет мысль переписать собственную напоминалку в реалиях 2018 года

            0
            Как сделать напоминалку?
            1. Телеграм
            2. Go
            3.…
            4. Статья на Хабре
            5. ...???

            У меня уже давно собственный бот на банальном пхп за меньше часа писанины напоминает мне с примитивного lamp-хостинга (на котором у меня еще три-четыре сайта) о делах. По запросу «напомни [когда] [что]» (а по «нарисуй» еще и барчарт поставленных/выполненных задач по датам шлёт).

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

              https://pastebin.com/2A38vAVj

              Он был делан на скорую руку, но рабочий на php 5.4 (надо иметь кстати библиотеку phplop.php, все её потребности — imagick вроде достаточно — и mod_curl на сервере).

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

              Понимает:
              «Напомни через 3 часа сделать то-то что-то» — напомнит через 3 часа,
              «Напомни 15 в 19:00 текст который будет напоминанием» — выведет начиная с текст… в ближайшее 15 число,
              «Напиши» — напишет все будущие дела,
              «Нарисуй» — пришлет диаграмму.

              Вся история.
              +1
              Пользуюсь гугло-календарем. Пока устраивает и смысла в тонне ботов, которые могут завтра закрыться — нет.
                +1

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

                  0
                  Да, я думал над этим. Отлавливать команду можно будет по слову «каждый(-е)» и направлять задание в cron.
                  В этом случае придется создать базу данных для хранения периодических напоминаний пользователя, чтобы потом была возможность их отключить. Отменять задания можно будет, к примеру, следующим образом: послать боту команду /cancel, бот выдаст сообщение со пронумерованным списком всех периодических напоминаний, ввести номер периодического напоминания…
                  Буду работать над этим.
                  0
                  Если отправить боту \' в 6:66 (время любое), он жалуется, что разработчику его нужно перезагрузить. Что происходит в этот момент?
                    0
                    В принципе, он «перезагружается» почти на каждое действие (стикер, аудиозапись и т.д.). Я бы над этим поработал на вашем месте.
                      0
                      Со стикерами и аудиозаписями — всё ок. Бот направляет сообщение: «Неверный формат, попробуйте еще раз».
                      После ввода одинарной кавычки бот перезагрузился. Для того, чтобы отправлять ему задания, нужно ввести команду /start и установить часовой пояс.
                      Просто этого в ответ на стикеры, аудиозаписи и др. файлы бот, как я уже написал, направляет сообщение о неверном формате.
                      0
                      Это баг (связан с одинарной кавычкой). Спасибо, что обнаружили и рассказали о нем.
                      Ошибку исправлю как можно скорее…
                      0
                      На самом деле во всех похожих сервисах еще очень не хватает задания вроде напоминай каждый день в 7 утра или там каждый понедельник и так далее
                        0
                        Согласен. Буду работать над этим.
                        0
                        я поставил однотипные напоминания 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…
                        (=
                          0
                          Проблема, как выяснилось, была связана с утечкой оперативной памяти на сервере (какой-то баг с процессом mate-settings-daemon)… Сейчас всё работает.
                          Буду искать выделенный сервер для бота…
                            +1
                            mate-settings-daemon

                            Не… не на домашнем. Пока бот развернут на рабочем сервере

                            точно уверены, что не на домашнем?

                          +1
                          Интересно было бы посмотреть код. Или это секрет?
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Не… не на домашнем. Пока бот развернут на рабочем сервере вместе с другими приложениями…
                              В перспективе планирую перенести бота на выделенный сервер.

                              0
                              Календарь еще не изобрели?
                                0
                                Пишет неверный формат, попробуйте еще раз, что я делаю не так?
                                Пишу-напомни позвонить в 14.30
                                  0

                                  Спасибо за комментарий. Но у меня, к сожалению, не получилось воспроизвести эту ошибку. Бот корректно обрабатывает задание… Если ввели в точности так, как написали, ошибки быть не должно… Если ошибка всё-таки продолжает появляться, сообщите, пожалуйста…
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                  +1
                                  Телеграм превращается в какой-то монстр…

                                  У меня связка напоминаний Google Calendar (др, встречи, концерты) и Google Keep (что-то купить, посмотреть, послушать). При этом Keep может напоминать не по времени, а по геолокации. Оказался дома — лови напоминалку и так далее.
                                    0
                                    Спасибо, после перезагрузки помогло, работает!+100500!
                                      0
                                      Прошу прощения за оффтоп, но нет ли бота, которые считает количество дней/часов/минут/секунд до события и с настраиваемой периодичностью оповещает об этом?
                                        0
                                        Конечно идея интересна для многих, но без кода эта статья просто пустая.
                                          0
                                          Кстати пользуюсь до сих пор, почти год, благодарю за полезного бота!
                                          0
                                          Было бы интересно посмотреть на код. Хотя бы ту часть, которая занята распознованием времени на русском языке, выложите.
                                            0

                                            Давным-давно, ещё в 2015 году, когда инлайн-кнопками в Telegram даже не пахло, у меня был подобный бот. Довольно косячный, но работающий. "Распознавание" сводилось к обыкновенным регуляркам: https://github.com/MasterGroosha/telegram-reminder-bot

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

                                          Самое читаемое