ibr_98
@ibr_98

Как сделать так, чтобы бот отправлял сообщения каждый раз, когда ему написал пользователь?

Всем привет!
Подскажите, пожалуйста, как сделать так, чтобы бот отправлял сообщения каждый раз, когда ему написал пользователь? я пока понятия не имею как это реализовать, у меня бот отправляет сообщения только в том случае, если я запущу код, получается каждый раз нужно запускать код..
спасибо
вот код:
//импорт библиотеки
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="Здравствуй!")
  • Вопрос задан
  • 1842 просмотра
Решения вопроса 1
iMukcep
@iMukcep
https://habrahabr.ru/post/319178/ - вот статья по работе с этой библиотекой, почитайте. Там под спойлером есть пример кода, немного переделаем, и вот - пробуйте:
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с, чтобы ВК не ругался на частые запросы.

P.s
Это вроде не самое оптимальное решение, т.к. у ВК для сообщений и прочего есть Long Poll сервер: https://vk.com/dev/using_longpoll
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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