@I_am_Human

VK bot не отвечает на сообщение одному человеку?

Добрый вечер, я в этом деле новичок и написал вот такой код вк_бота:
import vk_api, time, random
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.utils import get_random_id

# Подключаем токен и longpoll
bh = vk_api.VkApi(token="token")
give = bh.get_api()
longpoll = VkLongPoll(bh)


# Создадим функцию для ответа на сообщения в лс группы
def blasthack(id, text):
    bh.method('messages.send', {'user_id': id, 'message': text, 'random_id': get_random_id()})
# Слушаем longpoll(Сообщения)
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        # Чтобы наш бот не слышал и не отвечал на самого себя
        if event.to_me:

            # Для того чтобы бот читал все с маленьких букв
            message = event.text.lower()
            # Получаем id пользователя
            id = event.user_id
            

            # Доисторическая логика общения на ифах
            # Перед вами структура сообщений на которые бот сможет ответить, elif можно создавать сколько угодно, if и else же могут быть только 1 в данной ситуации.
            # if - если, else - иначе(значит бот получил сообщение на которое не вызвана наша функция для ответа)

            
            if message == 'привет':
                blasthack(id, 'Привет, я бот!')
            
            elif message == 'как дела?':
                blasthack(id, 'Хорошо, а твои как?')
            elif message == "1":
                f = open("spam.txt", "r")
                lins = f.readlines()
                for lin in lins:
                    blasthack(id,  lin)
                     time.sleep(random.randint(6, 14))
            
                f.close()
            else:
                blasthack(id, 'Я вас не понимаю! :(')


Дело в том, что при выполнение данного условия первым пользователемelif message == "1": бот не видит второго пользователя. Как переделать код, чтобы все работало?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
WolfInChains
@WolfInChains
time.sleep блокирует выполнение. Используйте асинхронную библиотеку типа Vkbottle / Vkwave. Ну и соответственно asyncio.sleep.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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