Найти тему
Свой Айтишник

Python: чат бот для сообщества VK (Вконтакте) + бонус (отправка в Telegram)

Всем привет!

В этой статье напишем чат бота для #Вконтакте который будет отвечать нашим клиентам в #VK заранее заготовленные фразы и отправлять диалог нам в #telegram

Например когда мы спим или очень заняты.

Как всегда код будет писаться на языке #Python

Бота я назвал "Кузя" =)

Для начала нужно что бы у Вас была группа или сообщество в VK и установлен python.

1. Создадим 3 файла в папке vk_bot

kyzya.py

token_vk.py

base.py

2. Создадим папку log куда будет сохраняться весь диалог бота и клиента.

Корень папки vk_bot
Корень папки vk_bot

3. Откроем файл base.py - запишем в него переменные на которые будет реагировать Кузя. А в сами переменные передадим список слов, список может быть любой на ваше усмотрение.

Переменные со списком слов или фраз на которые реагирует бот
Переменные со списком слов или фраз на которые реагирует бот

4. Откроем файл token_vk.py - запишем в него переменные токенов от Вконтатке и Телеграма. Токен у каждого свой!

Как получи токены я писал в предыдущих статьях на моём канале.
Переменные с токеном
Переменные с токеном

Установим необходимые библиотеки для работы чат бота, в этой папке откроем командную строку и пропишем команды:

pip install <название библиотеки>

Библиотеки: time, vk_api, vk, random2, json, datetime, re, requests

Например что бы установить библиотеку time нужно в командной строке ввести:

pip install time

И другие библиотеки по той же аналогии.

5. После установки всех библиотек откроем файл kyzya.py и начнем писать туда код.

Первым делом импортируем все библиотеки:

Импортируемые библиотеки
Импортируемые библиотеки

Авторизуемся как сообщество:

-5

Ключ берётся из файла token_vk.py

Напишем функции отправки сообщения:

Функция отправки сообщения пользователю.
Функция отправки сообщения пользователю.

Работать будем через пул Вконтакте, поэтом слушаем пул и приводим время запуска Кузи в нормальный вид + сообщение что Кузя запущен:

-7

Отправляем себе в Телеграм сообщение что Кузя запущен:

-8

chat_id - это id вашей группы или id аккаунта в Телеграм.

Напишем цикл, который будет слушать не пришло ли нам сообщение:

-9

И если пришло сообщение, то получаем текст сообщения, id пользователя и время сообщения, время так же приводим в нормальный вид:

-10

Авторизовываемся под токеном и передаем в переменную usr данные которые хотим получить от собеседника. (Город, пол, страну, ник, подписчиков, время последнего визита, контакты, номер телефона и другие данные)

-11

Получим Имя и Фамилию и запишем в переменные:

-12

Сделаем условия, если город не указан или скрыт, то напишем: где вы живете?

Аналогично с номером телефона.

Выведем сообщение в консоль, что в такое то время ФИО написал такой то текст:

-13

Зададим переменные в которые будет произвольно (рандомно) передаваться слово из списка из фала base.py Например слово приветствия и другие:

-14

Зададим время во сколько ответил Кузя:

-15

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

Проверка слов приветствия в полученном сообщении + отправка приветствия
Проверка слов приветствия в полученном сообщении + отправка приветствия
Проверка слов прощания в полученном сообщении + отправка прощания
Проверка слов прощания в полученном сообщении + отправка прощания
Реакция на слова благодарности + отправка сообщения
Реакция на слова благодарности + отправка сообщения
Ответ на вопрос про имя + отправка сообщения
Ответ на вопрос про имя + отправка сообщения
Ответ на вопрос про возраст + отправка сообщения
Ответ на вопрос про возраст + отправка сообщения
Ответ на вопрос про местоположение + отправка сообщения
Ответ на вопрос про местоположение + отправка сообщения
Ответ на вопрос про товар + отправка сообщения
Ответ на вопрос про товар + отправка сообщения
 Ответ на вопрос про НАЧАТЬ или помощь
Ответ на вопрос про НАЧАТЬ или помощь
Обращения к Кузе
Обращения к Кузе
Вопрос про мой номер телефона
Вопрос про мой номер телефона

Если бот не понял вопроса, приводим все слова в общий список и сравниваем.

spisok = base.privet + base.poka + base.blag + base.spasib + base.imya + base.vopros_pro_imya + base.vopros_pro_vozrast + base.otvet_pro_vozrast + base.vopros_pro_kontakti + base.vopros_pro_tovar + base.strt + base.vopros_pro_moi_nomer + base.otvet_na_obrash_k_kyze

Если совпадений нет, то пишем что Я еще не все умею....
Если совпадений нет, то пишем что Я еще не все умею....

И в конце напишем еще отправку диалога в Телеграм:

-27

Что - бы весь диалог приходил нам в "личку" в телеграме, например пока мы спим и проснувшись увидели всю их "болтавню" =)

И все это дело будем записывать в текстовый файл в папку log, где имя файла будет ФИО человека:

Запись в текстовый файл диалога с ботом.
Запись в текстовый файл диалога с ботом.

Теперь давайте проверять!

Запустим файл kyzya.py - открыв командную строку в папке с этим файлом. Введем:

py kyzya.py

Видим сообщение что Кузя запущен и время в консоле, так - же мне в телеграм пришло тоже самое:

-29

+ В телеграм:

-30

Напишем ему Вконтакте например привет:

Отправил привет через вконтакте
Отправил привет через вконтакте

В консоли вышло:

Сообщение в консоли
Сообщение в консоли

И в телеграме тоже самое:

Дублирование в телеграм
Дублирование в телеграм

+ все это записалось в текстовый фал в папке log:

запись переписки в текстовый документ
запись переписки в текстовый документ

Вот таким вот способом можно написать для своего бизнеса чат бота для группы Вконтакте, наполнив его своими фразами и шаблонами, который возьмет часть работы на себя.

Весь Код:

Файл: base.py

Файл: base.py
Файл: base.py

Файл: token_vk.py

Файл: token_vk.py
Файл: token_vk.py

Файл:kyzya.py (разбил на несколько частей)

-37
-38
-39
-40
-41
-42

Когда я запущу бота, то дам ссылку на его проверку, что бы вы смогли пообщаться с великим Кузей =) Ссылку оставлю либо в статье прямо тут, либо в комментариях.

На этом все. Ну и по традиции спасибо что дочитали, подписывайтесь на мой канал, развивайтесь, познавайте новое и не болейте, Всем пока!

#чат бот для vk #чат-бот #свой айтишник #программирование с нуля #бот кузя #бот для сообщества