Set default keyboard at setup
This commit is contained in:
parent
8f261a4cfa
commit
4ae826f52c
@ -13,7 +13,7 @@ from aiohttp import web
|
||||
|
||||
# Project modules
|
||||
from api import TelegramBot, TelegramError
|
||||
from utilities import get_secure_key
|
||||
from utilities import get_secure_key, make_lines_of_buttons
|
||||
|
||||
# Do not log aiohttp `INFO` and `DEBUG` levels
|
||||
logging.getLogger('aiohttp').setLevel(logging.WARNING)
|
||||
@ -124,6 +124,8 @@ class Bot(TelegramBot):
|
||||
self._authorization_denied_message = None
|
||||
# Default authorization function (always return True)
|
||||
self.authorization_function = lambda update, authorization_level: True
|
||||
self.default_reply_keyboard_elements = []
|
||||
self._default_keyboard = dict()
|
||||
return
|
||||
|
||||
@property
|
||||
@ -245,6 +247,14 @@ class Bot(TelegramBot):
|
||||
return self._authorization_denied_message
|
||||
return self.__class__._authorization_denied_message
|
||||
|
||||
@property
|
||||
def default_keyboard(self):
|
||||
"""Get the default keyboard.
|
||||
|
||||
It is sent when reply_markup is left blank and chat is private.
|
||||
"""
|
||||
return self._default_keyboard
|
||||
|
||||
async def message_router(self, update):
|
||||
"""Route Telegram `message` update to appropriate message handler."""
|
||||
for key, value in update.items():
|
||||
@ -733,6 +743,33 @@ class Bot(TelegramBot):
|
||||
del self.individual_text_message_handlers[identifier]
|
||||
return
|
||||
|
||||
def set_default_keyboard(self, keyboard='set_default'):
|
||||
"""Set a default keyboard for the bot.
|
||||
|
||||
If a keyboard is not passed as argument, a default one is generated,
|
||||
based on aliases of commands.
|
||||
"""
|
||||
if keyboard == 'set_default':
|
||||
buttons = [
|
||||
dict(
|
||||
text=x
|
||||
)
|
||||
for x in self.default_reply_keyboard_elements
|
||||
]
|
||||
if len(buttons) == 0:
|
||||
self._default_keyboard = None
|
||||
else:
|
||||
self._default_keyboard = dict(
|
||||
keyboard=make_lines_of_buttons(
|
||||
buttons,
|
||||
(2 if len(buttons) < 4 else 3) # Row length
|
||||
),
|
||||
resize_keyboard=True
|
||||
)
|
||||
else:
|
||||
self._default_keyboard = keyboard
|
||||
return
|
||||
|
||||
async def webhook_feeder(self, request):
|
||||
"""Handle incoming HTTP `request`s.
|
||||
|
||||
@ -774,6 +811,7 @@ class Bot(TelegramBot):
|
||||
|
||||
def setup(self):
|
||||
"""Make bot ask for updates and handle responses."""
|
||||
self.set_default_keyboard()
|
||||
if not self.webhook_url:
|
||||
asyncio.ensure_future(self.get_updates())
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user