Похоже, регулярные выражения и анонимные функции помогут вам.
Определяя свою лексику и семантику, вы должны захватить все строки; и проверьте, совпадает ли текст чата с операцией, которую вы хотите выполнить:
>> import re
>> input = "add 15 and 12 today"
>> regex = r'(add)\s+(\d+)\s+(and)\s+(\d+)'
>> extracted_words = re.findall(regex, input)
Обратите внимание, что вывод для extracted_words
будет выглядеть примерно так:
[('add', '15', 'and', '12')]
Если он совпадает, вы можете сделать что-то вроде этого:
if re.match(regex, input) is not None:
extracted_words = re.findall(regex, input)
# Function sum
# You can define whether your functions or use some defined everywhere
sum = lambda extracted_words: reduce(lambda x, y: x + y, map(lambda num: int(num), filter(lambda word: word.isdigit(), extracted_words)))
total_sum = sum(extracted_words[0])
...
[use your total_sum]