Prerelease improvements to settings, logging and encapsulation
- Moved everything into a class, instead of using a module
- Replaced print statements with logging with the appropriate log level
- Update pyproject.toml to use
~=
instead of==
- Explicitly support running with an empty chat id to get the chat id
- Use markdown for formatting
- Improve the handling of invalid time
- Use pydantic settings instead of dotenv to avoid reinventing parsing.
This has the advantage of being both more flexible and more resilient, plus it prints very nice messages if something is missing or unparseable.