Skip to content
Snippets Groups Projects
Commit 58fb98b5 authored by MxMarx's avatar MxMarx
Browse files

add time_format parameter

parent d450e323
No related branches found
No related tags found
No related merge requests found
# https://github.com/MxMarx/reminder
# Feature requests welcome!
# Default timezone for users who did not set one.
# This is parsed with dateparser, so Continent/City, UTC offsets, and abbreviations should work.
# e.g. Europe/Helsinki, EET, +0300
......@@ -14,7 +17,8 @@ base_command:
- remind
- remindme
# subcommands used to create an agenda items
# Agenda items are like reminders but don't have a time, for things like to-do lists.
# Aliases used to create an agenda items by calling "!agenda <message>":
agenda_command:
- agenda
- todo
......@@ -24,7 +28,6 @@ cancel_command:
- cancel
- delete
# If verbose is true, display full confirmation messages. If false, confirm by reacting with :thumbs-up:
verbose: true
......@@ -32,4 +35,11 @@ verbose: true
rate_limit: 10
rate_limit_minutes: 60
# Power level needed to delete someone else's reminder
admin_power_level: 50
# time_format: strftime format when listing reminders.
# "%-I:%M%P %Z on %A, %B %-d %Y" - 7:36pm PDT on Sunday, September 17 2023
# "%Y-%m-%d %H:%M %Z" - 2023-09-17 19:36 PDT
# Currently, reminders within 7 days will be displayed as just the relative delta, e.g. "2 days and 1 hour"
time_format: "%-I:%M%P %Z on %A, %B %-d %Y"
\ No newline at end of file
......@@ -44,6 +44,8 @@ class Config(BaseProxyConfig):
helper.copy("rate_limit")
helper.copy("verbose")
helper.copy("admin_power_level")
helper.copy("time_format")
class ReminderBot(Plugin):
base_command: Tuple[str, ...]
......
......@@ -203,17 +203,17 @@ class Reminder(object):
"""
if self.is_agenda:
return format_time(self.start_time, user_info)
return format_time(self.start_time, user_info=user_info, time_format=self.bot.config['time_format'])
else:
next_run = format_time(self.job.next_run_time, user_info)
next_run = format_time(self.job.next_run_time, user_info=user_info, time_format=self.bot.config['time_format'])
if self.cron_tab:
# TODO add languages
if USE_CRON_DESCRIPTOR:
return f"{ExpressionDescriptor(self.cron_tab, casing_type=CasingTypeEnum.LowerCase)} (`{self.cron_tab}`), next run {next_run}"
else:
return f"`{self.cron_tab}`, next run {next_run}"
return f"`{self.cron_tab}`, next run at {next_run}"
elif self.recur_every:
return f"every {self.recur_every}, next run {next_run}"
return f"every {self.recur_every}, next run at {next_run}"
else: # once-off reminders
return next_run
......
......@@ -222,13 +222,13 @@ def pluralize(val: int, unit: str) -> str:
return f"{val} {unit}"
return f"{val} {unit}s"
def format_time(time: datetime, user_info: UserInfo) -> str:
def format_time(time: datetime, user_info: UserInfo, time_format: str = "%-I:%M%P %Z on %A, %B %-d %Y") -> str:
"""
Format time as something readable by humans.
Args:
time: datetime to format
user_info: contains locale (if using arrow) and timezone
user_info: contains locale and timezone
time_format:
Returns:
"""
......@@ -256,8 +256,7 @@ def format_time(time: datetime, user_info: UserInfo) -> str:
formatted_time = formatted_time + " ago"
else:
formatted_time = time.astimezone(
dateparser.utils.get_timezone_from_tz_string(user_info.timezone)).strftime(
"at %I:%M%P %Z on %A, %B %d %Y")
dateparser.utils.get_timezone_from_tz_string(user_info.timezone)).strftime(time_format)
return formatted_time
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment