22import datetime
33import random
44import re
5- import typing
6- from typing import Tuple
5+ from typing import Tuple , Optional , NamedTuple
76
87from telegram import User
98import config
@@ -75,13 +74,13 @@ def bot_wants_to_reply() -> bool:
7574 return random .random () < config .VERBOSITY
7675
7776
78- class BotReplySpec (typing . NamedTuple ):
77+ class BotReplySpec (NamedTuple ):
7978 message : str
8079 trigger : str
8180 reply : str
8281
8382
84- def triggers_reply (message : str ) -> typing . Optional [BotReplySpec ]:
83+ def triggers_reply (message : str ) -> Optional [BotReplySpec ]:
8584 for trigger_words , bot_reply in config .REPLIES .items ():
8685 regex = get_reply_regex (trigger_words )
8786 match = regex .search (message )
@@ -96,6 +95,12 @@ def triggers_reply(message: str) -> typing.Optional[BotReplySpec]:
9695 return None
9796
9897
98+ def pluralise (number : int , singular : str , plural : Optional [str ] = None ) -> str :
99+ if plural is None :
100+ plural = f"{ singular } s"
101+ return singular if number == 1 else plural
102+
103+
99104def since (dt = None , reference = datetime .datetime .now ()) -> str :
100105 """Returns a textual description of time passed.
101106
@@ -115,15 +120,15 @@ def since(dt=None, reference=datetime.datetime.now()) -> str:
115120 buff = []
116121 days = delta .days
117122 if days :
118- buff .append (f"{ days } day" if days == 1 else f" { days } days " )
123+ buff .append (f"{ days } { pluralise ( days , 'day' ) } " )
119124 seconds = delta .seconds
120125 if seconds > 3600 :
121126 hours = seconds // 3600
122- buff .append (f"{ hours } hour" if hours == 1 else f" { hours } hours " )
127+ buff .append (f"{ hours } { pluralise ( hours , 'hour' ) } " )
123128 seconds = seconds % 3600
124129 minutes = seconds // 60
125130 if minutes > 0 :
126- buff .append (f"{ minutes } minute" if minutes == 1 else f" { minutes } minutes " )
131+ buff .append (f"{ minutes } { pluralise ( minutes , 'minute' ) } " )
127132 seconds = seconds % 60
128- buff .append (f"{ seconds } second" if seconds == 1 else f" { seconds } seconds " )
133+ buff .append (f"{ seconds } { pluralise ( seconds , 'second' ) } " )
129134 return " " .join (buff )
0 commit comments