Working on calc button

This commit is contained in:
Davte
2020-05-16 15:51:49 +02:00
parent 5d35579e10
commit 5bc58dd7d5

View File

@@ -5,6 +5,7 @@ import datetime
import json
from collections import OrderedDict
from typing import List, Union
# Project modules
from .api import TelegramError
@@ -14,87 +15,122 @@ from .utilities import (get_cleaned_text, get_user, make_button,
make_inline_keyboard, recursive_dictionary_update, )
calc_buttons = OrderedDict()
calc_buttons[0] = dict(
def get_calc_buttons() -> OrderedDict:
buttons = OrderedDict()
buttons['pow'] = dict(
value='**',
symbol='**',
order='A1',
)
buttons['floordiv'] = dict(
value='//',
symbol='//',
order='A2',
)
buttons['mod'] = dict(
value='%',
symbol='mod',
order='A3',
)
buttons['info'] = dict(
value='info',
symbol='',
order='A4',
)
buttons[0] = dict(
value=0,
symbol='0',
order=13
order='E1',
)
calc_buttons[1] = dict(
buttons[1] = dict(
value=1,
symbol='1',
order=9
order='D1',
)
calc_buttons[2] = dict(
buttons[2] = dict(
value=2,
symbol='2',
order=10
order='D2',
)
calc_buttons[3] = dict(
buttons[3] = dict(
value=3,
symbol='3',
order=11
order='D3',
)
calc_buttons[4] = dict(
buttons[4] = dict(
value=4,
symbol='4',
order=5
order='C1',
)
calc_buttons[5] = dict(
buttons[5] = dict(
value=5,
symbol='5',
order=6
order='C2',
)
calc_buttons[6] = dict(
buttons[6] = dict(
value=6,
symbol='6',
order=7
order='C3',
)
calc_buttons[7] = dict(
buttons[7] = dict(
value=7,
symbol='7',
order=1
order='B1',
)
calc_buttons[8] = dict(
buttons[8] = dict(
value=8,
symbol='8',
order=2
order='B2',
)
calc_buttons[9] = dict(
buttons[9] = dict(
value=9,
symbol='9',
order=3
order='B3',
)
calc_buttons['plus'] = dict(
buttons['plus'] = dict(
value='+',
symbol='',
order=4
order='B4',
)
calc_buttons['minus'] = dict(
buttons['minus'] = dict(
value='-',
symbol='',
order=8
order='C4',
)
calc_buttons['times'] = dict(
buttons['times'] = dict(
value='*',
symbol='✖️',
order=12
order='D4',
)
calc_buttons['divided'] = dict(
buttons['divided'] = dict(
value='/',
symbol='',
order=16
order='E4',
)
calc_buttons['point'] = dict(
buttons['point'] = dict(
value='.',
symbol='.',
order=14
order='E2',
)
calc_buttons['enter'] = dict(
buttons['000'] = dict(
value='*1000',
symbol='0⃣0⃣0',
order='E3',
)
buttons['enter'] = dict(
value='\n',
symbol='',
order=15
symbol='',
order='F1',
)
buttons['del'] = dict(
value='del',
symbol='⬅️',
order='F2',
)
return buttons
calc_buttons = get_calc_buttons()
def get_calculator_keyboard():
@@ -112,6 +148,32 @@ def get_calculator_keyboard():
)
async def _calculate_button(bot: Bot,
language: str,
data: List[Union[int, str]]):
result, text, reply_markup = '', '', None
if len(data) == 1:
input_value = data[0]
if input_value == 'del':
pass
elif input_value == 'info':
pass
elif input_value in [button['value'] for button in calc_buttons.values()]:
pass
else:
pass # Error!
# Edit the update with the button if a new text is specified
if not text:
return result
return dict(
text=result,
edit=dict(
text=text,
reply_markup=reply_markup
)
)
async def _calculate_command(bot: Bot,
update: dict,
language: str,
@@ -286,13 +348,19 @@ def init(telegram_bot: Bot, useful_tools_messages=None):
in useful_tools_messages['calculate_command'].items()
if key in ('description', 'help_section',
'language_labelled_commands')},
authorization_level='moderator')
authorization_level='everybody')
async def calculate_command(bot, update, language):
return await _calculate_command(bot=bot,
update=update,
language=language,
command_name='calc')
@telegram_bot.button(prefix='calc:///',
separator='|',
authorization_level='everybody')
async def calculate_button(bot, language, data):
return await _calculate_button(bot=bot, language=language, data=data)
@telegram_bot.command(command='/info',
aliases=None,
reply_keyboard_button=None,
@@ -301,7 +369,7 @@ def init(telegram_bot: Bot, useful_tools_messages=None):
in useful_tools_messages['info_command'].items()
if key in ('description', 'help_section',
'language_labelled_commands')},
authorization_level='moderator')
authorization_level='everybody')
async def message_info_command(bot, update, language):
return await _message_info_command(bot=bot,
update=update,