From a1c4e10dae626e45f2d5fcd7952c81837a1d7bb5 Mon Sep 17 00:00:00 2001 From: Davte Date: Sat, 24 Nov 2018 18:38:27 +0100 Subject: [PATCH] Define get_message method of Bot object. --- davtelepot/custombot.py | 53 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/davtelepot/custombot.py b/davtelepot/custombot.py index e66fa00..7dadf0c 100644 --- a/davtelepot/custombot.py +++ b/davtelepot/custombot.py @@ -199,6 +199,7 @@ class Bot(telepot.aio.Bot, Gettable): self.chat_actions = dict( pinned=MyOD() ) + self.messages = dict() @property def name(self): @@ -466,6 +467,58 @@ class Bot(telepot.aio.Bot, Gettable): self.last_sending_time['absolute'] = datetime.datetime.now() return + def get_message(self, *fields, update=None, language=None): + """Given a list of strings (`fields`), return proper message. + + If `language` is not passed, it is extracted from `update`. + Fall back to English message if language is not available. + """ + if ( + language is None + and update is not None + and type(update) is dict + and 'from' in update + and 'language_code' in update['from'] + ): + language = update['from']['language_code'] + if language is None: + language = 'en' + result = self.messages + for field in fields: + if field not in result: + logging.error( + "Please define self.message{f}".format( + f=''.join( + '[\'{field}\']'.format( + field=field + ) + for field in fields + ) + ) + ) + return "Invalid message!" + result = result[field] + if language not in result: + language = extract( + language, + ender='-' + ) + if language not in result: + language = 'en' + if language not in result: + logging.error( + "Please define self.message{f}['en']".format( + f=''.join( + '[\'{field}\']'.format( + field=field + ) + for field in fields + ) + ) + ) + return "Invalid message!" + return result[language] + async def on_inline_query(self, update): """Schedule handling of received inline queries.