rumdood / moneo Goto Github PK
View Code? Open in Web Editor NEWTelegram Bot for Managing Scheduled Tasks and Reminders
License: MIT License
Telegram Bot for Managing Scheduled Tasks and Reminders
License: MIT License
Allow for fuzzier matching to determine what task is the target of a bot command like /complete.
To implement this, consider modifying the IDs of the tasks to be UUIDs and and let the name be a sort of "short description" of the task. Then utilize some level of fuzzy matching so that the following scenario works:
User: /create Call My Doctor Tomorrow
Bot: Task "Call My Doctor Tomorrow" created
User: /complete call doctor
Bot: "Call My Doctor Tomorrow" completed
GIVEN THAT: I am in a chat with the Telegram bot
WHEN: I send an appropriate message to the bot as determined by either a set of menu command or via natural language
THEN: The bot will being a dialog to create a new task
Currently the bot requires dates and times to be given in specific formats so that it can correctly parse them (e.g. "yyyy-MM-dd HH:mm:ss[am/pm]"
This should be improved so that the user can specify a date/time like "tomorrow at noon" or "Friday afternoons at 3" and the bot can then deduce the correct date or CRON statement.
Examples:
"Tomorrow at noon" - Calculate the date for tomorrow and set the time to 12:00:00pm
"Friday afternoons at 3" - CRON statement of 0 0 15 * * 5
"Next Tuesday at 10am" - Calculate the date for the upcoming Tuesday and set the time to 10:00:00am
Add a /help
command for the bot to respond to with a list of available slash commands.
When no argument is added, the response should be something similar to:
/create - Create a new task
/complete - Complete a task
/skip - Skip a task
These descriptions should be embedded via attributes or possible a json config file (should all commands be configured via JSON and then source-generated?)
The user should be able to do something like /help /create
and get back a full help on that command if it exists.
When a task is created from the chatbot commands (i.e. /create), the casing used is what gets echoed back to the user, but the API's GET calls are case-sensitive and tasks are created in all-lower-case.
Scenario:
User: /create MyTask
...[Q&A to build task]
Bot: Created MyTask!
User: /complete MyTask <--- Backend receives a 404 error because the task MyTask is not found by the API
User: /complete mytask <--- Succeeds
Create an alternative host that does not utilize Durable Functions, allowing for the bot to be hosted somewhere other than Azure Functions.
This would require/allow using a different database for task/user information as well as utilizing an independent scheduler (e.g. Quartz or Hangfire) for reminders and badgers.
Occasionally tasks are not being sent to the chat. E.G. a task to take medication every day at 0900 and 2100 will work fine for several weeks and then suddenly no update reminder will be sent at 0900 one day. Completion of the task is still tracked, but the schedule seems to be turned off.
This can be fixed by submitting an "update" for the task definition, which recreates the schedule for future task events.
Add support for longer-running /complete
and /skip
workflows so that if the user sends a request without a task id (e.g. /complete
instead of /complete mytask
), the bot can respond to the user and have the user supply the id while staying in the workflow.
Example Conversation:
User: /complete
Bot: What task did you wish to complete?
User: mytask
Bot: Thanks for finishing mytask
Allow for the service to be configured to connect to a user's todoist account via an app key and pull tasks from there. The actual scheduling of reminders and badgers would still be handled by Moneo (either via Durable Functions or via another scheduler), but actual task details beyond that would be stored in todoist and polled from the API.
Would require:
@moneo_badger:30
for a 30 minute interval for badgers)The hosting for MoneoFunctions is currently not in IsolatedProcess. This creates an issue with moving forward to dotnet 8 and beyond.
Moving to an IsolatedProcess in the Moneo.Functions.Isolated project presents new issues with the massive modifications to the Durable Entities API and the fact that Moneo has evolved to be significantly more complex than it started (and has carried over some ultimately poor design choices).
Primary issues arising are:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.