Просмотр исходного кода

multiple url times, improve matching

JoostSijm 4 лет назад
Родитель
Сommit
9a90f74037
1 измененных файлов с 15 добавлено и 10 удалено
  1. 15 10
      src/vboo_info_bot/telegram_bot.py

+ 15 - 10
src/vboo_info_bot/telegram_bot.py

@@ -21,19 +21,24 @@ def cmd_help(update, context):
 def text_handler(update, context):
     """Handle text"""
     urls = re.findall(r'(https?://\S+)', update.message.text)
+    fragment_set = set()
     for url in urls:
         url = hyperlink.URL.from_text(url)
         if url.host == 'rivalregions.com' or url.host == 'm.rivalregions.com':
-            if 'news/show/' in url.fragment:
-                article_id = url.fragment.replace('news/show/', '')
-                article = api.get_article(article_id)
-                formatted_article = functions.telegram_format_article(article)
-                update.message.reply_text(formatted_article, parse_mode=ParseMode.MARKDOWN_V2)
-            elif 'war/details/' in url.fragment:
-                war_id = url.fragment.replace('war/details', '')
-                war = api.get_war(war_id)
-                formatted_war = functions.telegram_format_war(war)
-                update.message.reply_text(formatted_war, parse_mode=ParseMode.MARKDOWN_V2)
+            fragment_set.add(url.fragment)
+            if len(fragment_set) >= 3:
+                break 
+    for fragment in fragment_set:
+        if re.match(r'news\/show\/\d+', fragment):
+            article_id = fragment.replace('news/show/', '')
+            article = api.get_article(article_id)
+            formatted_article = functions.telegram_format_article(article)
+            update.message.reply_text(formatted_article, parse_mode=ParseMode.MARKDOWN_V2)
+        if re.match(r'war\/details\/\d+', fragment):
+            war_id = fragment.replace('war/details', '')
+            war = api.get_war(war_id)
+            formatted_war = functions.telegram_format_war(war)
+            update.message.reply_text(formatted_war, parse_mode=ParseMode.MARKDOWN_V2)
 
 
 def run():