Giter Site home page Giter Site logo

alordash / botsmartscheduler Goto Github PK

View Code? Open in Web Editor NEW
53.0 4.0 23.0 2.69 MB

Enhance your planning capabilities with this smart bot!

License: MIT License

JavaScript 99.98% Procfile 0.02%
bot planning telegram russian-language english-language human-speech-data scheduler

botsmartscheduler's Introduction

Бот понимает русскую и англоязычную речь

Если вам нужно быстро и с удобством планировать свои задачи, бот Smart Scheduler станет незаменимым инструментом в этом деле.

Пример использования

Как использовать

Бот Smart Scheduler работает в Telegram.
Просто напишите задачу и требуемое время, а Smart Scheduler автоматически найдет дату и задачу в сообщении.
По истечению времени запланированной задачи бот Smart Scheduler пришлет вам уведомление.

Особенности

Данный бот распознает большинство форм представления даты человеком (например «через X минут», «в без пятнадцати десять», «послезавтра пол первого»), поэтому вам не нужно следовать определенному формату времени.
Также не обязательно писать слова «абсолютно» точно. Бот способен понять что вы имели ввиду даже в словах с ошибками (например «чрез читыре нидели» -> «через 4 недели»).
Вы можете создавать сразу несколько напоминаний в одном сообщении, разделяя каждое с помощью точки, запятой или союза "и".

Smart Scheduler способен записывать время с точностью до минуты.
Smart Scheduler может формировать напоминания из голосовых сообщений.
Smart Scheduler поддерживает повторяющиеся напоминания («каждые 5 минут»), а также поддерживает ограничение для них («каждые 5 минут до 20 часов»).
Smart Scheduler поддерживает картинки, видео или файлы 💾 в напоминаниях.
Smart Scheduler хранит для каждого чата задачи раздельно и может функционировать в беседах.

Smart Scheduler может быть интегрирован в Вашу Trello доску!
Подробнее: Руководство по работе с Trello

Поддерживаемые комманды:

  • 🗓 /list - Показывает активные задачи для данного чата.

  • 🗑 /del 1, 2, ...N - Удаляет задачи по id.

  • 🗑 /del 1-10, A-B - Удаляет задачи в введенном диапазоне.

  • #️⃣ /N - Удаляет N-ную задачу.

  • 🌐 /tz - Настройка часового пояса.

и, конечно же, /start и /help.

Установка

Для работы бота требуется база данных PostgreSQL.

Переменные среды

Прежде чем запускать бота, убедитесь что вы установили следующие переменные среды:

  1. ENABLE_LOGS: "true" или "false", включает или отключает логирование.
  2. ENABLE_SCHEDULES_CHEKING: "true" или "false", включает или отключает проверку и отправление уведомлений.
  3. TZ: только "GMT".
  4. DATABASE_URL (опционально): URL базы данных PostgreSQL.
  5. SMART_SCHEDULER_DB_URL (опционально): URL базы данных PostreSQL.
  6. IS_HEROKU: "true" или "false". Если true, то для базы данных используется DATABASE_URL, иначе SMART_SCHEDULER_DB_URL.
  7. SMART_SCHEDULER_TLGRM_API_TOKEN: токен бота в телеграмме.

Для дебага (опционально):

  1. SMART_SCHEDULER_ADMIN": telegram-id пользователя-администратора бота
  2. SMART_SCHEDULER_DEBUG_MODE: "true" или "false". При включении бот проверяет только те напоминания, которые были созданные пользователем SMART_SCHEDULER_ADMIN.

Для определения часового пояса по геолокации (опционально):

  1. SMART_SCHEDULER_GOOGLE_API_KEY: api-ключ для сервисов Google.

Для обработки голосовых сообщений (опционально):

  1. YC_API_KEY: Yandex api key.
  2. YC_FOLDER_ID: Yandex catalog id.

Для интеграции с Trello (опционально):

  1. TRELLO_TOKEN: Trello api token.

На локальном сервере

$ git clone https://github.com/alordash/BotSmartScheduler
$ cd BotSmartScheduler
$ npm install
$ node ./BotCode/index.js

Используя heroku

  1. Создайте аккаунт github.
  2. Добавьте этот репозиторий к себе.
  3. Создайте аккаунт heroku.
  4. Создайте новое heroku приложение.
  5. Откройте новое приложение.
  6. Перейдите по этой ссылке.
  7. Нажмите Install Heroku Postgres.
  8. В появившейся строке введите название своего приложения и нажмите Provision add-on.
  9. Перейдите во вкладку Settings своего приложения.
  10. Нажмите Reveal Config Vars.
  11. Заполните все необходимые переменные среды.
  12. Перейдите во вкладку Deploy.
  13. В поле Deployment method выберите GitHub.
  14. Подключите свой github аккаунт к хероку нажав Connect to GitHub.
  15. В появившемся окне выберите ваш репозиторий, нажмите connect.
  16. Нажмите Deploy Branch.
  17. После окончания загрузки перейдите во вкладку Resources.
  18. Отключите web, включите worker.
    Ваш бот готов к работе.

