Open Grey-DeMonstr opened 6 years ago
Думаю лучше и то и другое хранить. Id нужны для тех, у кого ник не указан. Ники нужны для будущего поиска, если на данный момент добавленный ник еще не обращался к боту (в этом случае бот не может user_id его знать).
Предлагаю следующие поля для хранения в базе: telegram id - внутрений, уникальный, по нему надо матчить, показывать не надо ник - если есть. по нему тоже матчим имя и фамилия - матчим по полному совпадению (case-insensitive)
Должен быть вариант добавления пользователь в список по любому из параметров. Например: /add - все как сейчас /add_name - имя и/или фамилия (только один пользователь за раз) послать контакт
Когда добавляем пользователя в список - ищем такого пользователя, если он уже есть, добавляем в матчинг id его записи. Если пользователя с добавляемыми параметрами не нашли - добавляем для него запись в таблицу members, с заполненными теми полями, которыми можем
Когда пользователь приходит в бот - мы знаем все его поля. Если пользователь пришел первый раз (пользователя с такми telegram id в базе нет) - заводим для него запись и проверяем, есть ли у нас пользователи без telgram id, но с ником/именем. Если есть -собираем все записи в одну, не забыв в matches поменять id-шники.
Бот должен хранить в базе id пользователей вместо ников. Нужно поддержать отправку контакта вместо ника.