После установки модуля vk_api сделайте следующее:
- Импортируйте необходимые классы и функции:
from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
import time
- Создайте объекты и переменные, с которыми будете работать всё время:
vk_session = VkApi(token='ТОКЕН ВАШЕГО БОТА')
longpoll = VkBotLongPoll(vk_session, АЙДИ ВАШЕГО БОТА (СООБЩЕСТВА ВКОНТАКТЕ))
bot_name = "рыбка" # никнейм для обращения к боту
- Создайте функцию для отправки сообщения:
def sender(text, peer_id):
vk_session.method('messages.send', {'random_id':get_random_id(), 'message':text, 'peer_id': peer_id, } )
где random_id - уникальный идентификатор сообщения бота, message - текст сообщения, а peer_id - айди диалога (хоть личные сообщения, хоть многопользовательская беседа)
- В бесконечном цикле с обработкой ошибок (ВКонтакте перезагружает сервера время от времени, из-за чего бот будет "отваливаться" - будем ждать 30 секунд и пробовать снова) будем отправлять запрос на получение новых событий и принимать их при наличии таковых. Весь код засунем в функцию main и будем вызывать её при запуске программы:
def main():
while True:
try:
for event in longpoll.listen():
# если бот получил новое сообщение
if event.type == VkBotEventType.MESSAGE_NEW and bot_name in event.obj.text.lower():
# если сообщение из чата
if event.from_chat:
sender("Привет! Какая классная у вас беседа тут!", event.obj.peer_id)
# если сообщение от пользователя
elif event.from_user:
sender("Привет! О чём поговорим?", event.obj.peer_id)
except:
print("\n Попытка восстановить соединение через 30 секунд \n")
time.sleep(30)
if __name__ == "__main__":
main()
P.S.: предварительно сгенерируйте ключ доступа, включите Long Poll API и настройте тип получаемых событий. Лично я пользовался версией Long Poll API 5.85, а так как синтаксис ответа от ВК может отличаться от версии к версии API, то при появлении странных ошибок попробуйте переключиться на неё.
P.P.S.: потом посмотрите на внутренности объекта event, чтобы понять что да как там и понять как лучше обрабатывать события.