Сообщество готово, токен на руках. Оживим его кодом. Соберём эхо-бота, который повторяет сообщения, прямо как наш самый первый бот в Telegram. Заодно увидишь: каркас другой, а суть та же.
После урока сможешь: объяснить тему «Эхо-бот для ВКонтакте» и выполнить связанный с ней учебный шаг без подсказки.
Новая библиотека
Для ботов ВК возьмём библиотеку vk_api. Поставь её: pip install vk_api. И положи токен сообщества в config.py, рядом с прежним. Назови его, например, VK_TOKEN, чтобы не путать с токеном Telegram.
Подключаемся к ВК
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from config import VK_TOKEN
vk_session = vk_api.VkApi(token=VK_TOKEN)
longpoll = VkLongPoll(vk_session)
vk_api.VkApi(token=VK_TOKEN) это вход в ВК по твоему ключу, как TeleBot(TOKEN) в Telegram. VkLongPoll(vk_session) это слушатель новых сообщений, аналог поллинга.
Отправляем ответ
def otpravit(user_id, text):
vk_session.method("messages.send", {
"user_id": user_id,
"message": text,
"random_id": 0,
})
vk_session.method("messages.send", {...}) это «вызови у ВК метод отправки сообщения». В фигурных скобках параметры: кому (user_id), что (message) и random_id. Последнее это защита ВК от случайных повторов, для учебного бота смело ставим 0.
Главное отличие: цикл вместо декораторов
Вот тут самая заметная разница. В Telegram мы вешали обработчики через значок @ над функциями. Во ВКонтакте обработчиков-табличек нет. Вместо них один цикл, который крутится и ловит события:
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
otpravit(event.user_id, event.text)
for event in longpoll.listen()это бесконечный цикл: на каждое новое событие он даёт намevent, описание того, что случилось.if event.type == VkEventType.MESSAGE_NEW and event.to_meэто фильтр: «если это новое сообщение и оно пришло боту». Похоже на наши фильтры обработчиков.event.user_idэто кто написал,event.textэто что написал. Это близнецыmessage.chat.idиmessage.textиз Telegram.
Полный код
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from config import VK_TOKEN
vk_session = vk_api.VkApi(token=VK_TOKEN)
longpoll = VkLongPoll(vk_session)
def otpravit(user_id, text):
vk_session.method("messages.send", {
"user_id": user_id,
"message": text,
"random_id": 0,
})
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
otpravit(event.user_id, event.text)
Запусти программу. Зайди в своё сообщество ВК и напиши ему в личку. Бот повторит твоё сообщение. Тот же эхо-бот, что и в Telegram, только в новой среде.
Контрольный вопрос. Какой библиотекой пишут ботов для ВКонтакте? Напиши имя (как в pip install).
Подсказка: pip install ____
Онлайн-проверка ответа появится позже
Задание. Поставь vk_api, положи токен сообщества в config.py, собери эхо-бота из урока и проверь его в личке сообщества. Напиши тремя пунктами, что общего и что разного у бота ВК и бота Telegram.
Подсказка: Подключение через VkApi + VkLongPoll, ответ через method(‘messages.send’), события ловишь в цикле for event in longpoll.listen().
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Онлайн-проверка ответа появится позже
Зачёт, если:
✅ vk_api установлен, токен сообщества в config.py, эхо-бот отвечает в личке сообщества;
✅ тремя пунктами названо, что общего и что разного у бота ВК и бота Telegram.
