def _parse_value(text, parameter_str): parameter_start = text.find(parameter_str) if parameter_start == -1: error("Ошибка парсинга") return "Не распознано" parameter_end = parameter_start + len(parameter_str) return text[parameter_end:text.find('\n', parameter_end)]
def handle_response(conn, timestamp, response): if response.error: error(timestamp=get_iso_time(), message=response.error) else: country_results = parse_result_lists_json(eval(response.body)) weather_obj = dict( map(lambda r: to_couchbase_document(weather_data(timestamp, r)), country_results)) debug(timestamp=get_iso_time(), message=weather_obj) Weather.store(conn, weather_obj)
def store(conn, data): try: conn.insert_multi(data) except CouchbaseError as exc: for k, res in exc.all_results.items(): if res.success: debug(timestamp=get_iso_time(), message="Insert successful") else: error(timestamp=get_iso_time(), message="Key {0} failed with error code {1}".format( k, res.rc))
def parse_bot_command(command_type, command_str): command_str += '\n' # перенос строки в конце для парсинга if command_type == Command.JABA: handled_enum = MyJaba handled_method = Jaba.set_my_jaba elif command_type == Command.GEAR: handled_enum = Gear handled_method = Jaba.set_gear else: error("Неизвестная команда жабабота") return stat_str = Parser._handle_stat(handled_enum, command_str) handled_method(helperInstance.get_person(), stat_str)
def fetch_weather(db_connection=None): if db_connection is None: error(timestamp=get_iso_time(), message="Couchbase connection error") else: request_timestamp = int(time()) url = "http://api.openweathermap.org/data/2.5/group" \ "?id={AREA}" \ "&units=metric" \ "&appid={API_KEY}".format(AREA=",".join(country_codes()), API_KEY=api_key()) http_cli = AsyncHTTPClient() http_cli.fetch( url, lambda resp: handle_response(db_connection, request_timestamp, resp))
from model.Command import command_dict from model.Jaba import Jaba for event in helperInstance.get_event_stream(): # Основной цикл if event.type == VkBotEventType.MESSAGE_NEW: helperInstance.set_chat_id(event.chat_id) message = event.message message_str = VKHelper.get_message_str(message) log.info(message_str) # кастомные команды if message_str.lower().startswith("дай инфо"): person_tag = message_str.lower().removeprefix("дай инфо") if person_tag: person_id = VKHelper.get_id_from_tag(person_tag) else: person_id = message.from_id VKHelper.write_msg(Jaba.get_full_info(person_id)) # команда пользователя if message_str.lower() in command_dict.values(): # если найдена валидная команда helperInstance.add_person(message.from_id) # то сохраняется id юзера вызвавшего команду # команда бота for bot_command in command_dict.keys(): if message_str.__contains__(bot_command.value) and VKHelper.is_message_from(message, JABABOT_ID): if helperInstance.get_queue_size() == 0: error("Ошибка идентификации пользователя") else: Parser.parse_bot_command(bot_command, message_str) break