Add internal option for client-wide reply disabling
This commit is contained in:
parent
3621ddc190
commit
342ab32f3a
1 changed files with 19 additions and 6 deletions
|
@ -36,18 +36,18 @@ def parse_formatted(message: str, allow_html: bool = False, render_markdown: boo
|
||||||
|
|
||||||
|
|
||||||
class MaubotMessageEvent(MessageEvent):
|
class MaubotMessageEvent(MessageEvent):
|
||||||
client: MatrixClient
|
client: 'MaubotMatrixClient'
|
||||||
disable_reply: bool
|
disable_reply: bool
|
||||||
|
|
||||||
def __init__(self, base: MessageEvent, client: MatrixClient):
|
def __init__(self, base: MessageEvent, client: 'MaubotMatrixClient'):
|
||||||
super().__init__(**{a.name.lstrip("_"): getattr(base, a.name)
|
super().__init__(**{a.name.lstrip("_"): getattr(base, a.name)
|
||||||
for a in attr.fields(MessageEvent)})
|
for a in attr.fields(MessageEvent)})
|
||||||
self.client = client
|
self.client = client
|
||||||
self.disable_reply = False
|
self.disable_reply = client.disable_replies
|
||||||
|
|
||||||
def respond(self, content: Union[str, MessageEventContent],
|
def respond(self, content: Union[str, MessageEventContent],
|
||||||
event_type: EventType = EventType.ROOM_MESSAGE, markdown: bool = True,
|
event_type: EventType = EventType.ROOM_MESSAGE, markdown: bool = True,
|
||||||
allow_html: bool = False, reply: bool = False,
|
allow_html: bool = False, reply: Union[bool, str] = False,
|
||||||
edits: Optional[Union[EventID, MessageEvent]] = None) -> Awaitable[EventID]:
|
edits: Optional[Union[EventID, MessageEvent]] = None) -> Awaitable[EventID]:
|
||||||
if isinstance(content, str):
|
if isinstance(content, str):
|
||||||
content = TextMessageEventContent(msgtype=MessageType.NOTICE, body=content)
|
content = TextMessageEventContent(msgtype=MessageType.NOTICE, body=content)
|
||||||
|
@ -58,8 +58,15 @@ class MaubotMessageEvent(MessageEvent):
|
||||||
allow_html=allow_html)
|
allow_html=allow_html)
|
||||||
if edits:
|
if edits:
|
||||||
content.set_edit(edits)
|
content.set_edit(edits)
|
||||||
elif reply and not self.disable_reply:
|
elif reply:
|
||||||
content.set_reply(self)
|
if reply != "force" and self.disable_reply:
|
||||||
|
content.body = f"{self.sender}: {content.body}"
|
||||||
|
fmt_body = content.formatted_body or escape(content.body).replace("\n", "<br>")
|
||||||
|
content.formatted_body = (f'<a href="https://matrix.to/#/{self.sender}">'
|
||||||
|
f'{self.sender}'
|
||||||
|
f'</a>: {fmt_body}')
|
||||||
|
else:
|
||||||
|
content.set_reply(self)
|
||||||
return self.client.send_message_event(self.room_id, event_type, content)
|
return self.client.send_message_event(self.room_id, event_type, content)
|
||||||
|
|
||||||
def reply(self, content: Union[str, MessageEventContent],
|
def reply(self, content: Union[str, MessageEventContent],
|
||||||
|
@ -82,6 +89,12 @@ class MaubotMessageEvent(MessageEvent):
|
||||||
|
|
||||||
|
|
||||||
class MaubotMatrixClient(MatrixClient):
|
class MaubotMatrixClient(MatrixClient):
|
||||||
|
disable_replies: bool
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs) -> None:
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.disable_replies = False
|
||||||
|
|
||||||
def send_markdown(self, room_id: RoomID, markdown: str, *, allow_html: bool = False,
|
def send_markdown(self, room_id: RoomID, markdown: str, *, allow_html: bool = False,
|
||||||
msgtype: MessageType = MessageType.TEXT,
|
msgtype: MessageType = MessageType.TEXT,
|
||||||
edits: Optional[Union[EventID, MessageEvent]] = None,
|
edits: Optional[Union[EventID, MessageEvent]] = None,
|
||||||
|
|
Loading…
Reference in a new issue