From e19e022e12f7b70e6c2cbc5ee6d9b94edcbbfb3f Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 18 May 2020 18:33:40 +0200 Subject: [PATCH 1/9] Track input via message of algebraic expressions as well as input via buttons. --- davtelepot/__init__.py | 2 +- davtelepot/useful_tools.py | 46 +++++++++++++++++++++++++++++++------- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index 2a58146..ba0bbf1 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.15" +__version__ = "2.5.16" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index 29fdc79..b0299e0 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -238,7 +238,7 @@ async def _calculate_button(bot: Bot, if command == 'parser': reply_markup = None bot.set_individual_text_message_handler( - handler=_calculate_command, + handler=wrap_calculate_command(record_id=record_id), user_id=user_record['telegram_id'] ) elif command == 'info': @@ -398,11 +398,26 @@ async def calculate_session(bot: Bot, ) +def wrap_calculate_command(record_id: int = None, command_name: str = 'calc'): + async def wrapped_calculate_command(bot: Bot, + update: dict, + user_record: OrderedDict, + language: str,): + return await _calculate_command(bot=bot, + update=update, + user_record=user_record, + language=language, + command_name=command_name, + record_id=record_id) + return wrapped_calculate_command + + async def _calculate_command(bot: Bot, update: dict, user_record: OrderedDict, language: str, - command_name: str = 'calc'): + command_name: str = 'calc', + record_id: int = None): if 'reply_to_message' in update: update = update['reply_to_message'] command_aliases = [command_name] @@ -420,18 +435,33 @@ async def _calculate_command(bot: Bot, ) reply_markup = get_calculator_keyboard() else: - record_id = bot.db['calculations'].insert( - dict( - user_id=user_record['id'], - created=datetime.datetime.now(), - expression=text + if record_id is None: + record_id = bot.db['calculations'].insert( + dict( + user_id=user_record['id'], + created=datetime.datetime.now(), + expression=text + ) ) + expression = text + else: + record = bot.db['calculations'].find_one( + id=record_id + ) + expression = f"{record['expression'] or ''}\n{text}" + bot.db['calculations'].update( + dict( + id=record_id, + modified=datetime.datetime.now(), + expression=expression + ), + ['id'] ) text = bot.get_message( 'useful_tools', 'calculate_command', 'result', language=language, expressions=evaluate_expressions(bot=bot, - expressions=text, + expressions=expression, language=language) ) reply_markup = get_calculator_keyboard(additional_data=[record_id]) From 10188762275362cb78c419211bf489dfd9e904ac Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 18 May 2020 18:50:21 +0200 Subject: [PATCH 2/9] Remove whitespace at the end of the expression after del button is pressed --- davtelepot/__init__.py | 2 +- davtelepot/useful_tools.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index ba0bbf1..35c0ff9 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.16" +__version__ = "2.5.17" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index b0299e0..1e4c032 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -360,7 +360,7 @@ async def calculate_session(bot: Bot, return input_value = data[1] if input_value == 'del': - expression = expression[:-1] + expression = expression[:-1].strip() elif input_value == 'back': pass elif input_value in calc_buttons: From a7fd05410642a1566b9e03a4346de1cf2c7fdca4 Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 18 May 2020 18:58:14 +0200 Subject: [PATCH 3/9] Multilanguage message in version command --- davtelepot/__init__.py | 2 +- davtelepot/administration_tools.py | 18 +++++++++++++----- davtelepot/messages.py | 16 ++++++++++++---- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index 35c0ff9..84cf5f0 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.17" +__version__ = "2.5.18" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/administration_tools.py b/davtelepot/administration_tools.py index 2b8fa5b..7801be5 100644 --- a/davtelepot/administration_tools.py +++ b/davtelepot/administration_tools.py @@ -870,7 +870,8 @@ async def get_new_versions(bot: Bot, return news -async def _version_command(bot: Bot, update, user_record): +async def _version_command(bot: Bot, update: dict, + user_record: OrderedDict, language: str): last_commit = await get_last_commit() text = bot.get_message( 'admin', 'version_command', 'header', @@ -883,13 +884,19 @@ async def _version_command(bot: Bot, update, user_record): for package in bot.packages ) temporary_message = await bot.send_message( - text=text + '\n\n⏳ Checking for updates... ☑️', + text=text + '\n\n' + bot.get_message( + 'admin', 'version_command', 'checking_for_updates', + language=language + ), update=update, send_default_keyboard=False ) news = await get_new_versions(bot=bot) if not news: - text += '\n\n⌛️ All packages are updated! ✅' + text += '\n\n' + bot.get_message( + 'admin', 'version_command', 'all_packages_updated', + language=language + ) else: text += '\n\n' + bot.get_message( 'admin', 'updates_available', 'header', @@ -1997,7 +2004,8 @@ def init(telegram_bot: Bot, }, show_in_keyboard=False, authorization_level='admin') - async def version_command(bot, update, user_record): + async def version_command(bot, update, user_record, language): return await _version_command(bot=bot, update=update, - user_record=user_record) + user_record=user_record, + language=language) diff --git a/davtelepot/messages.py b/davtelepot/messages.py index b7b16cf..a7247be 100644 --- a/davtelepot/messages.py +++ b/davtelepot/messages.py @@ -617,21 +617,29 @@ default_admin_messages = { }, }, 'version_command': { - 'reply_keyboard_button': { - 'en': "Version #️⃣", - 'it': "Versione #️⃣", + 'all_packages_updated': { + 'en': "⌛️ All packages are updated! ✅", + 'it': "⌛️ Tutti i pacchetti sono aggiornati! ✅", + }, + 'checking_for_updates': { + 'en': "⏳ Checking for updates... ☑️", + 'it': "⏳ Sto cercando aggiornamenti... ☑️", }, 'description': { 'en': "Get packages version and source code last commit", 'it': "Chiedi la versione dei pacchetti e del codice sorgente", }, - 'help_section': None, 'header': { 'en': "ℹ️ Version information #️⃣\n\n" "Last commit: {last_commit}", 'it': "ℹ️ Informazioni sulle versioni dei pacchetti #️⃣\n\n" "Ultimo commit: {last_commit}" }, + 'help_section': None, + 'reply_keyboard_button': { + 'en': "Version #️⃣", + 'it': "Versione #️⃣", + }, }, } From 7f140371b61be62e192d8fa9af0366e96db2be2e Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 18 May 2020 19:31:26 +0200 Subject: [PATCH 4/9] Prettify expressions --- davtelepot/__init__.py | 2 +- davtelepot/useful_tools.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index 84cf5f0..c75d6c4 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.18" +__version__ = "2.5.19" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index 1e4c032..80fdf7c 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -7,6 +7,7 @@ import datetime import json import logging import operator +import re from collections import OrderedDict from typing import List, Union @@ -182,6 +183,16 @@ def get_operators() -> dict: calc_buttons = get_calc_buttons() operators = get_operators() +operators_spacer = re.compile(r"(\d)\s*([+\-*%]|/{1,2})\s*(\d)") +spaced_operators = r"\1 \2 \3" +operators_space_remover = re.compile(r"(\d)\s*(\*\*)\s*(\d)") +un_spaced_operators = r"\1\2\3" + + +def prettify_expression(expression): + expression = operators_spacer.sub(spaced_operators, expression) + expression = operators_space_remover.sub(un_spaced_operators, expression) + return expression def get_calculator_keyboard(additional_data: list = None): @@ -367,6 +378,7 @@ async def calculate_session(bot: Bot, expression += calc_buttons[input_value]['value'] else: logging.error(f"Invalid input from calculator button: {input_value}") + expression = prettify_expression(expression) if record: bot.db['calculations'].update( dict( @@ -449,6 +461,7 @@ async def _calculate_command(bot: Bot, id=record_id ) expression = f"{record['expression'] or ''}\n{text}" + expression = prettify_expression(expression) bot.db['calculations'].update( dict( id=record_id, From 2131c6acf9103c06e50bccd6ebe781450d06447d Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 18 May 2020 22:08:10 +0200 Subject: [PATCH 5/9] Prevent `message is not modified` exceptions --- davtelepot/__init__.py | 2 +- davtelepot/useful_tools.py | 33 +++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index c75d6c4..aec296a 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.19" +__version__ = "2.5.20" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index 80fdf7c..0ceedda 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -186,12 +186,21 @@ operators = get_operators() operators_spacer = re.compile(r"(\d)\s*([+\-*%]|/{1,2})\s*(\d)") spaced_operators = r"\1 \2 \3" operators_space_remover = re.compile(r"(\d)\s*(\*\*)\s*(\d)") -un_spaced_operators = r"\1\2\3" +non_spaced_operators = r"\1\2\3" +multiple_newlines_regex = re.compile(r"[\n|\r][\n|\s]{2,}") +multiple_spaces_regex = re.compile(r"\s{2,}") def prettify_expression(expression): + """Make expression cleaner to read. + + Place a single space around binary operators `+,-,*,%,/,//`, no space + around `**`, single newlines and single spaces. + """ expression = operators_spacer.sub(spaced_operators, expression) - expression = operators_space_remover.sub(un_spaced_operators, expression) + expression = operators_space_remover.sub(non_spaced_operators, expression) + expression = multiple_newlines_regex.sub('\n', expression) + expression = multiple_spaces_regex.sub(' ', expression) return expression @@ -353,6 +362,7 @@ async def calculate_session(bot: Bot, record = bot.db['calculations'].find_one( id=record_id ) + old_expression = record['expression'] if record is None: logging.error("Invalid record identifier!") return @@ -389,19 +399,22 @@ async def calculate_session(bot: Bot, ['id'] ) if expression: - text = bot.get_message( - 'useful_tools', 'calculate_command', 'result', - language=language, - expressions=evaluate_expressions(bot=bot, - expressions=expression, - language=language) - ) + if expression.strip(' \n') != old_expression.strip(' \n'): + text = bot.get_message( + 'useful_tools', 'calculate_command', 'result', + language=language, + expressions=evaluate_expressions(bot=bot, + expressions=expression, + language=language) + ) + else: + text = '' else: text = bot.get_message( 'useful_tools', 'calculate_command', 'instructions', language=language ) - if last_entry is None: + if last_entry is None or not text: return await bot.edit_message_text( text=text, From 995bfee084342c081038893524711107edeb180c Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 18 May 2020 22:25:30 +0200 Subject: [PATCH 6/9] TypeError bug fixed --- davtelepot/__init__.py | 2 +- davtelepot/useful_tools.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index aec296a..4f0d80d 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.20" +__version__ = "2.5.21" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index 0ceedda..235507f 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -362,7 +362,7 @@ async def calculate_session(bot: Bot, record = bot.db['calculations'].find_one( id=record_id ) - old_expression = record['expression'] + old_expression = record['expression'] or '' if record is None: logging.error("Invalid record identifier!") return From cd7392c2fd18a0c75fe68cf3e18380d9da9d6403 Mon Sep 17 00:00:00 2001 From: Davte Date: Tue, 19 May 2020 12:53:20 +0200 Subject: [PATCH 7/9] Prettify expressions removing whitespace around newlines and adjusting whitespace around parentheses --- davtelepot/__init__.py | 2 +- davtelepot/useful_tools.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index 4f0d80d..fd511fd 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.21" +__version__ = "2.5.22" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index 235507f..9b7d0f5 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -183,12 +183,19 @@ def get_operators() -> dict: calc_buttons = get_calc_buttons() operators = get_operators() -operators_spacer = re.compile(r"(\d)\s*([+\-*%]|/{1,2})\s*(\d)") + +operators_spacer = re.compile(r"([\d\(\)])\s*([+\-*%]|/{1,2})\s*([\d\(\)])") spaced_operators = r"\1 \2 \3" -operators_space_remover = re.compile(r"(\d)\s*(\*\*)\s*(\d)") +operators_space_remover = re.compile(r"([\d\(\)])\s*(\*\*)\s*([\d\(\)])") non_spaced_operators = r"\1\2\3" multiple_newlines_regex = re.compile(r"[\n|\r][\n|\s]{2,}") -multiple_spaces_regex = re.compile(r"\s{2,}") +multiple_spaces_regex = re.compile(r"[^\S\n\r]{2,}") +parentheses_regex_list = [ + {'pattern': re.compile(r"[^\S\n\r]*(\()[^\S\n\r]*(\d)"), + 'replace': r" \1\2"}, + {'pattern': re.compile(r"(\d)[^\S\n\r]*(\))"), + 'replace': r"\1\2"} +] def prettify_expression(expression): @@ -196,11 +203,17 @@ def prettify_expression(expression): Place a single space around binary operators `+,-,*,%,/,//`, no space around `**`, single newlines and single spaces. + No space after `(` or before `)`. + No space at the beginning or ending of a line. """ expression = operators_spacer.sub(spaced_operators, expression) expression = operators_space_remover.sub(non_spaced_operators, expression) + for regex in parentheses_regex_list: + expression = regex['pattern'].sub(regex['replace'], expression) expression = multiple_newlines_regex.sub('\n', expression) expression = multiple_spaces_regex.sub(' ', expression) + expression = expression.replace('\n ', '\n') + expression = expression.replace(' \n', '\n') return expression From e3cde032badcc5e69d725c2fdf47a6579be83c70 Mon Sep 17 00:00:00 2001 From: Davte Date: Tue, 19 May 2020 15:20:23 +0200 Subject: [PATCH 8/9] Small fixes in calculation command - Consider `_` as a digit when prettifying expressions - Shorten buffer time for calculation sessions - Redundant escape --- davtelepot/useful_tools.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/davtelepot/useful_tools.py b/davtelepot/useful_tools.py index 9b7d0f5..28cf048 100644 --- a/davtelepot/useful_tools.py +++ b/davtelepot/useful_tools.py @@ -184,16 +184,16 @@ def get_operators() -> dict: calc_buttons = get_calc_buttons() operators = get_operators() -operators_spacer = re.compile(r"([\d\(\)])\s*([+\-*%]|/{1,2})\s*([\d\(\)])") +operators_spacer = re.compile(r"([\d()_])\s*([+\-*%]|/{1,2})\s*([\d()_])") spaced_operators = r"\1 \2 \3" -operators_space_remover = re.compile(r"([\d\(\)])\s*(\*\*)\s*([\d\(\)])") +operators_space_remover = re.compile(r"([\d()_])\s*(\*\*)\s*([\d()_])") non_spaced_operators = r"\1\2\3" multiple_newlines_regex = re.compile(r"[\n|\r][\n|\s]{2,}") multiple_spaces_regex = re.compile(r"[^\S\n\r]{2,}") parentheses_regex_list = [ - {'pattern': re.compile(r"[^\S\n\r]*(\()[^\S\n\r]*(\d)"), + {'pattern': re.compile(r"[^\S\n\r]*(\()[^\S\n\r]*([\d_])"), 'replace': r" \1\2"}, - {'pattern': re.compile(r"(\d)[^\S\n\r]*(\))"), + {'pattern': re.compile(r"([\d_])[^\S\n\r]*(\))"), 'replace': r"\1\2"} ] @@ -214,7 +214,7 @@ def prettify_expression(expression): expression = multiple_spaces_regex.sub(' ', expression) expression = expression.replace('\n ', '\n') expression = expression.replace(' \n', '\n') - return expression + return expression.strip(' ') def get_calculator_keyboard(additional_data: list = None): @@ -360,7 +360,7 @@ def evaluate_expressions(bot: Bot, async def calculate_session(bot: Bot, record_id: int, language: str, - buffer_seconds: Union[int, float] = 1): + buffer_seconds: Union[int, float] = .5): # Wait until input ends queue = bot.shared_data['calc'][record_id] queue_len = None From 7ad4f48de18644488b81949fcf7b06c720e1ee8e Mon Sep 17 00:00:00 2001 From: Davte Date: Tue, 19 May 2020 15:12:38 +0200 Subject: [PATCH 9/9] Send long text messages as files --- davtelepot/__init__.py | 2 +- davtelepot/bot.py | 37 +++++++++++++++++++++++++++++++++++-- davtelepot/messages.py | 17 +++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/davtelepot/__init__.py b/davtelepot/__init__.py index fd511fd..4565090 100644 --- a/davtelepot/__init__.py +++ b/davtelepot/__init__.py @@ -11,7 +11,7 @@ __author__ = "Davide Testa" __email__ = "davide@davte.it" __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"] __license__ = "GNU General Public License v3.0" -__version__ = "2.5.22" +__version__ = "2.6.0" __maintainer__ = "Davide Testa" __contact__ = "t.me/davte" diff --git a/davtelepot/bot.py b/davtelepot/bot.py index 62f268c..fa4ca7e 100644 --- a/davtelepot/bot.py +++ b/davtelepot/bot.py @@ -52,6 +52,7 @@ from aiohttp import web from .api import TelegramBot, TelegramError from .database import ObjectWithDatabase from .languages import MultiLanguageObject +from .messages import davtelepot_messages from .utilities import ( async_get, escape_html_chars, extract, get_secure_key, make_inline_query_answer, make_lines_of_buttons, remove_html_tags @@ -82,6 +83,7 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject): _authorization_denied_message = None _unknown_command_message = None TELEGRAM_MESSAGES_MAX_LEN = 4096 + _max_message_length = 3 * (TELEGRAM_MESSAGES_MAX_LEN - 100) _default_inline_query_answer = [ dict( type='article', @@ -120,6 +122,7 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject): TelegramBot.__init__(self, token) ObjectWithDatabase.__init__(self, database_url=database_url) MultiLanguageObject.__init__(self) + self.messages['davtelepot'] = davtelepot_messages self._path = None self.preliminary_tasks = [] self.final_tasks = [] @@ -128,6 +131,7 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject): self._certificate = certificate self._max_connections = max_connections self._allowed_updates = allowed_updates + self._max_message_length = None self._session_token = get_secure_key(length=10) self._name = None self._telegram_id = None @@ -399,6 +403,17 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject): """ return self._allowed_updates or [] + @property + def max_message_length(self) -> int: + return self._max_message_length or self.__class__._max_message_length + + @classmethod + def set_class_max_message_length(cls, max_message_length: int): + cls._max_message_length = max_message_length + + def set_max_message_length(self, max_message_length: int): + self._max_message_length = max_message_length + @property def name(self): """Bot name.""" @@ -1178,6 +1193,8 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject): update = update['message'] if chat_id is None and 'chat' in update: chat_id = self.get_chat_id(update) + if user_record is None: + user_record = self.db['users'].find_one(telegram_id=chat_id) if reply_to_update and 'message_id' in update: reply_to_message_id = update['message_id'] if ( @@ -1195,13 +1212,29 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject): return parse_mode = str(parse_mode) if isinstance(text, dict): - if user_record is None: - user_record = self.db['users'].find_one(telegram_id=chat_id) text = self.get_message( update=update, user_record=user_record, messages=text ) + if len(text) > self.max_message_length: + message_file = io.StringIO(text) + message_file.name = self.get_message( + 'davtelepot', 'long_message', 'file_name', + update=update, + user_record=user_record, + ) + return await self.send_document( + chat_id=chat_id, + document=message_file, + caption=self.get_message( + 'davtelepot', 'long_message', 'caption', + update=update, + user_record=user_record, + ), + use_stored_file_id=False, + parse_mode='HTML' + ) text_chunks = self.split_message_text( text=text, limit=self.__class__.TELEGRAM_MESSAGES_MAX_LEN - 100, diff --git a/davtelepot/messages.py b/davtelepot/messages.py index a7247be..c54b016 100644 --- a/davtelepot/messages.py +++ b/davtelepot/messages.py @@ -1,5 +1,22 @@ """Default messages for bot functions.""" +davtelepot_messages = { + 'long_message': { + 'file_name': { + 'en': "Long message.html", + 'it': "Messaggio lungo.html", + }, + 'caption': { + 'en': "Long message\n\n" + "This message is too long to be sent as individual " + "messages.", + 'it': "Messaggio lungo\n\n" + "Questo messaggio è troppo lungo per essere inviato come " + "messaggi separati.", + } + } +} + default_admin_messages = { 'cancel': { 'button': {