Involvio

module
v0.0.0-...-26d71a5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 28, 2024 License: MIT

README

Involvio

Телеграм бот для организации случайных встреч

Содержание

Описание

После регистрации в телеграм-боте, бот будет предлагать каждую неделю встретиться с одним из людей, зарегистрированным в боте в пределах вашей группы. Человек для встречи выбирается случайным образом среди тех, с кем вы ещё не встречались. Каждую встречу можно оценить по 5ти бальной системе и написать заметку о человеке, с которым вы встречались. Заметка сохраняется и доступна только вам. Если одного участника оценят подряд 3 раза на 1, то этому участнику будут остановлены встречи на год или до указания им команды /new

Особенности бота:

В одном боте могут быть собраны различные люди с разными интересами, разделёнными кодом группы. Бот будет назначать встречи только между участниками одной группы, для этого при регистрации необходимо указать код группы. Можно указать несколько групп через запятую. Если вы хотите встречаться с людьми из определенной группы и людьми, которые не указали группу укажите после кода своей основной группы запятую. В этом случае в статистике по команде /stat вы будете видеть статистику по группам.

Наличие команд управления, позволяющих:

Приостановить назначение встреч на любое количество дней в случае отпуска или других временных причин. Бот будет повторно назначать встречи через 6 месяцев, если вы не хотите повторно встречаться с конкретным участником, используйте команду /notmeet Если три и более человека поставили "1" в качестве оценки встречи, то участник выключатся на год из участия в дальнейших встречах. Справочник команд:

/help - Описание команд бота
/group - Изменить код группы в пределах которой ищутся участники для встречи
/stat - Статистика
/meet - Информация о прошедших встречах
/notmeet - Не встречаться больше с указанным участником
    /notmeet @НИК - Не встречаться больше с указанным пользователем
/stop - Приостановить встречи на неделю
    /stop NN - приостановить встречи на NN дней
/rating - Оценить последнюю встречу
    /rating @НИК - оценить встречу с указанным пользователем
/info - Что обо мне сохранено и как изменить
    /setCity - изменить свой город
    /setName - изменить свое имя
    /setUrl - изменить свою соц.сеть
Создание приватной группы для встреч

Чтобы у вас была приватная группа, используйте уникальный код группы, например: Vip. Все ваши друзья должны при регистрации указывать код группы Vip, тогда бот будет организовывать встречи только между вашими участниками. Если Вы хотите организовывать встречи между разными группами, используйте в качестве разделителя запятую. Чтобы участвовать во встречах тех, кто не указал группу, то после списка групп поставьте запятую, например: Vip,777,. Для приглашения новых участников с указанием группы, используйте ссылку: https://t.me/Dirworld_bot?start=Vip. Рекомендую использовать уникальные, ассоциативные только для вашей группы коды, которые не станут использовать другие участники.

Схема бота

scheme.png

Технологии

  1. GO 1.22.5
  1. Postgres 14
  1. Docker
Архитектура

img.png

База данных

db.png

Начало работы

Предварительные требования
Необходимые компоненты
Переменные среды
  • DB_PASSWORD - пароль для подклчения к postgres (по умолчанию - admin)
Запуск
export DB_PASSWORD=admin ENV_NAME=dev && make dc

Документация

OpenAPI3.1

Мониторинг-ресурсов

  • потребление cpu
  • текущее потребление памяти процессом / ОС / общее количество памяти OC
  • среднее время ответа на запрос
  • количество открытых соединений

МОНИТОР

Профайлер

PROFILER

Тестирование

TODO

  • Добавить unit тесты
  • Добавить integration тесты
  • Добавить prometheus и grafana в docker-compose
  • Нарисовать макеты и описать повторно юзкейзы

Команда проекта

Directories

Path Synopsis
cmd
Involvio command
internal
app
Package Involvio configures and runs application.
Package Involvio configures and runs application.
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL