Exemple #1
0
    def __init__(self, proxy: list = None):
        self.req_kwargs = {}
        if proxy:
            url, username, password, encoding = *proxy, None, None, None

            self.req_kwargs["proxy"] = url

            if username:
                self.req_kwargs["proxy_auth"] = aiohttp.BasicAuth(
                    username, password if password else "",
                    encoding if encoding else "latin1")

        self.session = aiohttp.ClientSession()

        self.queue = asyncio.Queue()
        self.requests = 0

        self.username = ""
        self.password = ""
        self.app_id = -1
        self.scope = -1

        self.token = ""

        self.retry = 0

        schedule_coroutine(self.update_requests())
        schedule_coroutine(self.process_queue())
Exemple #2
0
async def init(vk):
    plugin.temp_data["weather"] = {}

    if "clients" not in plugin.data:
        plugin.data["clients"] = []

    schedule_coroutine(clear_cache())
Exemple #3
0
    def __init__(self):
        self.queue_group = asyncio.Queue()
        self.queue_user = asyncio.Queue()

        schedule_coroutine(self.handle_queues())

        self.init_settings()
        self.vk_init()
        self.plugin_init()
Exemple #4
0
async def setup_counter(vk):
    plugin.temp_data['s'] = load_settings(plugin)

    plugin.temp_data['start_time'] = datetime.datetime.now()

    plugin.temp_data['24h'] = datetime.datetime.now()

    plugin.temp_data['messages'] = 0
    plugin.temp_data['messages_24h'] = 0

    plugin.temp_data['commands'] = {}

    if plugin.temp_data['s']['set_status']:
        schedule_coroutine(update_counters(vk))
Exemple #5
0
    async def run(self, event_loop):
        """Главная функция бота - тут происходит ожидание новых событий (сообщений)"""
        self.event_loop = event_loop  # Нужен для шедулинга функций

        await self.init_long_polling()
        session = aiohttp.ClientSession(loop=event_loop)
        while True:
            try:
                resp = await session.get(self.longpoll_server,
                                         params=self.longpoll_values)
            except (aiohttp.ClientOSError, asyncio.TimeoutError):
                # У меня были такие ошибки на Manjaro 16.10.3 Fringilla
                # ВК почему-то присылал сервер, к которому нельзя подключиться
                hues.warn(
                    'Сервер Long Polling не отвечает, подключаюсь к другому...'
                )
                await self.init_long_polling()
                continue
            """
            Тут не используется resp.json() по простой причине:
            aiohttp будет писать warning'и из-за плохого mimetype
            Неизвестно, почему он у ВК такой - text/javascript; charset=utf-8
            """
            events_text = await resp.text()
            try:
                events = json.loads(events_text)
            except ValueError:
                # В JSON ошибка, или это вовсе не JSON
                continue

            # Проверяем на код ошибки
            failed = events.get('failed')
            if failed:
                err_num = int(failed)
                # Код 1 - Нам нужно обновить timestamp
                if err_num == 1:
                    self.longpoll_values['ts'] = events['ts']
                # Коды 2 и 3 - нужно запросить данные нового
                # Long Polling сервера
                elif err_num in (2, 3):
                    await self.init_long_polling(err_num)
                continue

            # Обновляем время, чтобы не приходили старые события
            self.longpoll_values['ts'] = events['ts']
            for event in events['updates']:
                schedule_coroutine(self.check_event(event))
Exemple #6
0
 async def get_vk(vk):
     if not IS_GROUP:
         schedule_coroutine(add_friends(vk))
Exemple #7
0
async def init(vk):
    plugin.temp_data["weather"] = {}

    schedule_coroutine(clear_cache())
Exemple #8
0
async def init(vk):
    schedule_coroutine(send_out_periodically())
Exemple #9
0
async def get_vk(vk):
    plugin.temp_data['s'] = load_settings(plugin)

    if not vk.tokens and plugin.temp_data['s']['accept']:
        schedule_coroutine(add_friends(vk))
Exemple #10
0
 async def get_vk(vk):
     schedule_coroutine(add_friends(vk))
Exemple #11
0
 async def get_vk(vk):
     if vk.user_api:
         schedule_coroutine(add_friends(vk))