systemmessage.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. from nio.events.room_events import RoomMessageText
  2. from nio.rooms import MatrixRoom
  3. async def command_systemmessage(room: MatrixRoom, event: RoomMessageText, context: dict):
  4. system_message = " ".join(event.body.split()[2:])
  5. if system_message:
  6. context["logger"]("Adding system message...")
  7. with context["database"].cursor() as cur:
  8. cur.execute(
  9. "INSERT INTO system_messages (room_id, message_id, user_id, body, timestamp) VALUES (?, ?, ?, ?, ?)",
  10. (room.room_id, event.event_id, event.sender,
  11. system_message, event.server_timestamp)
  12. )
  13. return room.room_id, "m.room.message", {"msgtype": "m.notice", "body": f"System message stored: {system_message}"}
  14. context["logger"]("Retrieving system message...")
  15. with context["database"].cursor() as cur:
  16. cur.execute(
  17. "SELECT body FROM system_messages WHERE room_id = ? ORDER BY timestamp DESC LIMIT 1",
  18. (room.room_id,)
  19. )
  20. system_message = cur.fetchone()
  21. if system_message is None:
  22. system_message = context.get("system_message", "No system message set")
  23. elif context.get("force_system_message") and context.get("system_message"):
  24. system_message = system_message + "\n\n" + context["system_message"]
  25. return room.room_id, "m.room.message", {"msgtype": "m.notice", "body": f"System message: {system_message}"}