Skip to content

Commit

Permalink
Внес изменения с учетом структуры общей
Browse files Browse the repository at this point in the history
  • Loading branch information
Sobodazh committed Sep 18, 2023
2 parents 0856317 + cc69c90 commit 0b42bfd
Show file tree
Hide file tree
Showing 12 changed files with 159 additions and 37 deletions.
16 changes: 6 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
# RandomCoffeeBotTelegram
Random Coffee bot for the Telegram

#### Проект телеграм-бота, который предоставляет возможность пообщаться с IT-специалистами - выпускниками разных IT направлений практикума.

# Содержание


1. [БРИФ](#brief)
1. [БРИФ](docs/materials/briff.md)

1.1 [Инструкции и ритуалы на проекте]()
1.1 [Инструкции и ритуалы на проекте](docs/materials/instructions.md)

1.2 [ER - диаграмма сущностей](#er)
1.2 [ER - диаграмма сущностей](docs/RandomCoffeeER.jpg)

2. [Структура проекта](#structure)
3. [Подготовка к запуску](#start)
Expand All @@ -31,12 +33,6 @@ Random Coffee bot for the Telegram

<br><br>

# 1. БРИФ <a id="brief"></a>

## 1.2. ER - диаграмма сущностей<a id="er"></a>:
ER диаграммы расположены в директории /docs в двух удобных форматах [.drowio, .jpg]
![ER Диаграмма](/docs/RandomCoffeeER.jpg)

# 2. Структура проекта <a id="structure"></a>

| Имя | Описание |
Expand Down Expand Up @@ -311,4 +307,4 @@ make filldb

#### Рекомендации к написанию кода [Codestyle](https://github.com/Studio-Yandex-Practicum/RandomCoffeeBotTelegram/tree/develop/docs/codestyle.md)

#### Диаграмма логики работы бота [Diagram](https://github.com/Studio-Yandex-Practicum/RandomCoffeeBotTelegram/tree/develop/docs/Diagramm_of_bot_logic.drawio)
#### Диаграмма логики работы бота [Diagram](https://github.com/Studio-Yandex-Practicum/RandomCoffeeBotTelegram/tree/develop/docs/Diagramm_of_bot_logic.drawio)
25 changes: 25 additions & 0 deletions docs/materials/briff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Бриф

**Цель проекта:** Обеспечить процесс формирования пар для Random Coffee между студентами курса IT-рекрутер и выпускниками IT-специальностей Практикума в Telegram

**Задачи:**

Создать Телеграм-бота.


## Описание телеграм-бота:

### [Схема состояний](https://github.com/Studio-Yandex-Practicum/RandomCoffeeBotTelegram/blob/develop/docs/Diagramm%20of%20bot%20logic.jpg) - визуальное изображение стейтов

Ожидаемая функциональность:

* создание профиля (учетной записи) каждого участника и хранение его в базе данных
* создание пары между выпускником и рекрутером (нужно, чтобы бот не создавал * пары типа рекрутер-рекрутер или выпускник-выпускник)
* рассылка контактов собеседников после создания пары
* запрос обратной связи у участников (отправляет ссылку на форму)
* повторный вопрос о создании пары после первого участия
* режим администратора должен включать: сброс пар, запрос статистики по парам, удаление профилей (возможно, другие функции по администрированию бота и участников)


### Начало работы:
Пользователь заходит в телеграмм и вводит в поисковую строку **@название бота ,** кликает по найденному боту, видит краткое описание, нажимает кнопку menu, после чего появляется окно с 3 кнопками: Поддержка, Старт, Помощь. При нажатии на кнопку старт бот предлагает поучаствовать в неформальном разговоре с выпускником Практикума.
61 changes: 61 additions & 0 deletions docs/materials/instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Инструкции

### Общие правила коммуникации на проекте

1. Рабочее время: распределение времени с пн-вс для студентов, пн-пт для PM и TL, но для решения важных вопросов можно связаться и в выходные:

PM - с 12:00 до 22.00 по мск;
TL Константин Райхерт - с 16.00 до 23.00 по мск;

- Работаем недельными спринтами (далее по скорости разработки).
- Стендапы понедельник, среда, пятница
- Еженедельные встречи с тимлидами один на один.
- В середине спринта (вт-чт) груминг задач для формирования бэклога на следующий спринт.

2. Каналы коммуникации:
- пачка **Random_coffee_recruiter_bot_general** - анонсы и stand up

3. Notion - место для базы

### Ритуалы

1. **Письменный стендап**

Когда: понедельник, среда, пятница до 19:00
Где: в тредах к сообщению в пачке
Цель: собрать актуальную информацию о положении дел в команде, выявить направления, требующие проработки тимлидами/техлидами/кураторами
Как: написать сообщение по установленному формату в треде в пачке. (ПМ создает тред с утра)

2. **Встреча one-to-one**

Когда: по необходимости
Где: по видео, один на один с тимлидом
Цель: решить вопросы вызывающие стопор, обменяться опытом.
Как: участник команды договаривается о созвоне лично с тимлидом.

3. **Ретро**

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

- Плюсы. Что шло хорошо в прошлой итерации?
- Минусы. Какие проблемы были в прошлой итерации?
- Идеи. Какие идеи появились по ходу ретроспективы?
- План. Какие улучшения мы запланируем на следующую итерацию?
(если необходимо, закрепить ответственного за конкретные события)

4. **Организация встреч в Zoom**

- Описание встречи
- Цели
- Фиксированный тайминг
- Запись при необходимости

5. **Стендап (в письменном формате)**
- Что делал вчера:
- Что буду делать сегодня:
- Какие есть вопросы/проблемы (тегай того, с кем конкретно хочешь переговорить):
*Если вопросов/проблем нет, так и пишешь, что их нет*
- Предложения/пожелания:
4 changes: 2 additions & 2 deletions src/bot/bot_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from django.conf import settings
from telegram.ext import Application, ApplicationBuilder, PicklePersistence

from bot.handlers import HANDLERS, help_hendler
from bot.handlers.command_handlers import help_handler, start_handler

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -55,7 +55,7 @@ async def _build_app(self) -> Application:
.persistence(PicklePersistence(filepath=settings.PERSISTANCE_PATH))
.build()
)
app.add_handlers([HANDLERS, help_hendler])
app.add_handlers([start_handler, help_handler])
return app

async def _manage_webhook(self) -> None:
Expand Down
4 changes: 4 additions & 0 deletions src/bot/constants/buttons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
GO_BUTTON = "GO"
NEXT_TIME_BUTTON = "В следующий раз"
PARTICIPATE = "Участвовать!"
SUPPORT = "Написать в поддержку"
5 changes: 5 additions & 0 deletions src/bot/constants/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,8 @@
"Вас возникли сложности в работе, или пожелания - "
"можете написать в поддержку"
)
START_MESSAGE = (
"Наш бот предлагает тебе поучаствовать в неформальном разговоре с выпускником Практикума. "
'Для этого необходимо нажать на кнопку "Go". Если вы не готовы на этой неделе участвовать в '
'Random Coffee просто нажмите "В следующий раз".'
)
11 changes: 0 additions & 11 deletions src/bot/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
from telegram import Update
from telegram.ext import CallbackContext, CommandHandler

from bot.constants.messages import HELP_MESSAGE
from bot.keyboards.help_keyboard import help_keyboard

# Инициализация логгера
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
Expand All @@ -20,12 +17,4 @@ async def start_bot(update: Update, context: CallbackContext):
await update.message.reply_html(rf"Привет, {user.mention_html()}!")


async def help_bot(update: Update, context: CallbackContext):
"""Функция-обработчик для команды /help."""
await update.message.reply_html(
text=(HELP_MESSAGE), reply_markup=help_keyboard
)


HANDLERS = CommandHandler("start", start_bot)
help_hendler = CommandHandler("help", help_bot)
Empty file added src/bot/handlers/__init__.py
Empty file.
26 changes: 26 additions & 0 deletions src/bot/handlers/command_handlers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from telegram import Update
from telegram.ext import CallbackContext, CommandHandler

from bot.constants.messages import HELP_MESSAGE, START_MESSAGE
from bot.keyboards.command_keyboards import (
help_keyboard_markup,
start_keyboard_markup,
)


async def start(update: Update, context: CallbackContext) -> None:
"""Функция-обработчик команды start."""
await update.message.reply_text(
text=START_MESSAGE, reply_markup=start_keyboard_markup
)


async def help(update: Update, context: CallbackContext) -> None:
"""Функция-обработчик для команды /help."""
await update.message.reply_html(
text=(HELP_MESSAGE), reply_markup=help_keyboard_markup
)


start_handler = CommandHandler("start", start)
help_handler = CommandHandler("help", help)
28 changes: 28 additions & 0 deletions src/bot/keyboards/command_keyboards.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from telegram import InlineKeyboardButton, InlineKeyboardMarkup

from bot.constants.buttons import (
GO_BUTTON,
NEXT_TIME_BUTTON,
PARTICIPATE,
SUPPORT,
)

start_keyboard_markup = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(text=GO_BUTTON, callback_data="go"),
InlineKeyboardButton(
text=NEXT_TIME_BUTTON, callback_data="next_time"
),
]
]
)

help_keyboard_markup = InlineKeyboardMarkup(
[
[
InlineKeyboardButton(PARTICIPATE, callback_data="go"),
InlineKeyboardButton(SUPPORT, callback_data="support"),
]
]
)
12 changes: 0 additions & 12 deletions src/bot/keyboards/help_keyboard.py

This file was deleted.

4 changes: 2 additions & 2 deletions src/core/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import environ
from dotenv import find_dotenv

DEBUG = True

BASE_DIR = Path(__file__).resolve().parent.parent

env = environ.Env()
Expand All @@ -15,6 +13,8 @@

ALLOWED_HOSTS = env.list('ALLOWED_HOSTS', default=['*'])

AUTH_USER_MODEL = "admin_user.AdminUser"

DEFAULT_APPS = [
"django.contrib.admin",
"django.contrib.auth",
Expand Down

0 comments on commit 0b42bfd

Please sign in to comment.