Handle command aliases and text message update parsers
This commit is contained in:
parent
7ed430b264
commit
af64241d81
@ -6,6 +6,7 @@ camelCase methods mirror API directly, while snake_case ones act as middlewares
|
|||||||
|
|
||||||
# Standard library modules
|
# Standard library modules
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from collections import OrderedDict
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@ -112,6 +113,8 @@ class Bot(TelegramBot):
|
|||||||
}
|
}
|
||||||
self.individual_text_message_handlers = dict()
|
self.individual_text_message_handlers = dict()
|
||||||
self.commands = dict()
|
self.commands = dict()
|
||||||
|
self.command_aliases = dict()
|
||||||
|
self.text_message_parsers = OrderedDict()
|
||||||
self._unknown_command_message = None
|
self._unknown_command_message = None
|
||||||
self._under_maintenance = False
|
self._under_maintenance = False
|
||||||
self._allowed_during_maintenance = []
|
self._allowed_during_maintenance = []
|
||||||
@ -369,10 +372,25 @@ class Bot(TelegramBot):
|
|||||||
).group(0) # Get the first group of characters matching pattern
|
).group(0) # Get the first group of characters matching pattern
|
||||||
if command in self.commands:
|
if command in self.commands:
|
||||||
replier = self.commands[command]['function']
|
replier = self.commands[command]['function']
|
||||||
elif update['chat']['id'] > 0:
|
elif 'chat' in update and update['chat']['id'] > 0:
|
||||||
reply = self.unknown_command_message
|
reply = self.unknown_command_message
|
||||||
else: # Handle command aliases and text parsers
|
else: # Handle command aliases and text parsers
|
||||||
logging.info("#TODO alias and text parsers")
|
# Aliases are case insensitive: text and alias are both .lower()
|
||||||
|
for alias, function in self.command_aliases.items():
|
||||||
|
if text.startswith(alias.lower()):
|
||||||
|
replier = function
|
||||||
|
break
|
||||||
|
# Text message update parsers
|
||||||
|
for check_function, parser in self.text_message_parsers.items():
|
||||||
|
if (
|
||||||
|
parser['argument'] == 'text'
|
||||||
|
and check_function(text)
|
||||||
|
) or (
|
||||||
|
parser['argument'] == 'update'
|
||||||
|
and check_function(update)
|
||||||
|
):
|
||||||
|
replier = parser['function']
|
||||||
|
break
|
||||||
if replier:
|
if replier:
|
||||||
if asyncio.iscoroutinefunction(replier):
|
if asyncio.iscoroutinefunction(replier):
|
||||||
reply = await replier(update)
|
reply = await replier(update)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user