Example #1
0
 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)]
Example #2
0
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)
Example #3
0
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))
Example #4
0
 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)
Example #5
0
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))
Example #6
0
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