Exemple #1
0
async def lp_startup():
    api = UserApi.get_current()
    text = f'IDM multi LP запущен\n' \
           f'Текущая версия: v{const.__version__}'
    version_rest = requests.get(const.VERSION_REST).json()

    if version_rest['version'] != const.__version__:
        text += f"\n\n Доступно обновление {version_rest['version']}\n" \
                f"{version_rest['description']}\n" \
                f"{const.GITHUB_LINK}"

    await api.messages.send(peer_id=await api.user_id,
                            random_id=0,
                            message=text)
Exemple #2
0
    async def _lp_startup():
        api = UserApi.get_current()
        text = f'LP Started!\n' \
               f'Loading'
        version_rest = requests.get(const.VERSION_REST).json()

        if version_rest['version'] != const.__version__:
            text += f"\n\n Доступно обновление {version_rest['version']}\n" \
                    f"{version_rest['description']}\n" \
                    f"{const.GITHUB_LINK}"

        await api.messages.send(peer_id=await api.user_id,
                                random_id=0,
                                message=text)
        await check_ping(database.secret_code)
Exemple #3
0
async def send_request(request_data: dict):
    logger.logger.debug(f"Send request to server with data: {request_data}")
    api = UserApi.get_current()
    message = ""
    async with aiohttp.ClientSession(headers={"User-Agent": const.APP_USER_AGENT}) as session:
        async with session.post(const.CALLBACK_LINK, json=request_data) as resp:
            if resp.status != 200:
                message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил кодом {resp.status}."
            else:
                data_json = await resp.json()
                if data_json['response'] == 'ok':
                    return
                elif data_json['response'] == "error":
                    if data_json.get('error_code') == 1:
                        message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Пустой запрос>>"
                    elif data_json.get('error_code') == 2:
                        message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Неизвестный тип сигнала>>"
                    elif data_json.get('error_code') == 3:
                        message = (
                            f"⚠ Ошибка сервера IDM Multi. "
                            f"Сервер, ответил: <<Пара пользователь/секрет не найдены>>"
                        )
                    elif data_json.get('error_code') == 4:
                        message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Беседа не привязана>>"
                    elif data_json.get('error_code') == 10:
                        message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Не удалось связать беседу>>"
                    else:
                        message = (
                            f"⚠ Ошибка сервера IDM Multi. "
                            f"Сервер, ответил: <<Ошибка #{data_json.get('error_code')}>>"
                        )
                elif data_json['response'] == "vk_error":
                    message = (
                        f"⚠ Ошибка сервера IDM Multi. "
                        f"Сервер, ответил: "
                        f"<<Ошибка VK #{data_json.get('error_code')} {data_json.get('error_message', '')}>>"
                    )
    if message:
        await api.messages.send(
            random_id=0,
            peer_id=await api.user_id,
            message=message
        )
Exemple #4
0
    async def _lp_startup():
        api = UserApi.get_current()
        text = f'IDM multi LP запущен\n' \
               f'Текущая версия: v{const.__version__}'
        version_rest = requests.get(const.VERSION_REST).json()

        if version_rest['version'] != const.__version__:
            text += f"\n\n Доступно обновление {version_rest['version']}\n" \
                    f"{version_rest['description']}\n" \
                    f"{const.GITHUB_LINK}"

        await api.messages.send(
            peer_id=await api.user_id,
            random_id=0,
            message=text
        )

        async with aiohttp.ClientSession(headers={"User-Agent": const.APP_USER_AGENT}) as session:
            async with session.post("https://irisduty.ru/api/dutys/get_lp_info/", json={'access_token': database.tokens[0]}) as resp:
                response = await resp.json()
                if 'error' in response:
                    await api.messages.send(
                        peer_id=await api.user_id,
                        random_id=0,
                        message=f"⚠ Ошибка: {response['error']['detail']}"
                    )
                    raise KeyboardInterrupt()
                else:
                    if not response['response']['is_active']:
                        await api.messages.send(
                            peer_id=await api.user_id,
                            random_id=0,
                            message=f"⚠ Ошибка: дежурный не активен"
                        )
                        raise KeyboardInterrupt()
                    database.secret_code = response['response']['secret_code']
                    database.save()

        await check_ping(database.secret_code)
