Git Product home page Git Product logo

reminderbot's Introduction

What it is.

As indicates its name this project is a reminder bot. Its created to use in Google Chat using REST API.

For who.

Anyone that uses Google Chat.

What is needed to build and use it.

  1. A google service account and a private key. More info here and here.
  2. A server to host it and a database.
    As environment variables needs :
    a) Bot name
    b) Path of the private key
    c) Credentials for the connection with database

How to use it.

The current functionality that this bot supports after you invite it is the following:

  1. Set a reminder
    a) For you
    @bot remind me what at 16/3/2019 16:33
    @bot remind me what in 1 minute
    b) For anyone in the current room
    @bot remind @George Papakis what at 16/3/2019 16:33
    c) All in the current room
    @bot remind @all what at 16/3/2019 16:33
    d) All in any other room that bot is invited
    @bot remind #roomName what at 16/3/2019 16:33

  2. Set timezone
    a) For each reminder
    @bot remind me 'what' at 16/03/2019 16:33 Athens
    b) If previews omitted set timezone for each user in every reminder he sets
    @bot set my timezone to athens
    c) If previews omitted set timezone for every user in the current domain
    @bot set global timezone to Paris
    d) By default it uses GMT

  3. Show my reminders and timezone
    a) For each user shows reminders that will notify him.
    @bot list
    Example:
    1) ID:23 what:' Something to do ' When: 23/01/2019 18:20 Europe/Athens
    b) To show your timezone and global timezone simply do
    @bot timezones

  4. Delete a reminder
    a) For each user, using a reminders id.
    @bot delete 323

  5. Show current version of the bot
    a) For each user, using a reminder version.
    @bot version

  6. change bot configurations like this
    a) For bot configurations.
    @bot config set key value
    b) For listing all configurations
    @bot config

reminderbot's People

Contributors

dependabot[bot] avatar hoodelliot avatar jchrist avatar lykakis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

preethamkonu

reminderbot's Issues

Reminding a room is not listed as card

when you send a reminder to a room eg remind #general to come to meeting in 10:00 the message doesn't come with a card that needs to be fixed so you can cancel the reminder or use it again in 10 minutes

`to` is not removed from the reminder

when submitting a reminder with a command similar to:
@reminder remind me to do something at some time

The received reminder is:
to do something

It would look much better if the to was skipped.

Quarkus

replace thorntail with Quarkus.io

running bot version

Add command to report running bot version (ideally only on personal chats? to not pollute rooms with such details)?
something like
version
My version is: x.y.z

Make keywords more intuitive

The bot keywords should be verbs, better reflecting the action and making the language more intuitive:

  • reminder -> remind: This would allow language: @reminderbot remind me ...
    Make similar changes to all other used keywords

Code refactoring for maintainability

Currently the code base suffers from readability/maintainability. We need to improve on that by making certain changes according to identified patterns, such as:

  • @Transactional should only be used where it is (proven to be) essential, not abused.
  • Bot message building should be converged and re-used, rather than created as a string concatenation where needed
  • Json handling should be converged, rather than performed on-demand with either (un)marshalling, or as string splitting, etc

Replace jmockit with another mocking library

JMockit is extremely unstable and breaks with almost every minor update (either of the tool itself, or any of the underlying testing framework).
Most suggested tool to use would be mockito.

list doesnt show the correct timezone

when listing reminders the timezone is UTC+00 this should fix to timezone the reminder got saved and not always in 00 so you can actually see when the reminder will ping you if you set it to other days like remind me hello on Thursday

Change 'what' size

In current size of 'what' in the table reminder is 50 chars - there is a check for that also in checkReminderFormat().

Setup Instruction

Please guide how we can setup this bot on a server and which database we have to install to use it.
It would be great help if we know proper command for maven

Fix help message

The help message should be changed to reflect what's on the README, possibly also including a link to it.

Help instructions need a better visualisation

Is your feature request related to a problem? Please describe.
It is too difficult to read the help instruction although the content is good

Describe the solution you'd like
It would be nice to show the help somewhat more readable. I would propose to be wider and use formatting like bold and italics etc

Describe alternatives you've considered
Maybe we can think of a step by step help using sub-commands like reminder help list

Auto-create git tag

Automatically create git tag based on project version when building in CI for master branch

Fix setting time zone

When asking the bot to change the user/default time zone, the time zone is reported as a city (e.g. Athens).
Change that so that it also supports full time zone (e.g. Europe/Athens), as well as make it case-insensitive (e.g. allow athens)

feature request: repetitive reminders

AS a reminder bot user

I WANT to set repetitive reminders with a optionally settable interval till asked to be called off (at best cancel with link click, not with keyboard)

SO THAT i can set reminder for something that needs to be done but not always at the time i noticed and can be postponed for later

alternatively on each reminder offer to repeat (by clicking) a few options like

remind me again in <link>10'</link> or <link>tomorrow</link> or <link>next week</link>

Configure bot through chat

As a user, I want to be able to set bot's configuration values via chat, rather than having to manually set them up through a configuration file, environment variables or the database (e.g. the bot's base url).

Push docker image to docker hub from CI

Currently, CI verifies a build after building a docker image and running tests against it, but does not push it to Docker Hub. Instead, Docker Hub gets notified for a push to master (or a tag) and builds the image from sources (using the Dockerfile in the repo).
Ideally, this should change so that the image that was built and tested should get pushed to Docker Hub.

New Feature: Remind me about a specific message

Is your feature request related to a problem? Please describe.

My problem is I can't use slack that has the wonderful message to remind me about a particular message after a custom period of time.

Describe the solution you'd like

Ditch Google Chat and use Slack ( or, better yet, another open source solution that provides this functionality - but I don't know of one).

Instead, I'd wish I could use this chat bot right here!

Describe alternatives you've considered

  • Ignoring colleagues who choose to use google chat.
  • Petitioning to the CEO
  • Quitting the company
  • Convincing google it's about time they retired google chat.

Additional context

( comments above are meant to be taken with a grain of salt : ) )

Recurring reminders

AS a reminder bot user

I WANT to set recurring reminders with a settable interval (e.g. every hour/day/week/month) and some kind of way to cancel it (e.g. delete it)

Checkstyle

Add checkstyle in the project, so as to have consistent formatting

Error when parsing message

When setting a reminder with:
@reminder remind me to test you in 1'
the bot responds with an error due to exception:

Error from message:@reminder remind me to test you in 1': java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
boom!

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.