35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
|
from nio.events.room_events import RoomMessageText
|
||
|
from nio.rooms import MatrixRoom
|
||
|
|
||
|
|
||
|
async def command_systemmessage(room: MatrixRoom, event: RoomMessageText, context: dict):
|
||
|
system_message = " ".join(event.body.split()[2:])
|
||
|
|
||
|
if system_message:
|
||
|
context["logger"]("Adding system message...")
|
||
|
|
||
|
with context["database"].cursor() as cur:
|
||
|
cur.execute(
|
||
|
"INSERT INTO system_messages (room_id, message_id, user_id, body, timestamp) VALUES (?, ?, ?, ?, ?)",
|
||
|
(room.room_id, event.event_id, event.sender,
|
||
|
system_message, event.server_timestamp)
|
||
|
)
|
||
|
|
||
|
return room.room_id, "m.room.message", {"msgtype": "m.notice", "body": f"System message stored: {system_message}"}
|
||
|
|
||
|
context["logger"]("Retrieving system message...")
|
||
|
|
||
|
with context["database"].cursor() as cur:
|
||
|
cur.execute(
|
||
|
"SELECT body FROM system_messages WHERE room_id = ? ORDER BY timestamp DESC LIMIT 1",
|
||
|
(room.room_id,)
|
||
|
)
|
||
|
system_message = cur.fetchone()
|
||
|
|
||
|
if system_message is None:
|
||
|
system_message = context.get("system_message", "No system message set")
|
||
|
elif context.get("force_system_message") and context.get("system_message"):
|
||
|
system_message = system_message + "\n\n" + context["system_message"]
|
||
|
|
||
|
return room.room_id, "m.room.message", {"msgtype": "m.notice", "body": f"System message: {system_message}"}
|