I
I
ibr_982017-07-23 14:51:47
Python
ibr_98, 2017-07-23 14:51:47

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

1 answer(s)
M
Maks Pavelin, 2017-07-23
@ibr_98

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с, чтобы ВК не ругался на частые запросы.

Ps
This does not seem to be the most optimal solution, because. VK has a Long Poll server for messages and other things: https://vk.com/dev/using_longpoll

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question