diff --git a/plugins/date.py b/plugins/date.py index 4d73867..b473fe1 100644 --- a/plugins/date.py +++ b/plugins/date.py @@ -23,10 +23,39 @@ async def handle_command(room, message, bot, prefix, config): if match.is_not_from_this_bot() and match.prefix() and match.command("date"): logging.info("Fetching current date and time") current_datetime = datetime.datetime.now() + + # Extract individual date components day_of_week = current_datetime.strftime("%A") + date_of_month = current_datetime.strftime("%d") # Day with leading zero month = current_datetime.strftime("%B") year = current_datetime.strftime("%Y") time = current_datetime.strftime("%I:%M:%S %p") - date_message = f"📅 Today is **{day_of_week}** of **{month}** in **{year}**. The time is **⏰ {time}**" + + # Format date with ordinal suffix + date_with_ordinal = f"{date_of_month}{get_ordinal_suffix(date_of_month)}" + + # Construct the message + date_message = f"Date: **{day_of_week}** the {date_with_ordinal}, **{month} {year}**. \nTime: **⏰ {time}**" + await bot.api.send_markdown_message(room.room_id, date_message) logging.info("Sent current date and time to the room") + + +def get_ordinal_suffix(day_of_month): + """ + Helper function to get the ordinal suffix for a day number. + + Args: + day_of_month (str): The day number as a string (e.g., "1", "13") + + Returns: + str: The ordinal suffix (e.g., "st", "th", "nd") + """ + if day_of_month.endswith("11") or day_of_month.endswith("12") or day_of_month.endswith("13"): + return "th" + elif day_of_month.endswith("1") or day_of_month.endswith("3"): + return "st" + elif day_of_month.endswith("2"): + return "nd" + else: + return "th"