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

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

Для меня главным требованием к таким напоминалкам является простота установки напоминания, иначе говоря, возможность ввода напоминания своими словами. Например, «через 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)


  1. Mihail57
    22.04.2017 17:43
    +4

    Такое ощущение, что это статья не для Хабра. Ну или не хватает хаба «Я пиарюсь».


  1. hedgeven
    22.04.2017 18:12
    +1

    Было бы неплохо увидеть код этого бота.

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

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


    1. zelenin
      22.04.2017 22:21

      Насколько я понимаю, он создает одноразовую задачу в обычном «at»

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


  1. S_A
    22.04.2017 19:22

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

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

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


    1. 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 число,
      «Напиши» — напишет все будущие дела,
      «Нарисуй» — пришлет диаграмму.

      Вся история.


  1. Akuma
    22.04.2017 20:25
    +1

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


  1. vostapenko
    23.04.2017 01:18
    +1

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


    1. vsile
      23.04.2017 16:21

      Да, я думал над этим. Отлавливать команду можно будет по слову «каждый(-е)» и направлять задание в cron.
      В этом случае придется создать базу данных для хранения периодических напоминаний пользователя, чтобы потом была возможность их отключить. Отменять задания можно будет, к примеру, следующим образом: послать боту команду /cancel, бот выдаст сообщение со пронумерованным списком всех периодических напоминаний, ввести номер периодического напоминания…
      Буду работать над этим.


  1. vldby
    23.04.2017 01:39

    Если отправить боту \' в 6:66 (время любое), он жалуется, что разработчику его нужно перезагрузить. Что происходит в этот момент?


    1. vldby
      23.04.2017 09:03

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


      1. vsile
        23.04.2017 17:37

        Со стикерами и аудиозаписями — всё ок. Бот направляет сообщение: «Неверный формат, попробуйте еще раз».
        После ввода одинарной кавычки бот перезагрузился. Для того, чтобы отправлять ему задания, нужно ввести команду /start и установить часовой пояс.
        Просто этого в ответ на стикеры, аудиозаписи и др. файлы бот, как я уже написал, направляет сообщение о неверном формате.


    1. vsile
      23.04.2017 17:29

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


  1. Prostlalka
    23.04.2017 10:34

    На самом деле во всех похожих сервисах еще очень не хватает задания вроде напоминай каждый день в 7 утра или там каждый понедельник и так далее


    1. vsile
      23.04.2017 17:38

      Согласен. Буду работать над этим.


  1. 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…
    (=


    1. vsile
      24.04.2017 17:19

      Проблема, как выяснилось, была связана с утечкой оперативной памяти на сервере (какой-то баг с процессом mate-settings-daemon)… Сейчас всё работает.
      Буду искать выделенный сервер для бота…


      1. zelenin
        24.04.2017 22:05
        +1

        mate-settings-daemon

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

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


  1. xlin
    23.04.2017 11:47
    +1

    Интересно было бы посмотреть код. Или это секрет?


  1. Dmitry_4
    23.04.2017 16:02

    А как обеспечивается надежность?
    Бот на домашнем сервачке крутится?


    1. vsile
      23.04.2017 19:36

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


  1. suicideme
    23.04.2017 17:40

    Календарь еще не изобрели?


  1. decomeron
    23.04.2017 17:40

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


    1. vsile
      23.04.2017 17:51


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


      1. Dmitry_4
        24.04.2017 07:01
        +1

        А у вас в логе запрос от декомерона не виден?


  1. de_arnst
    24.04.2017 10:14
    +1

    Телеграм превращается в какой-то монстр…

    У меня связка напоминаний Google Calendar (др, встречи, концерты) и Google Keep (что-то купить, посмотреть, послушать). При этом Keep может напоминать не по времени, а по геолокации. Оказался дома — лови напоминалку и так далее.


  1. decomeron
    24.04.2017 11:56

    Спасибо, после перезагрузки помогло, работает!+100500!


  1. Ryav
    25.04.2017 10:37

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


  1. Gradarius
    29.04.2017 13:24

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


  1. pythonchik
    29.04.2017 15:55

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