Use davtelepot-evaluated arguments for buttons
This commit is contained in:
parent
e2cf4e77ff
commit
757fa158b6
@ -3,7 +3,7 @@
|
|||||||
__author__ = "Davide Testa"
|
__author__ = "Davide Testa"
|
||||||
__email__ = "davide@davte.it"
|
__email__ = "davide@davte.it"
|
||||||
__license__ = "GNU General Public License v3.0"
|
__license__ = "GNU General Public License v3.0"
|
||||||
__version__ = "1.1.11"
|
__version__ = "1.1.12"
|
||||||
__maintainer__ = "Davide Testa"
|
__maintainer__ = "Davide Testa"
|
||||||
__contact__ = "t.me/davte"
|
__contact__ = "t.me/davte"
|
||||||
|
|
||||||
|
@ -6,12 +6,13 @@ Available bikes in bike sharing stations.
|
|||||||
# Standard library modules
|
# Standard library modules
|
||||||
import asyncio
|
import asyncio
|
||||||
import datetime
|
import datetime
|
||||||
|
import inspect
|
||||||
import math
|
import math
|
||||||
|
|
||||||
# Third party modules
|
# Third party modules
|
||||||
import davtelepot
|
import davtelepot
|
||||||
from davtelepot.utilities import (
|
from davtelepot.utilities import (
|
||||||
async_wrapper, CachedPage, extract, get_cleaned_text,
|
async_wrapper, CachedPage, get_cleaned_text,
|
||||||
line_drawing_unordered_list, make_button, make_inline_keyboard,
|
line_drawing_unordered_list, make_button, make_inline_keyboard,
|
||||||
make_lines_of_buttons
|
make_lines_of_buttons
|
||||||
)
|
)
|
||||||
@ -918,8 +919,8 @@ async def _ciclopi_button_sort(bot, update, user_record, arguments):
|
|||||||
)
|
)
|
||||||
if len(arguments) == 1:
|
if len(arguments) == 1:
|
||||||
new_choice = (
|
new_choice = (
|
||||||
int(arguments[0])
|
arguments[0]
|
||||||
if arguments[0].isnumeric()
|
if type(arguments[0]) is int
|
||||||
else 0
|
else 0
|
||||||
)
|
)
|
||||||
if new_choice == ciclopi_record['sorting']:
|
if new_choice == ciclopi_record['sorting']:
|
||||||
@ -1009,8 +1010,10 @@ async def _ciclopi_button_limit(bot, update, user_record, arguments):
|
|||||||
)
|
)
|
||||||
if len(arguments) == 1:
|
if len(arguments) == 1:
|
||||||
new_choice = (
|
new_choice = (
|
||||||
int(arguments[0])
|
arguments[0]
|
||||||
if arguments[0].lstrip('+-').isnumeric()
|
if type(arguments[0]) is int
|
||||||
|
else int(arguments[0])
|
||||||
|
if type(arguments[0]) is str and arguments[0].lstrip('+-').isnumeric()
|
||||||
else 0
|
else 0
|
||||||
)
|
)
|
||||||
if new_choice == ciclopi_record['stations_to_show']:
|
if new_choice == ciclopi_record['stations_to_show']:
|
||||||
@ -1126,7 +1129,7 @@ async def _ciclopi_button_favourites_add(bot, update, user_record, arguments,
|
|||||||
'ciclopi', 'button', 'favourites', 'popup',
|
'ciclopi', 'button', 'favourites', 'popup',
|
||||||
update=update, user_record=user_record
|
update=update, user_record=user_record
|
||||||
)
|
)
|
||||||
if len(arguments) == 2 and arguments[1].isnumeric():
|
if len(arguments) == 2 and type(arguments[1]) is int:
|
||||||
station_id = int(arguments[1])
|
station_id = int(arguments[1])
|
||||||
chat_id = (
|
chat_id = (
|
||||||
update['message']['chat']['id'] if 'message' in update
|
update['message']['chat']['id'] if 'message' in update
|
||||||
@ -1357,7 +1360,7 @@ async def _ciclopi_button_favourites(bot, update, user_record, arguments):
|
|||||||
elif (
|
elif (
|
||||||
action in ['up', 'down']
|
action in ['up', 'down']
|
||||||
and len(arguments) > 1
|
and len(arguments) > 1
|
||||||
and arguments[1].isnumeric()
|
and type(arguments[1]) is int
|
||||||
):
|
):
|
||||||
station_id = int(arguments[1])
|
station_id = int(arguments[1])
|
||||||
order_record, ordered_stations = move_favorite_station(
|
order_record, ordered_stations = move_favorite_station(
|
||||||
@ -1520,15 +1523,20 @@ _ciclopi_button_routing_table = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def _ciclopi_button(bot, update, user_record):
|
async def _ciclopi_button(bot, update, user_record, data):
|
||||||
data = update['data']
|
command, *arguments = data
|
||||||
command, *arguments = extract(data, ':///').split('|')
|
|
||||||
if command in _ciclopi_button_routing_table:
|
if command in _ciclopi_button_routing_table:
|
||||||
result, text, reply_markup = await _ciclopi_button_routing_table[
|
handler = _ciclopi_button_routing_table[command]
|
||||||
command
|
parameters = {
|
||||||
](
|
name: value
|
||||||
bot, update, user_record, arguments
|
for name, value in {'bot': bot,
|
||||||
)
|
'update': update,
|
||||||
|
'user_record': user_record,
|
||||||
|
'arguments': arguments
|
||||||
|
}.items()
|
||||||
|
if name in inspect.signature(handler).parameters
|
||||||
|
}
|
||||||
|
result, text, reply_markup = await handler(**parameters)
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
if text:
|
if text:
|
||||||
@ -1606,6 +1614,6 @@ def init(telegram_bot, ciclopi_messages=None,
|
|||||||
async def ciclopi_command(bot, update, user_record):
|
async def ciclopi_command(bot, update, user_record):
|
||||||
return await _ciclopi_command(bot, update, user_record)
|
return await _ciclopi_command(bot, update, user_record)
|
||||||
|
|
||||||
@telegram_bot.button(prefix='ciclopi:///', authorization_level='everybody')
|
@telegram_bot.button(prefix='ciclopi:///', separator='|', authorization_level='everybody')
|
||||||
async def ciclopi_button(bot, update, user_record):
|
async def ciclopi_button(bot, update, user_record, data):
|
||||||
return await _ciclopi_button(bot, update, user_record)
|
return await _ciclopi_button(bot=bot, update=update, user_record=user_record, data=data)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user