Exemple #5
0
async def send_request(request_data: dict):
    global session
    api = UserApi.get_current()

    if session.closed:
        session = aiohttp.ClientSession()

    message = ""
    async with session.post(const.CALLBACK_LINK, json=request_data) as resp:
        if resp.status != 200:
            message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил кодом {resp.status}."
        else:
            data_json = await resp.json()
            if data_json['response'] == 'ok':
                return
            elif data_json['response'] == "error":
                if data_json.get('error_code') == 1:
                    message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Пустой запрос>>"
                elif data_json.get('error_code') == 2:
                    message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Неизвестный тип сигнала>>"
                elif data_json.get('error_code') == 3:
                    message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Пара пользователь/секрет не найдены>>"
                elif data_json.get('error_code') == 4:
                    message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Беседа не привязана>>"
                elif data_json.get('error_code') == 10:
                    message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Не удалось связать беседу>>"
                else:
                    message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Ошибка #{data_json.get('error_code')}>>"
            elif data_json['response'] == "vk_error":
                message = f"⚠ Ошибка сервера IDM Multi. Сервер, ответил: <<Ошибка VK #{data_json.get('error_code')} " \
                          f"{data_json.get('error_message', '')}>>"
    if message:
        await api.messages.send(
            random_id=0,
            peer_id=await api.user_id,
            message=message
        )
Exemple #6
0
    def __init__(
        self,
        tokens: Token = None,
        *,
        login: str = None,
        password: str = None,
        user_id: int = None,
        debug: typing.Union[str, bool] = True,
        loop: asyncio.AbstractEventLoop = None,
        expand_models: bool = True,
        mobile: bool = False,
        log_to_path: typing.Union[str, bool] = None,
        vbml_patcher: vbml.Patcher = None,
        mode: int = 234,
        only_asyncio_loop: bool = False,
        **context,
    ):
        self.__tokens = [tokens] if isinstance(tokens, str) else tokens

        self.context: dict = context

        if uvloop is not None:
            if not only_asyncio_loop:
                asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

        if login and password:
            self.__tokens = self.get_tokens(login, password)

        self.loop = loop or asyncio.get_event_loop()
        self.__debug: bool = debug
        self._api: UserApi = UserApi(self.__tokens)
        self.mode = mode

        self._expand_models: bool = expand_models
        self._patcher: vbml.Patcher = vbml_patcher or vbml.Patcher(
            pattern="^{}$")

        self.user_id: typing.Optional[int] = user_id or self.get_id_by_token(
            self.__tokens[0])

        self._api.user_id = user_id
        self.error_handler: VKErrorHandler = DefaultErrorHandler()
        UserApi.set_current(self._api)
        VKErrorHandler.set_current(self.error_handler)

        self.on: UserHandler = UserHandler()
        self.branch: ABCBranchGenerator = DictBranch()
        self.middleware: MiddlewareExecutor = MiddlewareExecutor()
        self.error_handler: VKErrorHandler = DefaultErrorHandler()
        self.deconstructed_handle: UserProcessor = UserProcessor(
            self.user_id, expand_models=expand_models)

        self._stop: bool = False
        self.status = UserStatus()

        if isinstance(debug, bool):
            debug = "INFO" if debug else "ERROR"

        self.logger = LoggerLevel(debug)
        logger.remove()
        logger.add(
            sys.stderr,
            colorize=True,
            format="<level>[<blue>VKBottle</blue>] {message}</level>",
            filter=self.logger,
            level=0,
            enqueue=mobile is False,
        )
        if log_to_path:
            logger.add(
                "log_user_{time}.log" if log_to_path is True else log_to_path,
                rotation="20 MB",
            )

        logger.info("Using JSON_MODULE - {}".format(USAGE))
        logger.info("Using asyncio loop - {}".format(
            asyncio.get_event_loop_policy().__class__.__module__))
Exemple #7
0
from vkbottle.api import UserApi

api = UserApi.get_current()


def get_params(obj: dict) -> dict:
    return {k: v for k, v in obj.items() if v is not None and k != "params"}


async def edit(peer_id: int, msg_id: int, text: str, **params):
    locals().update(params)
    return await api.messages.edit(**get_params(locals()))
Exemple #8
0
 def api(self) -> UserApi:
     return UserApi.get_current()