botsmartscheduler's People

Contributors

alordash avatar dependabot[bot] avatar nchechulin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

botsmartscheduler's Issues

New user-bot interface

Currently every utility action with bot (e.g. show list, remove schedules) is performed by sending new messages by bot.
Would be better to realize utility actions via mark-up buttons with just one message being edited after every action from user.

Change message that is sent on /start

String which says that this bot is open source should be Italic and at bottom.
After ~15-20 seconds (average amount of time required to read start message) send another message that will ask user for specifying time zone.

Remove useless awaits

Remove useless awaits when sending message or performing other action with telegram api.

Single letter bug

Single letter becomes capital in schedule's text.
Test: "тест в foo. тест 18:30"
('в' becomes capital)

Big messages splitting

Implement big message splitting algorithm from botActions.LoadSchedulesList to every place where ctx.reply(%SOME_LIST_OF_SOMETHING%) is used.

DB expansion

Move pendingSchedules and tzPendingConfirmationUsers arrays to DB.

Incorrect processing of "через полчаса" ("in half an hour", rus) / Некорректно обрабатывается "через полчаса"

If you type "Оповестить о чем-либо через полчаса" bot does not recognize "через полчаса" ("in half an hour", rus) as indication of time and assigns the reminder for 19 hours from the current time with the text "Оповестить о чем-либо через полчаса" (as is).

Если напечатать "Оповестить о чем-либо через полчаса" бот не распознает "через полчаса" как указание времени, и назначит напоминалку на момент через 19 часов от текущего времени с текстом "Оповестить о чем-либо через полчаса".

P.s.
Timezone: GMT +05:00;
Screenshot: https://yadi.sk/i/CpZaeBwATOvhZA

Bug with "tommorow"

"Tommorow" shouldn't define remind's hours metric. This word triggers bot in group chats even without hours definition in original message.

Добавить лицензию

Каждому проекту рекомендуется иметь лицензию, чтобы люди знали, можно ли копировать и распространять код. Я советую воспользоваться choosealicense при выборе лицензии.

Schedule's text fix

Schedule's text must contain not modified by parse-word-to-number lib words.

New date format cases

Add support for following cases:
"3 ч 20 м" = 3 hours 20 minutes
"3ч 20м" = 3 hours 20 minutes

English support

Add support for time defined in english.
Need more examples of time definition cases in english.

Hours requiring

Add "require hour definition" message when something scheduled without hours.

"Snooze" mechanic

Add button under expired schedule to repeat this schedule after 5 minutes.

Integration with Trello

  1. Add ability for user to share access to his Trello boards (TBoard) via bot.
  2. Add ability for user to bind particular TBoard to selected chat.
  3. Chat is selected by sending some command in it.
  4. After binding TBoard to chat, bot will duplicate schedules to the binded TBoard.
    Behaviour settings
  5. Enable/disable schedules duplication to TBoard.
  6. Allow/disallow to delete cards from trello board via bot.
    Extra markup buttons
  7. If user has binded some TBoard to the chat where he is creating schedules, then add under these schedules button "Send to Trello".

Shorten reply

Make repeat remind reply shorter (e.g. "Напоминание установлено на " => "Повтор: ")

Инструкция по запуску

Было бы не плохо получить FAQ по запуску, интуитивно из кода понятно, но если хочется все на своем сервере запустить?

Add realtive time aliases

Add to settings ability to define user's relative time aliases (e.g. "morning", "evening") and ability to use them.

Add periodic type of schedules

Add schedules that won't delete after first expiring, but will be re-scheduled after XXX time.
Consider these cases:
"Каждый четверг в 12:00 ..."
"По будням в 12:00 ..."
"Каждые 2 часа 30 минут с 5 утра до 6 вечера ..."
"Каждый понедельник, среду и пятницу в 12:00 ..."
"Каждое 12-ое число в 12:00 ..."
"Каждого 1-ого января в 12:00 ..."

Move "Repeat remind" button timer to DB

Instead of calling js setTimeout in checkExpiredSchedules add new message's id to the new db table.
In the one minute timer bot should also check this new messages from new db table and remove "Repeat remind" button in them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.