Coder Social home page Coder Social logo

nightriddler / cleverbots_test_job Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 31 KB

Тестовое задание для Cleverbots

License: MIT License

Shell 0.75% Python 97.87% Dockerfile 1.38%
django-admin python-telegram-bot docker-compose postgresql

cleverbots_test_job's Introduction

Телеграм-бот с Django Admin

Styles Code style: black license MIT

Тестовое задание для Cleverbots.

Создать бота и панель управления ботом для Телеграм.

Бот должен выводить полный адрес объекта по короткому тексту запроса с использованием API Яндекс Карт. Бот и панель управления подключены к одной базе данных (любая реляционная).

Бот

Элементы управления

Главное меню (вызывается по команде /start)

Пользователю отправляется приветственное сообщение вместе с QR клавиатурой. Клавиатура состоит из двух кнопок:

  • Новый поиск
  • История

Новый поиск

При нажатии на клавишу Новый поиск пользователю предлагается ввести запрос. По текстовому запросу получается ответ от API, и пользователю ответным сообщением бота отправляется полный адрес первой найденной точки, соответствующей условию:

  • её полный адрес должен включать в себя одну из областей, разрешённых для поиска (эти области добавляются в панели управления). Если таких объектов не найдено, то возвращается соответствующее сообщение: В доступных зонах поиска не найден адрес.

История

При нажатии на кнопку меню История, пользователь получает сообщение, содержащее количество выполненных им запросов поиска к боту, и список последних 5 из них.

Вы совершили 6 поисковых запросов.

Ленинградский 54 -> Россия, Москва, Ленинградский проспект, 54/1 (14.02.2022)
Шоссе энтузиастов 33 -> Россия, Москва, шоссе Энтузиастов, 33 (14.02.2022)
Сокольническая 10а -> Россия, Москва, улица Сокольническая Слободка, 10 (14.02.2022)
Перовская17 -> Россия, Москва, Перовская улица, 15 (14.02.2022)
Перово -> Россия, Москва, Калининско-Солнцевская линия, метро Перово (14.02.2022)


Вернутся в меню /start

Принцип обработки запросов

По запросу пользователя бота, в поиске будут выводиться только те адреса, которые содержат в себе название одной из сохраненных областей. К примеру:

Если в базе разрешенных областей поиска содержится только одна запись - с названием "Орловская область", то при поиске будут пропускаться все результаты, в полном адресе которых нет этого объекта.

Так, по запросу "Красная площадь" первые 2 результата это:

  1. Россия, Москва, Красная площадь
  2. Россия, Орловская область, Колпнянский район, деревня Красная Площадь

Бот в ответ на подобный вопрос ответит полным адресом 2 объекта, если только не добавить в список разрешенных областей "Москва" или "Россия".

Панель управления

Администратор (суперпользователь), может добавлять в панели управления других пользователей с обязательным выбором одной из ролей:

  • Пользователи

Могут только просматривать разрешенные области поиска.

  • Модераторы

Имеют доступ ко всем операциям с разрешенными областями поиска.

Результаты поиска просматривать и удалять могут все, но редактировать\добавлять новые - никто

Созданные пользователи автоматически получают доступ к панели управления в соответствии с выбранной ролью. Полученные права пользователя отображаются на странице редактирования в разделе Права доступа, где при необходимости их можно дополнить/изменить/удалить.

Развертка в docker-compose

  1. Клонируем репозиторий
git clone https://github.com/nightriddler/cleverbots_test_job.git
  1. В папке с проектом создаем файл .env с переменными окружения (либо вносим изменения и переименовываем шаблон .env.example):
SECRET_KEY=secret
BOT_TOKEN=bot_token
API_GEO_TOKEN=api_geo_token
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=db
POSTGRES_PORT=5432

Cгенерировать SECRET_KEY можно в терминале:

echo $(openssl rand -hex 32)

Получить токен бота

Получить токен API Геокодера

  1. Запускаем docker-compose
docker-compose up -d
  1. Делаем миграции, собираем статику, создаем супер пользователя
docker-compose exec django_admin python manage.py migrate --noinput
docker-compose exec django_admin python manage.py collectstatic --noinput
docker-compose exec django_admin python manage.py createsuperuser
  1. Панель управления доступна по адресу
http://127.0.0.1/admin
  1. После миграций, через панель управления необходимо добавить Область поиска после чего телеграм-бот можно будет использовать.

Бот запускается автоматически и доступен в соответсвии с указанным BOT_TOKEN в .env.

Тесты

docker-compose exec django_admin python manage.py test

Тесты запускать после миграций

Для запуска тестов обязательно наличие API_GEO_TOKEN в .env.

Связаться с автором

LinkedIn

Telegram

Портфолио

cleverbots_test_job's People

Contributors

nightriddler avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.