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())
async def init(vk): plugin.temp_data["weather"] = {} if "clients" not in plugin.data: plugin.data["clients"] = [] schedule_coroutine(clear_cache())
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()
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))
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))
async def get_vk(vk): if not IS_GROUP: schedule_coroutine(add_friends(vk))
async def init(vk): plugin.temp_data["weather"] = {} schedule_coroutine(clear_cache())
async def init(vk): schedule_coroutine(send_out_periodically())
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))
async def get_vk(vk): schedule_coroutine(add_friends(vk))
async def get_vk(vk): if vk.user_api: schedule_coroutine(add_friends(vk))