I
I
I_am_Human2021-11-08 20:51:22
Python
I_am_Human, 2021-11-08 20:51:22

VK bot does not respond to a message to one person?

Good evening, I'm new to this business and wrote the following vk_bot code:

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, 'Я вас не понимаю! :(')


The fact is that when this condition is met by the first user, the bot does not see the second user. How to change the code so that everything works? elif message == "1":

Answer the question

In order to leave comments, you need to log in

1 answer(s)
W
WolfInChains, 2021-11-08
@I_am_Human

time.sleepblocks execution. Use an asynchronous library like Vkbottle/Vkwave. Well, respectively asyncio.sleep.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question