В воскресенье мы опубликовали результаты нашего конкурса, а сегодня делимся подробным процессом, чтобы вы могли повторить механику в своих проектах
1. Подготовка таблицы в NocoDB
Создаем таблицу и добавляем столбцы. Для проведения розыгрыша достаточно настроить всего одно поле, остальные данные можно собирать по желанию:
Обязательно:
- ⚪️ {{username}} + {{user_id}} (тип: Single line text) — связка юзернейм и ID пользователя. Нужна для того, чтобы вы смогли связаться с победителем, даже если у него в профиле скрыт или не настроен username (тогда вы найдете его по ID). Именно это поле бот покажет при выборе победителя
Дополнительно (чтобы видеть информацию о пользователях):
- ⚪️ {{first_name}}, {{last_name}} (тип: Single line text) — имя и фамилия пользователя
2. Настройка команды сбора данных
В конструкторе создаем команду с действием "Создать строку" и заполняем запись в таблице переменными:
{{USERNAME_TEXT}}
{{USER_ID_TEXT}}
{{FIRST_NAME_TEXT}}
{{LAST_NAME_TEXT}}Формула для составного поля:
"@" + {{USERNAME_TEXT}} + "(" + {{USER_ID}} + ")" 3. Фиксация участников
Создаем пост, где в настройках выбираем категорию участников розыгрыша. В действиях выбираем "Отправить команду или условие" и указываем команду из пункта 2. После отправки поста все данные пользователей автоматически запишутся в строки таблицы
4. Настройка переменных для выбора победителя
Переходим во вкладку "Переменные" и создаем две переменные:
- ⚪️{{random}} (персональная, обычная переменная) — будет генерировать случайный номер строки таблицы
В выражении прописываем формулу: random(1, 517)
(*где 517 — это итоговое количество участников в вашей таблице)
- ⚪️{{search_winner}} (персональная, интегрированная переменная) — по ней будем находить того, кто выиграл
Тип интеграции: HTTP запрос
⚪️Ссылка: https://nocodb.puzzlebot.top/api/v1/db/data/noco/номер_таблицы/номер_таблицы (номер берем из адресной строки)
⚪️Тип запроса: GET
⚪️ limit = 1 (сколько строк забираем)
⚪️ offset = {{random}} (какую строку берем)
Заголовок:
⚪️ Ключ: xc-token / Значение: [токен от nocodb]
5. Вывод результата
Заходим в конструктор и создаем скрытую админ-команду с текстом и инлайн-кнопкой. На кнопку настраиваем вызов команды с переменной {{search_winner}}, где и будет показан победитель
Останется перейти в бота, вызвать админ-команду и нажать на кнопку для отображения победителя
🌟 Такая настройка отлично подходит для регулярных конкурсов без использования сторонних рандомайзеров


Дискуссия