/async-messenger-project

Мессенджер для получения и обработки сообщений от клиента (asyncio). Приложение написано в качестве учебного проекта.

Primary LanguagePythonMIT LicenseMIT

Мессенджер для получения и обработки сообщений от клиента (asyncio)

Технологический стек

app-testing workflow

Python GitHub%20Actions

Приложение написано в качестве учебного проекта.

Поставленная задача:

Спроектируйте и реализуйте мессенджер для получения и обработки сообщений от клиента, а именно:

1. Реализовать сервис, который обрабатывает поступающие запросы от клиентов.

Условия и требования:

- Подключенный клиент добавляется в "общий" чат, где находятся ранее подключенные клиенты;
- После подключения новому клиенту доступные последние N (по умолчанию 20) сообщений из общего чата;
- Повторно подключенный клиент имеет возможность просмотреть все ранее непрочитанные сообщения до момента последнего опроса (как из общего чата, так и приватные);
- По умолчанию сервер стартует на локальном хосте (127.0.0.1) и на 8000 порту (иметь возможность задавать любой);
- Можно не проектировать БД: информацию хранить в памяти и/или десериализовать/сериализировать в файл (формат на выбор) и восстанавливать при старте сервера;


2. Реализовать приложение, который умеет подключаться к серверу и обмениваться сообщениями.

Условия и требования:

- После подключения клиент может отправлять сообщения в "общий" чат;
- Возможность отправки сообщения в приватном чате (1-to-1) любому участнику из общего чата;
- Разрабатывать UI не надо: можно выводить информацию в консоль или использовать лог-файлы;

3. Дополнительные требования:

- Клиент может отправлять не более 20 (по умолчанию) сообщений в общий чат в течение определенного периода - 1 час (по умолчанию). В конце каждого периода лимит обнуляется;
- Возможность создавать сообщения с заранее указанным временем отправки; созданные, но неотправленные сообщения можно отменить;
- Возможность пожаловаться на пользователя. При достижении лимита в 3 предупреждения, пользователь становится "забанен" - невозможность отправки сообщений в течение 4 часов (по умолчанию);

Установка

  • склонируйте репозиторий;

  • находясь в папке с кодом создайте виртуальное окружение python -m venv venv;

  • активируйте виртуальное окружение (Windows: source venv\scripts\activate; Linux/Mac: source venv/bin/activate);

  • установите зависимости python -m pip install -r requirements.txt.

Описание работы приложения

  1. Запустить сервер в server.py
  2. Создать соединение клиента с сервером client.py
  3. Набор доступных пользователю команд:
  • /nickname <your nickname> - ввести никнейм пользователя;
  • /complaint <nickname> - пожаловаться на другого пользователя;
  • /priv <nickname> <message> - отправить приватное сообщение пользователю;
  • /delay <minutes> <message> - отложить отправку сообщения на указанное количество минут;
  • quit - выход из чата.

Об авторе

Ирина Фок iricshkin