total4c
@total4c
Говнокодер

Инициализация лонгполла для каждого аккаунта?

Доброе утро, сделал авторизацию под несколькими аккаунтами вк, всё работает прекрасно, правда не знаю как инициализировать лонгпол для каждого из них и обрабатывать события, пробовал делать так:
Инициализирует только для первого

import config as c

with open('accounts.json', 'r') as file:
    data = json.loads(file.read())
    accounts = data['accounts']
    for account in accounts:
        vk = vk_api.VkApi(token=account["token"], captcha_handler=captcha_handler)
        c.vk_apis.append(vk)

def main():
    for i in c.vk_apis:
        longpoll = VkLongPoll(i)

if __name__ == '__main__':
    main()
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
Если сильно хочется в одном файле запускать сразу для нескольких групп бота, то вам потоки нужны, примерно так:
from threading import Thread


def bot(longpoll, vk_api):
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            message = 'Hello, World'
            vk_api.messages.send(user_id=event.object.from_id, random_id=random.getrandbits(32), message=message)


def bot_init(account):
    vk = vk_api.VkApi(token=account['token'])
    vk_api = vk.get_api()
    longpoll = VkBotLongPoll(vk, account['group_id'])
    bot(longpoll, vk_api)


def main():
    with open('accounts.json', 'r') as file:
        data = json.loads(file.read())
        accounts = data['accounts']
    for account in accounts:
        Thread(target=bot_init, args=[account]).start()


if __name__ == '__main__':
    main()

Я это не тестировал, просто как пример.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы