Set default keyboard at setup
This commit is contained in:
parent
8f261a4cfa
commit
4ae826f52c
@ -13,7 +13,7 @@ from aiohttp import web
|
|||||||
|
|
||||||
# Project modules
|
# Project modules
|
||||||
from api import TelegramBot, TelegramError
|
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
|
# Do not log aiohttp `INFO` and `DEBUG` levels
|
||||||
logging.getLogger('aiohttp').setLevel(logging.WARNING)
|
logging.getLogger('aiohttp').setLevel(logging.WARNING)
|
||||||
@ -124,6 +124,8 @@ class Bot(TelegramBot):
|
|||||||
self._authorization_denied_message = None
|
self._authorization_denied_message = None
|
||||||
# Default authorization function (always return True)
|
# Default authorization function (always return True)
|
||||||
self.authorization_function = lambda update, authorization_level: True
|
self.authorization_function = lambda update, authorization_level: True
|
||||||
|
self.default_reply_keyboard_elements = []
|
||||||
|
self._default_keyboard = dict()
|
||||||
return
|
return
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -245,6 +247,14 @@ class Bot(TelegramBot):
|
|||||||
return self._authorization_denied_message
|
return self._authorization_denied_message
|
||||||
return self.__class__._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):
|
async def message_router(self, update):
|
||||||
"""Route Telegram `message` update to appropriate message handler."""
|
"""Route Telegram `message` update to appropriate message handler."""
|
||||||
for key, value in update.items():
|
for key, value in update.items():
|
||||||
@ -733,6 +743,33 @@ class Bot(TelegramBot):
|
|||||||
del self.individual_text_message_handlers[identifier]
|
del self.individual_text_message_handlers[identifier]
|
||||||
return
|
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):
|
async def webhook_feeder(self, request):
|
||||||
"""Handle incoming HTTP `request`s.
|
"""Handle incoming HTTP `request`s.
|
||||||
|
|
||||||
@ -774,6 +811,7 @@ class Bot(TelegramBot):
|
|||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
"""Make bot ask for updates and handle responses."""
|
"""Make bot ask for updates and handle responses."""
|
||||||
|
self.set_default_keyboard()
|
||||||
if not self.webhook_url:
|
if not self.webhook_url:
|
||||||
asyncio.ensure_future(self.get_updates())
|
asyncio.ensure_future(self.get_updates())
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user