From 8c21710dd2e53fb242c02233053f2ad680427208 Mon Sep 17 00:00:00 2001 From: Gabriel Huber Date: Thu, 15 May 2025 13:54:50 +0200 Subject: [PATCH] Initial commit --- previewbot.py | 56 +++++++++++++++------------------------------------ 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/previewbot.py b/previewbot.py index d0cfefc..5497277 100644 --- a/previewbot.py +++ b/previewbot.py @@ -31,50 +31,26 @@ class PreviewBot(slixmpp.ClientXMPP): async def on_message(self, msg): if msg["type"] in ("chat", "normal") and msg["from"] != self.nick: - url_matches = url_regex.findall(msg["body"]) - if url_matches: - print("Fetching previews for:", url_matches) - fetch_tasks = [urlpreview.get_preview(url) for url in url_matches] - previews = await asyncio.gather(*fetch_tasks) - preview_lines = [] - for url, preview_resp in zip(url_matches, previews): - if preview_resp is None: - preview_lines.append(f"Could not fetch preview for {url}") - else: - preview_lines.append(f"Title: {preview_resp}") - preview_text = "\n".join(preview_lines) - msg.reply(preview_text).send() - return - if "kuschelkatze" in msg["body"]: - reply_msg = msg.reply() - reply_msg["body"] = "http://bastiodon.lan/gabriel/ba8af1391c85f763.jpeg" - reply_msg["oob"]["url"] = "http://bastiodon.lan/gabriel/ba8af1391c85f763.jpeg" - reply_msg["oob"]["desc"] = "Katzenbild" - reply_msg.send() + self.handle_msg(msg) async def on_muc_message(self, msg): if msg["type"] == "groupchat" and msg["from"] != self.nick: - url_matches = url_regex.findall(msg["body"]) - if url_matches: - print("Fetching previews for:", url_matches) - fetch_tasks = [urlpreview.get_preview(url) for url in url_matches] - previews = await asyncio.gather(*fetch_tasks) - preview_lines = [] - for url, preview_resp in zip(url_matches, previews): - if preview_resp is None: - preview_lines.append(f"Could not fetch preview for {url}") - else: - preview_lines.append(f"Title: {preview_resp}") - preview_text = "\n".join(preview_lines) - msg.reply(preview_text).send() - return - if "kuschelkatze" in msg["body"]: - reply_msg = msg.reply() - reply_msg["body"] = "http://bastiodon.lan/gabriel/ba8af1391c85f763.jpeg" - reply_msg["oob"]["url"] = "http://bastiodon.lan/gabriel/ba8af1391c85f763.jpeg" - reply_msg["oob"]["desc"] = "Katzenbild" - reply_msg.send() + self.handle_msg(msg) + async def handle_msg(self, msg): + url_matches = url_regex.findall(msg["body"]) + if url_matches: + print("Fetching previews for:", url_matches) + fetch_tasks = [urlpreview.get_preview(url) for url in url_matches] + previews = await asyncio.gather(*fetch_tasks) + preview_lines = [] + for url, preview_resp in zip(url_matches, previews): + if preview_resp is None: + preview_lines.append(f"Could not fetch preview for {url}") + else: + preview_lines.append(f"Title: {preview_resp}") + preview_text = "\n".join(preview_lines) + msg.reply(preview_text).send() if __name__ == "__main__": config = configparser.ConfigParser()