diff --git a/main.py b/main.py index 89fd218..7a6f7fb 100644 --- a/main.py +++ b/main.py @@ -184,6 +184,15 @@ async def send_text(room_id, text): formatted = formatted.replace("\n", "
") return await client.room_send(room_id=room_id, message_type="m.room.message", content={"msgtype": "m.text", "body": unformatted + " (SelfBot)", "format": "org.matrix.custom.html", "formatted_body": formatted + (f" (SelfBot)" if settings["source_url"] else " (SelfBot)")}, ignore_unverified_devices=True) +# Send a reply (with HTML formatting) +async def send_reply(room_id, original_event, text): + unformatted, formatted = text, text + unformatted = "".join([part.split(">")[-1] for part in unformatted.split("<")]) + unformatted = html.unescape(unformatted) + # \n doesn't work in HTML, replace it with
+ formatted = formatted.replace("\n", "
") + return await client.room_send(room_id=room_id, message_type="m.room.message", content={"msgtype": "m.text", "body": unformatted + " (SelfBot)", "format": "org.matrix.custom.html", "formatted_body": formatted + (f" (SelfBot)" if settings["source_url"] else " (SelfBot)"), "m.relates_to": {"m.in_reply_to": {"event_id": original_event.event_id}}}, ignore_unverified_devices=True) + # Commands definition # Appends shrug to the end of the message async def shrug(args, room, event): @@ -326,6 +335,10 @@ async def reaction_callback(room: nio.MatrixRoom, event: nio.UnknownEvent, react if settings["debug"]: print(f"Got reaction in {room.room_id} from {event.sender}.") + # No selfbot in mautrix-discord rooms. + if " (Discord)" in room.display_name: + return + # Get the original event that was reacted to event_response = await client.room_get_event(room.room_id, reacted_to_id) if isinstance(event_response, nio.RoomGetEventError): @@ -353,7 +366,7 @@ async def reaction_callback(room: nio.MatrixRoom, event: nio.UnknownEvent, react return await send_text(room.room_id, "Language " + from_lang + " is not supported!") translated = lt.translate(reacted_to_event.body, from_lang, "en") lang = lt.detect(reacted_to_event.body)[0]["language"].upper() if from_lang == "auto" else from_lang.upper() - return await send_text(room.room_id, "Translated from " + lang + " (" + flag_emoji("US" if lang == "EN" else lang) + "):\n" + translated) + return await send_reply(room.room_id, reacted_to_event, "Translated from " + lang + " (" + flag_emoji("US" if lang == "EN" else lang) + "):\n" + translated + "\n") async def message_callback(room: nio.MatrixRoom, event: nio.RoomMessageText) -> None: global client, settings, emojis