Answer the question
In order to leave comments, you need to log in
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, 'Я вас не понимаю! :(')
elif message == "1":
Answer the question
In order to leave comments, you need to log in
time.sleep
blocks execution. Use an asynchronous library like Vkbottle/Vkwave. Well, respectively asyncio.sleep
.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question