@xpril

Как создать реферальную систему в Discord боте?

Очень интересует этот вопрос, поиск в интернете не дал результатов.
Суть такова, пользователь пишет определенную команду .getref
После этого бот отправляет пользователю его персональную реф-ссылку.
При переходе по ссылке нового юзера, бот добавляет +1 к рефералам владельца ссылки в БД.
Как это можно реализовать в рамках Discord?
  • Вопрос задан
  • 319 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Помимо бота нужно будет создать мини сервер, который будет заниматься генерацией ссылок, их обработкой, и обновлением базы данных бота. Ну и наверное домен какой никакой нужен, чтобы по ссылкам водить. Если бот работает просто через longpolling, то это нужно будет. Если он уже крутится в каком нибудь веб приложении на вебхуках, то можно и там что нибудь приделать.

В БД должно быть две таблицы:
1. Дискорд бота, для хранения кол-ва переходов и тд
2. Сервера, для хранения реф ссылок

А так будет примерно следующее:

  1. Пользователь отправляет в чат .getref
  2. Обработчик бота получает команду. В обработчике отправляем запрос на наш API эндпоинт для генерации ссылок. В теле запроса лежит ссылка назначения
  3. API генерирует строку (допустим 8 символов), проверяет на уникальность и заносит в БД уникальную строку и ссылку назначения
  4. API возвращает уникальную строку, склеивая ее с нашим доменом. Пример: https://domain.com/url/XXX
  5. В обработчик возвращается ссылка, отправляется в чат
  6. Пользователь копирует ссылку, идёт её разбрасывать
  7. На сервер так же добавляем обработчик ссылок вида /url/url_hash
  8. В этом обработчике, при получении GET запроса, обновляем число рефералов у соответствующего юзера в БД
  9. Из БД дергаем ссылку назначения по нашему хэшу и возвращаем редирект на нёё
  10. Пользователь переадресован на нужную ссылку, рефералы записаны


Ну это плюс-минус, в общем случае. Осталось понять как не считать рефы за запросы от одного и того же пользователя
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы