diff --git a/tgram/utils/__init__.py b/tgram/utils/__init__.py index d3ebb93..eb83fc5 100644 --- a/tgram/utils/__init__.py +++ b/tgram/utils/__init__.py @@ -3,6 +3,7 @@ from .file_id import decode_file_id, FILE_TYPES, SUPPORTED_FILE_TYPES_TO_SEND from .files import get_file_name, get_file_path from .json_ import Json +from .readable_time import readable_time from .mention import Mention from .parsers import markdown_unparse, html_unparse, String from .types import message_origin_parse, convert_input_media @@ -31,4 +32,5 @@ "String", "message_origin_parse", "convert_input_media", + "readable_time" ] diff --git a/tgram/utils/readable_time.py b/tgram/utils/readable_time.py new file mode 100644 index 0000000..ed23b3a --- /dev/null +++ b/tgram/utils/readable_time.py @@ -0,0 +1,32 @@ +import datetime + +def readable_time(timestamp): + """ + Converts a timestamp into a human-readable time-ago format. + + Parameters: + timestamp (int): Unix timestamp or datetime object. + + Returns: + str: Time ago in words (e.g., '5 minutes ago'). + """ + if isinstance(timestamp, int): + timestamp = datetime.datetime.fromtimestamp(timestamp) + delta = datetime.datetime.now() - timestamp + + if delta.days > 365: + years = delta.days // 365 + return f"{years} year(s) ago" + elif delta.days > 30: + months = delta.days // 30 + return f"{months} month(s) ago" + elif delta.days > 0: + return f"{delta.days} day(s) ago" + elif delta.seconds > 3600: + hours = delta.seconds // 3600 + return f"{hours} hour(s) ago" + elif delta.seconds > 60: + minutes = delta.seconds // 60 + return f"{minutes} minute(s) ago" + else: + return "Just now" \ No newline at end of file