76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
"""
|
||
This plugin provides a command to get the current date
|
||
"""
|
||
|
||
# plugins/date.py
|
||
|
||
import datetime
|
||
import logging
|
||
import simplematrixbotlib as botlib
|
||
|
||
async def handle_command(room, message, bot, prefix, config):
|
||
"""
|
||
Function to handle the !date command.
|
||
|
||
Args:
|
||
room (Room): The Matrix room where the command was invoked.
|
||
message (RoomMessage): The message object containing the command.
|
||
|
||
Returns:
|
||
None
|
||
"""
|
||
match = botlib.MessageMatch(room, message, bot, prefix)
|
||
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")
|
||
|
||
# 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"
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Plugin Metadata
|
||
# ---------------------------------------------------------------------------
|
||
|
||
__version__ = "1.0.0"
|
||
__author__ = "Funguy Bot"
|
||
__description__ = "Show current date and time"
|
||
__help__ = """
|
||
<details>
|
||
<summary><strong>!date</strong> – Current date and time</summary>
|
||
<p>Displays the day of the week, ordinal date, and AM/PM time.</p>
|
||
</details>
|
||
"""
|