sanerins / tamtam-one-coffee-bot Goto Github PK
View Code? Open in Web Editor NEWTam Tam bot, which purpose is to help two bored, lonely people meet each-other and have a nice conversation together
License: Apache License 2.0
Tam Tam bot, which purpose is to help two bored, lonely people meet each-other and have a nice conversation together
License: Apache License 2.0
Отправлять пользователям более подробную информацию о друг друге после двустороннего аппрува
В таске #5 я написал, что когда оба юзера нажмут /approve мы можем поделиться их личными данными.
Неплохо было бы добавить профиль, в профиле можно было бы добавить описание, которое показывается анонимам и полноценное описание, которое показывается после анонимного чата, когда оба юзера нажали /approve и там есть уже более личная информация и ссылки на страничку и так далее
На примере бота вышки https://youtube.com/@randomcoffeehse реализовать удобный интерфейс для ввода пользователем своих данных (добавить кнопки).
В данный момент все данные userStateMap, userWaitList, userConnections - все это надо перевести на какую-то embedded SQL базу данных
//TODO: userStateMap, userWaitList, userConnections надо будет сделать при помощи SQL бд. Сейчас мы теряем все стейты, диалоги и очередь при перезагрузке
//TODO: userWaitList должен учитывать из какого города юзер
//TODO: userConnections сейчас - полный кринж, ибо храним две инвентированные пары ключ-значение, чтобы собеседники общались
//TODO: сделал так, ибо сделаем нормально в SQL бд, будет табличка connection с двумя лонгами и id.
Сейчас в коде есть места (помеченные "TODO NULL_USER"), где нам приходит null'овый юзер и мы не знаем, что с ним делать. Есть идея завести с пользователем диалог и попросить его предоставить данные повторно, если такая возможность вообще есть (= есть айди юзера).
Сейчас у юзера может стоять любой город. Необходимо создать пул городов (Москва и СПб) и по ним смотреть, верно работяга ввел свой город или нет. Дополнительно поменять поле User::UserBuilder::DEFAULT_CITY на "Москва".
Сделать основу для бота, на которую можно будет опираться при дальнейшей разработке
В самой простой реализации - создание функции matchProba(text1, text2)
, которая возвращает некоторое "расстояние", "похожесть" одного текста на другой.
В продвинутой - "данные об увлечениях юзеров и успешности/неуспешности их соединений можно будет использовать как входные данные для обучения нейронной сети, которая будет решать какому пользователю какой собеседник подходит лучше всего базируясь на его интересах".
Можно сохранять UserConnections после их завершения, добавим к ним статусы по типу IN_PROGRESS/SUCCESSFUL/UNSUCCESSFUL и в дальнейшем использовать их для разных сладостей
Первоначально как минимум можно сделать так, чтобы юзера больше не коннектило с юзером, с которым он уже анонимно общался
В дальнейших этапах развития бота данные об увлечениях юзеров и успешности/неуспешности их соединений можно будет использовать как входные данные для обучения нейронной сети, которая будет решать какому пользователю какой собеседник подходит лучше всего базируясь на его интересах
Проксировать на ChatGPT запросы о том, как лучше начать/продолжить диалог с пользователем исходя из текущего контекста (чат гпт не должна знать подробное описание оппонента! но зато можно раскрывать ей свое)
В данный момент анонимный диалог одного юзера с другим может висеть невероятно долго. Для того, чтобы решить эту проблему можно сделать поток демон, который будет в бесконечном цикле раз в n минут проходить по всем активным на данный момент connections и разрывать их, если юзеры ничего не писали друг другу условно 1 день
В данный момент из очереди на беседу выйти нельзя, можно сделать механизм выхода из оной при помощи команды /stop или чего-то подобного, скорее всего надо реализовывать уже после перехода на SQL хранилище
Оригинальный random-coffee bot сразу же назначает человеку встречу и дает его контакты.
В нашем случае - такое невозможно, так как все one-coffee боты являются закрытыми сообществами, при входе в которые о"валидности" человека не возникает никаких вопросов: оригинальный random-coffee бот стоит порядочные 750 рублей в месяц, а random-coffee_hse проверяет, что человек, подавший заявку действительно является студентов ВШЭ.
Наш бот доступен всем пользователям и такой возможности у нас нет, поэтому сразу давать информацию друг о друге мы не можем - бот наполнять боты-майнеры инфы, толстые тролли и неприятные собеседники, которым не каждый пользователь захочет раскрывать свою страничку, поэтому предлагаю такую систему:
В список команд анонимного чата, который в данный момент присутствует в боте, добавляем команду /approve, в том случае, если оба пользователя, которые чатятся, напишут /approve - будем считать, что они понравились друг другу как анонимные собеседники, а потому мы можем прислать ссылку на их личные странички, чтобы они уже могли договориться о личной встрече
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.