Давайте пройдем пошагово по алгоритму:
1) Вы смотрите в какой канал зашел пользователь
- На нем отвалятся те, у кого нет доступа к этому каналу и те кто заходят без конкретного канала
2) Ищите первого человека, кто создавал для этого канала
- Тут отвалятся несколько приглашений на один канал
3) Ожидаете что будет пригласивший
- Хотя это
опциональное поле.
Итого даже если звезды сойдутся и на ком-то все отработает, считать все равно будет неправильно, т.к алгоритм предполагает, что на один канал может пригласить только один человек.
Теперь правильный алгоритм:
1) Заводите команду, например /invite, которой генерируете приглашения за пользователя.
2) При генерации сохраняете в БД кто команду вызвал, в формате вроде (user_id, url)
3) При заходите смотрите
обязательное поле
url и смотрите какой пользователь его генерировал - он и будет пригласившим.