From 439191f7365e9aeebe237417cf0021c975629df7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E5=9D=82=E9=9B=85?= <23130178+ShadowRZ@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:00:25 +0800 Subject: [PATCH] Support tg://resolve --- nyx_bot/bot_commands.py | 3 +++ nyx_bot/utils.py | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nyx_bot/bot_commands.py b/nyx_bot/bot_commands.py index 9e7171e..e590ba4 100644 --- a/nyx_bot/bot_commands.py +++ b/nyx_bot/bot_commands.py @@ -35,6 +35,7 @@ from nyx_bot.utils import ( make_divergence, parse_matrixdotto_link, parse_wordcloud_args, + tg_link_to_tdotme_link, ) from nyx_bot.wordcloud import send_wordcloud @@ -186,6 +187,8 @@ class Command: if not self.args: raise NyxBotValueError("No external URL given.") target_url = self.args[0] + if target_url.startswith("tg://resolve"): + target_url = tg_link_to_tdotme_link(target_url) result = ( MatrixMessage.select() .where( diff --git a/nyx_bot/utils.py b/nyx_bot/utils.py index e367977..41e1636 100644 --- a/nyx_bot/utils.py +++ b/nyx_bot/utils.py @@ -5,7 +5,7 @@ from html.parser import HTMLParser from io import StringIO from random import Random from typing import Dict, Optional, Tuple -from urllib.parse import unquote, urlparse +from urllib.parse import parse_qs, unquote, urlparse import xxhash from nio import AsyncClient, Event, MatrixRoom, RoomGetEventError, RoomMessageText @@ -121,6 +121,14 @@ def make_datetime(origin_server_ts: int): return datetime.fromtimestamp(ts) +def tg_link_to_tdotme_link(tg_link: str): + parsed = urlparse(tg_link) + qs_parsed = parse_qs(parsed.query) + domain = qs_parsed["domain"][0] + post_id = qs_parsed["post"][0] + return f"https://t.me/{domain}/{post_id}" + + def parse_matrixdotto_link(link: str): replaced = link.replace("https://matrix.to/#/", "https://matrix.to/") parsed = urlparse(replaced)