Answer the question
In order to leave comments, you need to log in
How to make the bot send messages every time a user writes to it?
Hello!
Can you please tell me how to make the bot send messages every time a user writes to it? I still have no idea how to implement this, my bot sends messages only if I run the code, it turns out that every time I need to run the code ..
thanks
, here is the code:
//импорт библиотеки
import vk
//авторизация все дела..
session = vk.AuthSession(app_id="", user_login="", user_password="", scope="messages, status, wall")
vk = vk.API(session)
//переменные, хранящие методы получения и отправки сообщений
mg = vk.messages.get(count="1")
ms = vk.messages.send
//условие
if mg[1]["body"]:
ms(user_id=mg[1]['uid'], message="Здравствуй!")
Answer the question
In order to leave comments, you need to log in
https://habrahabr.ru/post/319178/ - here is an article on working with this library, read it. There, under the spoiler, there is a code example, we will redo it a bit, and now - try it:
import vk
from time import sleep
def get_msgs():
mg = vk.messages.getDialogs(count="1", unread='1', v='5.14') # Вместо messages.get используем messages.getDialogs, т.к. это и правильней и логичней. За подробностями - лезем в vk.com/dev
if mg['count'] > 0: # Если у нас есть непрочитанные сообщения, то надо бы на них ответить.
user_id = mg['items'][0]['message']['user_id'] # Выковыриваем из json-а uID написавшего, а так же текст сообщения (для лога)
msg_body = mg['items'][0]['message']['body']
print("Боту написали сообщение! [Infa]: uID: " + str(user_id) + " Текст сообщения: " + msg_body) # Отчёт о работе.
vk.messages.send(user_id=user_id, message="Здравствуй!") # Собственно, отвечаем.
if __name__ == '__main__':
session = vk.AuthSession(app_id=" ", user_login="", user_password="", scope="messages, wall") # Дальше всё понятно.
vk = vk.API(session)
while True:
get_msgs()
sleep(5) # Период обновления - 5с, чтобы ВК не ругался на частые запросы.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question