Для работы скрипт открывает файл с вопросами, которые потом задаёт пользователю. Скрипт состоит из нескольких частей: бот для общения в Telegram, бот для общения в группе во Вконтакте, обработка логов, загрузка словаря с вопросами и ответами. Бот используют базу данных Redis, сохраняет id пользователя и заданный ему вопрос, благодаря чему бот помнит, какой вопрос задавал какому пользователю. В проект входят: дополнительный telegram-бот для получения сообщений об ошибках, отдельный скрипт для загрузки вопросов и ответов. Для удобства добавлена клавиатура, которая динамически меняет кнопки, в зависимости от этапа диалога.
Python3 должен быть уже установлен. Скачать этот репозиторий себе на компьютер.
Рекомендуется использовать virtualenv/venv для изоляции проекта.
Начиная с Python версии 3.3 виртуальное окружение идёт в комплекте в виде модуля venv. Чтобы его установить и активировать нужно выполнить следующие действия в командной строке:
Указать скачанный репозиторий в качестве каталога.
cd C:\Users\ваш_пользователь\Downloads\папка_репозитория
Установить виртуальное окружение в выбранном каталоге.
Python -m venv env
В репозитории появится папка виртуального окружения env
Активировать виртуальное окружение.
env\scripts\activate
Если всё сделано правильно, вы увидите в командной строке (env) слева от пути каталога.
Используйте pip
(или pip3
, есть конфликт с Python2) для установки
зависимостей:
pip install -r requirements.txt
- Создать двух ботов для Telegram, получить их токены у Отца Ботов.
Один для общения, другой для сбора логов. - Получить свой chat_id у телеграм-бота userinfobot.
- Создайте группу в Vk, она будет доступна во вкладке управление. В настройках группы включите отправку сообщений, создайте ключ доступа.
- Перейти в «Управление сообществом» -> «Сообщения» -> «Настройки бота» и
включить «функции бота».
- Зарегистрироваться на Redis. Создать новую базу данных(new subscription), тип базы - облачный, бесплатный 30 мегабайт. Возьмите оттуда информацию: host, port, пароль от БД. (пример на фото)
Создайте в корне репозитория файл .env
и добавьте в него следующие строки:
TG_DIALOG_BOT=Токен_телеграм_бота
TG_SERVICE_BOT=Токен_бота_логов
TG_CHAT_ID=Чайт_ID_бота_логов
VK_GROUP_TOKEN=Токен_группы_вк
REDIS_HOST=Хост_БД_redis
REDIS_PORT=Порт_БД_redis
REDIS_PASS=Пароль_БД_redis
FOLDER=Имя_папки_с_вопросами
В папке questions
лежит файл примеров вопросов, обычный файл sample.txt
.
Можно указать эту папку в качестве папки с вопросами.
Пример имени файла:
FOLDER=questions
Telegram-бот:
python tg_bot.py
Vk-бот:
python vk_bot.py
- Зарегистрируйтесь на Heroku и создайте приложение (app):
- Опубликуйте код репозитория на свой GitHub.
- Привяжите свой аккаунт на GitHub к Heroku:
- Задеплойте проект на Heroku:
- В разделе Resources включите ботов vk и telegram:
- Перейдите в раздел Settings и в пункте Config Vars укажите из вашего файла .env TG_DIALOG_BOT, TG_SERVICE_BOT, TG_CHAT_ID, VK_GROUP_TOKEN, REDIS_HOST, REDIS_PORT, REDIS_PASS, FOLDER:
- Задеплоить повторно(пункт 4).
Вы увидите сообщение о запуске в чате бота-логгера:
Идеальным примером для создания файла с вопросами и ответами является sample.txt
,
в папке questions
. По его образу, с сохранениями пробелов и отступов,
необходимо создать свой файл и указать путь к нему(папку), или положить его в папку
questions
и указать её. Скрипт циклом проходит по указанной папке, если файл имеет
формат txt
и в кодировке UTF-8
, он открывается и его содержимое добавляется в
общий список вопросов. Если файл будет отличаться по структуре, вам придётся переписать
скрипт quiz_content_handler.py под свои нужды.
Установить консольный CLI client.
Быстрый старт CLI:
Примечание: для Windows можно открыть командную строку cmd и работать в ней.
Подключение к Heroku:
heroku login
Посмотреть список своих приложений:
heroku apps
Посмотреть логи:
heroku logs --app=имя_приложения
Статус бота:
heroku ps -a имя_приложения
Код написан в учебных целях, это часть курса по созданию чат-ботов на сайте веб-разработчиков Девман.