Queer European MD passionate about IT
Browse Source

Service unavailable message moved to messages module

Davte 3 years ago
parent
commit
1719dfbe75
2 changed files with 37 additions and 21 deletions
  1. 32 20
      ciclopibot/ciclopi.py
  2. 5 1
      ciclopibot/messages.py

+ 32 - 20
ciclopibot/ciclopi.py

@@ -8,6 +8,7 @@ import asyncio
 import datetime
 import inspect
 import math
+from collections import OrderedDict
 
 # Third party modules
 from typing import Union
@@ -527,7 +528,9 @@ def _get_stations(data, location):
     return stations
 
 
-async def set_ciclopi_location(bot, update, user_record):
+async def set_ciclopi_location(bot: davtelepot.bot.Bot,
+                               update: dict, user_record: OrderedDict,
+                               language: str):
     """Take a location update and store it as CicloPi place.
 
     CicloPi stations will be sorted by distance from this place.
@@ -553,7 +556,8 @@ async def set_ciclopi_location(bot, update, user_record):
     )
     # Remove individual text message handler which was set to catch `/cancel`
     bot.remove_individual_text_message_handler(telegram_id)
-    return await _ciclopi_command(bot, update, user_record)
+    return await _ciclopi_command(bot=bot, update=update,
+                                  user_record=user_record, language=language)
 
 
 async def cancel_ciclopi_location(bot, update, user_record):
@@ -577,21 +581,16 @@ async def cancel_ciclopi_location(bot, update, user_record):
     )
 
 
-# The service is currently suspended: code is unreachable of course
-# noinspection PyUnreachableCode,PyUnusedLocal
-async def _ciclopi_command(bot: davtelepot.bot.Bot, update, user_record, sent_message=None,
+async def _ciclopi_command(bot: davtelepot.bot.Bot, update: dict,
+                           user_record: OrderedDict,
+                           language: str,
+                           sent_message=None,
                            show_all=False):
     if ('ciclopi' not in bot.shared_data
             or 'is_working' not in bot.shared_data['ciclopi']
             or not bot.shared_data['ciclopi']['is_working']):
-        return {
-            'text': {
-                'it': "⚠️ Il servizio è momentaneamente sospeso a causa dell'emergenza COVID-19🦠\n"
-                      "#stiamoacasa 🏠",
-                'en': "⚠️ The service is currently suspended due to COVID-19 emergency.🦠\n"
-                      "#stayathome 🏠"
-            }
-        }
+        return bot.get_message('ciclopi', 'service_unavailable',
+                               language=language)
     chat_id = update['chat']['id']
     default_stations_to_show = 5
     stations = []
@@ -1102,7 +1101,9 @@ async def _ciclopi_button_limit(bot, update, user_record, arguments):
     return result, text, reply_markup
 
 
-async def _ciclopi_button_show(bot, update, user_record, arguments):
+async def _ciclopi_button_show(bot: davtelepot.bot.Bot, update: dict,
+                               user_record: OrderedDict, language: str,
+                               arguments: list):
     result, text, reply_markup = '', '', None
     fake_update = update['message']
     fake_update['from'] = update['from']
@@ -1115,7 +1116,8 @@ async def _ciclopi_button_show(bot, update, user_record, arguments):
             show_all=(
                 True if len(arguments) == 1 and arguments[0] == 'all'
                 else False
-            )
+            ),
+            language=language
         )
     )
     return result, text, reply_markup
@@ -1544,7 +1546,9 @@ _ciclopi_button_routing_table = {
 }
 
 
-async def _ciclopi_button(bot, update, user_record, data):
+async def _ciclopi_button(bot: davtelepot.bot.Bot, update: dict,
+                          user_record: OrderedDict, language: str,
+                          data: list):
     command, *arguments = data
     if command in _ciclopi_button_routing_table:
         handler = _ciclopi_button_routing_table[command]
@@ -1553,6 +1557,7 @@ async def _ciclopi_button(bot, update, user_record, data):
             for name, value in {'bot': bot,
                                 'update': update,
                                 'user_record': user_record,
+                                'language': language,
                                 'arguments': arguments
                                 }.items()
             if name in inspect.signature(handler).parameters
@@ -1578,6 +1583,7 @@ async def check_service_status(bot: davtelepot.bot.Bot,
 
     Store service status in `bot.shared_data['ciclopi']`.
     """
+    # TODO: adapt interval to events (check 1 minute after first
     if isinstance(interval, datetime.timedelta):
         interval = interval.total_seconds()
     while 1:
@@ -1658,9 +1664,15 @@ def init(telegram_bot: davtelepot.bot.Bot, ciclopi_messages=None,
                           ),
                           help_section=telegram_bot.messages['ciclopi']['help'],
                           authorization_level='everybody')
-    async def ciclopi_command(bot, update, user_record):
-        return await _ciclopi_command(bot, update, user_record)
+    async def ciclopi_command(bot: davtelepot.bot.Bot, update: dict,
+                              user_record: OrderedDict, language: str):
+        return await _ciclopi_command(bot=bot, update=update,
+                                      user_record=user_record, language=language)
 
     @telegram_bot.button(prefix='ciclopi:///', separator='|', authorization_level='everybody')
-    async def ciclopi_button(bot, update, user_record, data):
-        return await _ciclopi_button(bot=bot, update=update, user_record=user_record, data=data)
+    async def ciclopi_button(bot: davtelepot.bot.Bot, update: dict,
+                             user_record: OrderedDict, language: str,
+                             data: list):
+        return await _ciclopi_button(bot=bot, update=update,
+                                     user_record=user_record, language=language,
+                                     data=data)

+ 5 - 1
ciclopibot/messages.py

@@ -449,7 +449,11 @@ default_ciclopi_messages = {
                 'it': "Annulla",
             },
         },
-    }
+    },
+    'service_unavailable': {
+        'it': "⚠ Il servizio è momentaneamente sospeso, riprova più tardi! ⚠",
+        'en': "⚠ The service is currently unavailable, try again later! ⚠"
+    },
 }
 
 default_help_messages = {