Настройка

  1. Заведите себе личное сообщество
  2. Зайдите в
  3. Нажмите
  4. В окне укажите
  5. Нажмите «Создать». Не забудьте сохранить ключ.
  6. В разделе управления зайдите в
  7. В разделе управления зайдите в
  8. И включите все
  9. В разделе Настройки - Работа с API переключите Long Poll API с выключен на включен. Проверьте, что выпадающем меню Версия API выбрана максимально доступная версия (на картинке 5.50, текущая в районе 5.120):
  10. В вкладке Long Poll API включите все

Установка библиотеки

Выполните в терминале pip3 install vk_api

Пример кода бота

import vk_api # подключаем апи бота
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType 
from vk_api.utils import get_random_id
 
token = "тот ключ, который вы создали"
 
# подключаемся к сообществу
vk_session = vk_api.VkApi(token=token)
vk = vk_session.get_api()
 
# включаем бота в режим приема сообщений
longpoll = VkBotLongPoll(vk_session, "цифирки в адресе сообществе")
 
# Обрабтка сообщений
for event in longpoll.listen(): # вечно ждем новых сообщений
    if event.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло
        if event.obj.message["text"] != '':  # и оно не пустое
            if event.from_user:   # да еще и от пользователя
                user_sent = event.obj.message["text"] # возьмем его текст
                if user_sent == "ПРИВЕТ": # если текст равен "ПРИВЕТ"
                    vk.messages.send(
                        user_id=event.obj.message["from_id"],
                        random_id=get_random_id(),
                        message="И тебе привет") # Поздороваемся в ответ
                else:
                    vk.messages.send(
                        user_id=event.obj.message["from_id"],
                        random_id=get_random_id(),
                        message=user_sent) # иначе вернем сообщение назад

Пример кода бота с загрузкой сообщений

import vk_api # подключаем апи бота
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType 
from vk_api.utils import get_random_id
 
token = "тот ключ, который вы создали"
 
# подключаемся к сообществу
vk_session = vk_api.VkApi(token=token)
vk = vk_session.get_api()
 
 
 
# создаем функцию отправки сообщения
def post_image(api, user_id, image_path):
    upload_server = api.photos.getMessagesUploadServer(peer_id=user_id)
    upload_url = upload_server["upload_url"]
    files = {'photo': open(image_path, 'rb')}
    response = requests.post(upload_url, files=files)
    result = json.loads(response.text)
    upload_result = api.photos.saveMessagesPhoto(server=result["server"],
                                                 photo=result["photo"],
                                                 hash=result["hash"])
    return upload_result
 
# включаем бота в режим приема сообщений
longpoll = VkBotLongPoll(vk_session, "цифирки в адресе сообществе")
 
# Обрабтка сообщений
for event in longpoll.listen(): # вечно ждем новых сообщений
    if event.type == VkBotEventType.MESSAGE_NEW: # если сообщение пришло
        if event.obj.message["text"] != '':  # и оно не пустое
            if event.from_user:   # да еще и от пользователя
                user_sent = event.obj.message["text"] # возьмем его текст
                if user_sent == "ПРИВЕТ": # если текст равен "ПРИВЕТ"
                    upload_result = post_image(vk, user_id, "путь до картинки")   # выгружаем изображение в скрытый альбом группы и сохраняем ответ от вконтакта
                    vk.messages.send(
                        user_id=event.obj.message["from_id"],
                        random_id=get_random_id(),
                        message="И тебе привет", attachment="photo%s_%s" % (user_id, upload_result[0]["id"]) ) # Поздороваемся в ответ и приложим к сообщению картинку
                else:
                    vk.messages.send(
                        user_id=event.obj.message["from_id"],
                        random_id=get_random_id(),
                        message=user_sent) # иначе вернем сообщение назад

python/week23.txt · Последнее изменение: 15/02/2021 03:09 — Admin Adminovich
CC Attribution-Noncommercial 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0