async def add_keywords(bot, response, to_check): if not isinstance(response, Response) or response.empty: return full_text = response.full_text.lower() # Search for botbuilder pattern to see if this bot is a Manybot/Chatfuelbot/etc. if botbuilder_pattern.search(full_text): to_check.botbuilder = True # Search /start and /help response for global list of keywords to_add = [] for name in Keyword.get_distinct_names(exclude_from_bot=to_check): if re.search(r'\b{}\b'.format(name), full_text, re.IGNORECASE): to_add.append(name) to_add = [x for x in to_add if x not in settings.FORBIDDEN_KEYWORDS] if to_add: Keyword.insert_many([dict(name=k, entity=to_check) for k in to_add]).execute() msg = 'New keyword{}: {} for {}.'.format( 's' if len(to_add) > 1 else '', ', '.join(['#' + k for k in to_add]), to_check.str_no_md) bot.send_message(settings.BOTLIST_NOTIFICATIONS_ID, msg, timeout=40) log.info(msg)