Інтеграція з Collab.Land (доступ на основі токенів)
Collab.Land — це бот для Discord та Telegram, який перевіряє власність токенів/NFT й автоматично присвоює ролі. Інтеграція займає години, але вимагає розуміння верифікації токенів та підтримуваних типів умов.
Як працює гейтинг токенів через Collab.Land
Простої схеми: користувач входить в Discord → натискає "Verify" → підписує повідомлення через гаманець (без транзакції, безкоштовно) → Collab.Land перевіряє on-chain баланс → присвоює роль.
Підтримувані типи активів:
- ERC-20: мінімальний баланс токена
- ERC-721: власність NFT з колекції, конкретний tokenId або trait-based
- ERC-1155: власність конкретного ID токена
- Мультичейн: Ethereum, Polygon, Base, Arbitrum, Optimism, BSC та інші
Налаштування через Collab.Land Command Center
Collab.Land має веб-інтерфейс на cc.collab.land для управління Token Access Rules (TAR):
Крок 1: Запросити бота в Discord сервер. Надати права управління ролями.
Крок 2: У Command Center створити нове правило:
- Тип: ERC-20 / ERC-721 / ERC-1155
- Мережа: виберіть мережу
- Адреса контракту: адреса токена/NFT
- Мінімальний баланс: кількість потрібна для ролі
- Discord роль: яку роль присвоїти
Крок 3: Користувачі йдуть в #collabland-join й натискають "Let's Go".
Для ERC-721 з trait-based умовами (наприклад, NFT з атрибутом "Gold member") — використовуйте Collab.Land API або правило SYNTHETIC токена.
Користувацька інтеграція через API
Для нестандартних умов (баланси на кількох гаманцях, застейковані токени, LP позиції) використовуйте Collab.Land Miniapp або користувацький API.
// Webhook для користувацької верифікації
interface CollabLandWebhook {
action: "CHECK_ROLES";
payload: {
address: string; // гаманець користувача
discordId: string;
guildId: string;
};
}
interface RolesResponse {
roles: string[]; // Discord role IDs для присвоєння
}
// Express endpoint
app.post("/collab-land/check-roles", async (req, res) => {
const { payload } = req.body as CollabLandWebhook;
// Користувацька логіка: перевірте застейкований баланс, LP позиції, тощо
const stakedBalance = await getStakedBalance(payload.address);
const lpBalance = await getLPBalance(payload.address);
const roles: string[] = [];
if (stakedBalance >= 1000e18) roles.push(DISCORD_ROLE_STAKER);
if (lpBalance >= 100e18) roles.push(DISCORD_ROLE_LP_PROVIDER);
res.json({ roles });
});
Підтримка застейкованих та заблокованих токенів
Стандартна проблема: користувач застейковує токени й втрачає роль, тому що баланс ERC-20 стає 0. Рішення:
Варіант 1 — Токен квитанції стейкінгу: мінтинг видає квитанцію ERC-20 (stTOKEN). Collab.Land перевіряє баланс квитанції — стейкер зберігає роль.
Варіант 2 — Користувацький Miniapp: Collab.Land Miniapp дозволяє написати функцію TypeScript, що перевіряє будь-який on-chain стан — баланс контракту стейкінгу, позиції Uniswap V3 NFT тощо.
// Collab.Land Miniapp — користувацька перевірка
import { TokenBalanceRule } from "@collabland/discord";
export async function checkBalance(
address: string,
chainId: number
): Promise<bigint> {
// Сума нативного + застейкованого балансу
const stakingContract = getContract(STAKING_ADDRESS, chainId);
const [walletBalance, stakedBalance] = await Promise.all([
token.balanceOf(address),
stakingContract.stakedBalanceOf(address)
]);
return walletBalance + stakedBalance;
}
Collab.Land — зрілий інструмент з підтримкою більшості сценаріїв гейтингу токенів без побудови власної інфраструктури. Користувацький API має сенс тільки для спеціальної логіки типу агрегації мульти-гаманців або складних позицій DeFi.







