def get_id_from_message_with_web_link(message): result = re.search(__project_id_pattern, message) project_id = result.group(1) api_link = str(__blueprint_to_api_request_by_project_id).format(project_id) __project_id_to_link[project_id] = api_link logger.warning('For projectId {0} stored {1}'.format(project_id, api_link)) return project_id
def get_info(bot, update): message_from_update = update.message.text logger.warning("Получено {0}".format(message_from_update)) chat_id = update.message.chat_id if 'help' in message_from_update: project_hint = '' if update.message.chat_id in chat_id_to_project_id: if not chat_id_to_project_id.get(update.message.chat_id): project_hint = '\nНа текущий момент установлен проект: {}'.format( chat_id_to_project_id.get(update.message.chat_id)) bot.send_message( chat_id=chat_id, text= 'Команда /get_info для выведения текущий основной статистики проекта, сначала нужно ' 'установить проект для слежения через /set <ссылка>, а потом можно использовать эту ' 'команду для получения статистики по ручному запросу.{}'.format( project_hint)) elif update.message.chat_id not in chat_id_to_project_id: bot.send_message( chat_id=chat_id, text= 'Пожалуйста задайте предварительно проект, который хотите отслеживать' ) else: project_id = chat_id_to_project_id.get(chat_id) project = crApi.get_project_via_api_by_id(project_id) title = project["title"] founded_sum = project["funded_sum"] near_goal = project["near_goal"]["target_sum"] bot.send_message(chat_id=chat_id, text='Проект: {0}\n' 'Текущая сумма: {1}\n' 'Ближайшая цель: {2}'.format(title, founded_sum, near_goal))
def set_link(bot, update): message_from_update = update.message.text logger.warning("Получено {0}".format(message_from_update)) chat_id = update.message.chat_id if 'help' in message_from_update or not message_from_update: bot.send_message( chat_id=chat_id, text='Команда /set <ссылка> предназначена для установки ссылки ' 'на проект на https://crowdrepublic.ru/ для ' 'мониторинга. После установки проект привязывается к ' 'данному чату и вся транслирующаяся информация будет ' 'исключительно о нем. Но через /set всегда можно ' 'переставить проект в любой момент.') elif 'https' not in message_from_update: bot.send_message( chat_id=chat_id, text= 'Простите, но ссылка не кажется мне валидной, не могли бы вы проверить? Она должна ' 'выглядеть примерно так: ' 'https://crowdrepublic.ru/project/1017400/Mutanty-Tochka-otschyota' ) else: project_id = crApi.get_id_from_message_with_web_link( message_from_update) chat_id_to_project_id[chat_id] = project_id project = crApi.get_project_via_api_by_id(project_id) bot.send_message( chat_id=update.message.chat_id, text='Установлен проект: {0}\nТекущая сумма: {1}'.format( project["title"], project["funded_sum"])) logger.warning('{0} link -> project id: {1}'.format( message_from_update, project_id))
def get_project_via_api_by_id(project_id): logger.warning('Try get request with projectId: {}'.format(project_id)) api_link = __project_id_to_link.get(project_id) logger.warning('Link for it: {}'.format(api_link)) r = requests.get(api_link, headers=__headers) result = re.match(__crowd_api_pattern, r.text) text = result.group(1) # убираем левые xml-скобки json_resp = json.loads(text) logger.warning("SUCCESS") return json_resp["Project"]
def start(bot, update): logger.warning("start") bot.send_message(chat_id=update.message.chat_id, text='Привет! Это обычный пинг! Просто проверка связи.')
def help(bot, update): logger.warning("help") bot.send_message(chat_id=update.message.chat_id, text=help_message)