|
@@ -25,6 +25,49 @@ default_ciclopi_messages = {
|
|
|
'en': "CicloPi 🚲",
|
|
|
'it': "CicloPi 🚲"
|
|
|
},
|
|
|
+ 'updating': {
|
|
|
+ 'en': "Updating",
|
|
|
+ 'it': "Aggiornamento in corso",
|
|
|
+ },
|
|
|
+ 'unavailable_website': {
|
|
|
+ 'en': "CicloPi's website cannot be reached at the moment.\n"
|
|
|
+ "Please retry later :/",
|
|
|
+ 'it': "Il sito del CicloPi è momentaneamente irraggiungibile.\n"
|
|
|
+ "Riprova tra un po' :/"
|
|
|
+ },
|
|
|
+ 'no_station_available': {
|
|
|
+ 'en': "No station available",
|
|
|
+ 'it': "Nessuna stazione"
|
|
|
+ },
|
|
|
+ 'title': {
|
|
|
+ 'en': "CicloPi stations",
|
|
|
+ 'it': "Stazioni CicloPi"
|
|
|
+ },
|
|
|
+ 'buttons': {
|
|
|
+ 'all': {
|
|
|
+ 'en': "All",
|
|
|
+ 'it': "Tutte"
|
|
|
+ },
|
|
|
+ 'only_fav': {
|
|
|
+ 'en': "Favourites only",
|
|
|
+ 'it': "Solo preferite"
|
|
|
+ },
|
|
|
+ 'first_n': {
|
|
|
+ 'en': "First {n}",
|
|
|
+ 'it': "Prime {n}"
|
|
|
+ },
|
|
|
+ 'update': {
|
|
|
+ 'en': "🔄 Update",
|
|
|
+ 'it': "🔄 Aggiorna"
|
|
|
+ },
|
|
|
+ 'legend': {
|
|
|
+ 'en': "📜 Legend",
|
|
|
+ 'it': "📜 Legenda"
|
|
|
+ },
|
|
|
+ 'settings': {
|
|
|
+ 'en': "⚙️ Settings",
|
|
|
+ 'it': "⚙️ Impostazioni"
|
|
|
+ },
|
|
|
}
|
|
|
},
|
|
|
'settings': {
|
|
@@ -154,6 +197,18 @@ default_ciclopi_messages = {
|
|
|
'en': "Only favourite stations",
|
|
|
'it': "Solo le preferite"
|
|
|
},
|
|
|
+ 'all': {
|
|
|
+ 'en': "favourite stations first",
|
|
|
+ 'it': "prima le preferite"
|
|
|
+ },
|
|
|
+ 'only': {
|
|
|
+ 'en': "only favourite stations",
|
|
|
+ 'it': "solo le preferite"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'num': {
|
|
|
+ 'en': "first {n}",
|
|
|
+ 'it': "prime {n}"
|
|
|
},
|
|
|
'all': {
|
|
|
'name': {
|
|
@@ -185,6 +240,7 @@ default_ciclopi_messages = {
|
|
|
'en': "Not available",
|
|
|
'it': "Non disponibile"
|
|
|
}
|
|
|
+ },
|
|
|
'set_position': {
|
|
|
'success': {
|
|
|
'en': "Position set!\n"
|
|
@@ -205,6 +261,20 @@ default_ciclopi_messages = {
|
|
|
"Per riprovare fai "
|
|
|
"/ciclopi > Impostazioni > Cambia posizione"
|
|
|
}
|
|
|
+ },
|
|
|
+ 'button': {
|
|
|
+ 'title': {
|
|
|
+ 'en': "CicloPi Settings",
|
|
|
+ 'it': "Impostazioni CicloPi"
|
|
|
+ },
|
|
|
+ 'back_to_settings': {
|
|
|
+ 'en': "Back to settings",
|
|
|
+ 'it': "Torna alle impostazioni"
|
|
|
+ },
|
|
|
+ 'back_to_stations': {
|
|
|
+ 'en': "Back to stations",
|
|
|
+ 'it': "Torna alle stazioni"
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -769,15 +839,20 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
else:
|
|
|
await bot.edit_message_text(
|
|
|
update=sent_message,
|
|
|
- text="<i>Aggiornamento in corso...</i>",
|
|
|
+ text="<i>{message}...</i>".format(
|
|
|
+ message=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'updating',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ )
|
|
|
+ ),
|
|
|
parse_mode='HTML',
|
|
|
reply_markup=None
|
|
|
)
|
|
|
ciclopi_data = await ciclopi_webpage.get_page()
|
|
|
if ciclopi_data is None or isinstance(ciclopi_data, Exception):
|
|
|
- text = (
|
|
|
- "Il sito del CicloPi è momentaneamente irraggiungibile, "
|
|
|
- "riprova tra un po' :/"
|
|
|
+ text = bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'unavailable_website',
|
|
|
+ update=update, user_record=user_record
|
|
|
)
|
|
|
else:
|
|
|
with bot.db as db:
|
|
@@ -861,13 +936,41 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
and not show_all
|
|
|
):
|
|
|
stations = stations[:stations_to_show]
|
|
|
+ filter_label = ""
|
|
|
+ if stations_to_show == -1:
|
|
|
+ filter_label = bot.get_message(
|
|
|
+ 'ciclopi', 'filters', 'fav', 'all' if show_all else 'only',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ )
|
|
|
+ elif len(stations) < len(Station.stations):
|
|
|
+ filter_label = bot.get_message(
|
|
|
+ 'ciclopi', 'filters', 'num',
|
|
|
+ update=update, user_record=user_record,
|
|
|
+ n=stations_to_show
|
|
|
+ )
|
|
|
+ if filter_label:
|
|
|
+ filter_label = ' ({label})'.format(
|
|
|
+ label=filter_label
|
|
|
+ )
|
|
|
text = (
|
|
|
- "🚲 Stazioni ciclopi {order}"
|
|
|
- "{lim} {sort[symbol]}\n"
|
|
|
+ "🚲 {title} {order}"
|
|
|
+ "{filter} {sort[symbol]}\n"
|
|
|
"\n"
|
|
|
- "{s}"
|
|
|
+ "{stations_list}"
|
|
|
).format(
|
|
|
- s=(
|
|
|
+ title=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'title',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ),
|
|
|
+ sort=CICLOPI_SORTING_CHOICES[sorting_code],
|
|
|
+ order=bot.get_message(
|
|
|
+ 'ciclopi', 'sorting',
|
|
|
+ CICLOPI_SORTING_CHOICES[sorting_code]['id'],
|
|
|
+ 'short_description',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ),
|
|
|
+ filter=filter_label,
|
|
|
+ stations_list=(
|
|
|
'\n\n'.join(
|
|
|
station.status.format(
|
|
|
not_available=bot.get_message(
|
|
@@ -877,25 +980,13 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
)
|
|
|
for station in stations
|
|
|
) if len(stations)
|
|
|
- else "<i>- Nessuna stazione -</i>"
|
|
|
- ),
|
|
|
- sort=CICLOPI_SORTING_CHOICES[sorting_code],
|
|
|
- order=bot.get_message(
|
|
|
- 'ciclopi', 'sorting',
|
|
|
- CICLOPI_SORTING_CHOICES[sorting_code]['id'],
|
|
|
- 'short_description',
|
|
|
- update=update, user_record=user_record
|
|
|
- ),
|
|
|
- lim=(
|
|
|
- " ({adv} le preferite)".format(
|
|
|
- adv='prima' if show_all else 'solo'
|
|
|
- ) if stations_to_show == -1
|
|
|
- else " (prime {n})".format(
|
|
|
- n=stations_to_show
|
|
|
+ else "<i>- {message} -</i>".format(
|
|
|
+ message=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'no_station_available',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ )
|
|
|
)
|
|
|
- if len(stations) < len(Station.stations)
|
|
|
- else ""
|
|
|
- )
|
|
|
+ ),
|
|
|
)
|
|
|
if not text:
|
|
|
return
|
|
@@ -903,19 +994,29 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
(
|
|
|
[
|
|
|
make_button(
|
|
|
- "💯 Tutte",
|
|
|
+ text="💯 {message}".format(
|
|
|
+ message=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'buttons', 'all',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ )
|
|
|
+ ),
|
|
|
prefix='ciclopi:///',
|
|
|
data=['show', 'all']
|
|
|
)
|
|
|
] if len(stations) < len(Station.stations)
|
|
|
else [
|
|
|
make_button(
|
|
|
- "{sy} {t}".format(
|
|
|
- t=(
|
|
|
- "Solo preferite" if stations_to_show == -1
|
|
|
- else "Prime {n}"
|
|
|
- ).format(
|
|
|
+ "{sy} {message}".format(
|
|
|
+ message=(
|
|
|
+ bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'buttons', 'only_fav',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ) if stations_to_show == -1
|
|
|
+ else bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'buttons', 'first_n',
|
|
|
+ update=update, user_record=user_record,
|
|
|
n=stations_to_show
|
|
|
+ )
|
|
|
),
|
|
|
sy=CICLOPI_STATIONS_TO_SHOW[stations_to_show]['symbol']
|
|
|
),
|
|
@@ -926,7 +1027,10 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
else []
|
|
|
) + [
|
|
|
make_button(
|
|
|
- "🔄 Aggiorna",
|
|
|
+ text=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'buttons', 'update',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ),
|
|
|
prefix='ciclopi:///',
|
|
|
data=(
|
|
|
['show'] + (
|
|
@@ -936,12 +1040,18 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
)
|
|
|
),
|
|
|
make_button(
|
|
|
- "📜 Legenda",
|
|
|
+ text=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'buttons', 'legend',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ),
|
|
|
prefix='ciclopi:///',
|
|
|
data=['legend']
|
|
|
),
|
|
|
make_button(
|
|
|
- "⚙️ Impostazioni",
|
|
|
+ text=bot.get_message(
|
|
|
+ 'ciclopi', 'command', 'buttons', 'settings',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ),
|
|
|
prefix='ciclopi:///',
|
|
|
data=['main']
|
|
|
)
|
|
@@ -963,14 +1073,55 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
|
|
return
|
|
|
|
|
|
|
|
|
+def get_menu_back_buttons(bot, update, user_record,
|
|
|
+ include_back_to_settings=True):
|
|
|
+ """Return a list of menu buttons to navigate back in the menu.
|
|
|
+
|
|
|
+ `include_back_to_settings` : Bool
|
|
|
+ Set it to True to include a 'back to settings' menu button.
|
|
|
+ """
|
|
|
+ if include_back_to_settings:
|
|
|
+ buttons = [
|
|
|
+ make_button(
|
|
|
+ text="⚙️ {message}".format(
|
|
|
+ message=bot.get_message(
|
|
|
+ 'ciclopi', 'button', 'back_to_settings',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ prefix='ciclopi:///',
|
|
|
+ data=['main']
|
|
|
+ )
|
|
|
+ ]
|
|
|
+ else:
|
|
|
+ buttons = []
|
|
|
+ buttons += [
|
|
|
+ make_button(
|
|
|
+ text="🚲 {message}".format(
|
|
|
+ message=bot.get_message(
|
|
|
+ 'ciclopi', 'button', 'back_to_stations',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ prefix='ciclopi:///',
|
|
|
+ data=['show']
|
|
|
+ )
|
|
|
+ ]
|
|
|
+ return buttons
|
|
|
+
|
|
|
+
|
|
|
async def _ciclopi_button_main(bot, update, user_record, arguments):
|
|
|
result, text, reply_markup = '', '', None
|
|
|
text = (
|
|
|
- "⚙️ Impostazioni CicloPi 🚲\n"
|
|
|
+ "⚙️ {settings_title} 🚲\n"
|
|
|
"\n"
|
|
|
- "{c}"
|
|
|
+ "{settings_list}"
|
|
|
).format(
|
|
|
- c='\n'.join(
|
|
|
+ settings_title=bot.get_message(
|
|
|
+ 'ciclopi', 'button', 'title',
|
|
|
+ update=update, user_record=user_record
|
|
|
+ ),
|
|
|
+ settings_list='\n'.join(
|
|
|
"- {symbol} {name}: {description}".format(
|
|
|
symbol=bot.get_message(
|
|
|
'ciclopi', 'settings', setting, 'symbol',
|
|
@@ -1005,13 +1156,10 @@ async def _ciclopi_button_main(bot, update, user_record, arguments):
|
|
|
data=[setting]
|
|
|
)
|
|
|
for setting in bot.messages['ciclopi']['settings']
|
|
|
- ] + [
|
|
|
- make_button(
|
|
|
- text="🚲 Torna alle stazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['show']
|
|
|
- )
|
|
|
- ]
|
|
|
+ ] + get_menu_back_buttons(
|
|
|
+ bot=bot, update=update, user_record=user_record,
|
|
|
+ include_back_to_settings=False
|
|
|
+ )
|
|
|
)
|
|
|
return result, text, reply_markup
|
|
|
|
|
@@ -1091,18 +1239,10 @@ async def _ciclopi_button_sort(bot, update, user_record, arguments):
|
|
|
data=['sort', code]
|
|
|
)
|
|
|
for code, choice in CICLOPI_SORTING_CHOICES.items()
|
|
|
- ] + [
|
|
|
- make_button(
|
|
|
- text="⚙️ Torna alle impostazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['main']
|
|
|
- ),
|
|
|
- make_button(
|
|
|
- text="🚲 Torna alle stazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['show']
|
|
|
- )
|
|
|
- ]
|
|
|
+ ] + get_menu_back_buttons(
|
|
|
+ bot=bot, update=update, user_record=user_record,
|
|
|
+ include_back_to_settings=True
|
|
|
+ )
|
|
|
)
|
|
|
return result, text, reply_markup
|
|
|
|
|
@@ -1179,18 +1319,10 @@ async def _ciclopi_button_limit(bot, update, user_record, arguments):
|
|
|
data=['limit', code]
|
|
|
)
|
|
|
for code, choice in CICLOPI_STATIONS_TO_SHOW.items()
|
|
|
- ] + [
|
|
|
- make_button(
|
|
|
- text="⚙️ Torna alle impostazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['main']
|
|
|
- ),
|
|
|
- make_button(
|
|
|
- text="🚲 Torna alle stazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['show']
|
|
|
- )
|
|
|
- ]
|
|
|
+ ] + get_menu_back_buttons(
|
|
|
+ bot=bot, update=update, user_record=user_record,
|
|
|
+ include_back_to_settings=True
|
|
|
+ )
|
|
|
)
|
|
|
return result, text, reply_markup
|
|
|
|
|
@@ -1229,18 +1361,10 @@ async def _ciclopi_button_legend(bot, update, user_record, arguments):
|
|
|
}
|
|
|
)
|
|
|
reply_markup = make_inline_keyboard(
|
|
|
- [
|
|
|
- make_button(
|
|
|
- text="⚙️ Torna alle impostazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['main']
|
|
|
- ),
|
|
|
- make_button(
|
|
|
- text="🚲 Torna alle stazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['show']
|
|
|
- )
|
|
|
- ]
|
|
|
+ + get_menu_back_buttons(
|
|
|
+ bot=bot, update=update, user_record=user_record,
|
|
|
+ include_back_to_settings=True
|
|
|
+ )
|
|
|
)
|
|
|
return result, text, reply_markup
|
|
|
|
|
@@ -1344,18 +1468,11 @@ async def _ciclopi_button_favorites_add(bot, update, user_record, arguments,
|
|
|
text="🔃 Riordina",
|
|
|
prefix="ciclopi:///",
|
|
|
data=["fav"]
|
|
|
- ),
|
|
|
- make_button(
|
|
|
- text="⚙️ Torna alle impostazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['main']
|
|
|
- ),
|
|
|
- make_button(
|
|
|
- text="🚲 Torna alle stazioni",
|
|
|
- prefix='ciclopi:///',
|
|
|
- data=['show']
|
|
|
)
|
|
|
- ],
|
|
|
+ ] + get_menu_back_buttons(
|
|
|
+ bot=bot, update=update, user_record=user_record,
|
|
|
+ include_back_to_settings=True
|
|
|
+ ),
|
|
|
3
|
|
|
)
|
|
|
)
|