The RUG KILLER bot now features comprehensive access control with three ways to access and a 7-day trial for all new users and groups.
Users holding 10,000,000+ RUG KILLER tokens get automatic access.
How it works:
- User runs
/linkwallet <your_solana_address>in Discord or Telegram - Bot verifies token balance in real-time via Solana RPC
- If 10M+ tokens detected, instant access granted
- Balance is re-checked on each command use
Commands:
/linkwallet <address>- Link your Solana wallet/access- Check your current token balance and status
Direct payment via Whop platform for unlimited bot access.
Features:
- Individual DM access on Discord and Telegram
- No token holding required
- Instant activation after payment
- Managed via Whop dashboard
How it works:
- User tries to use bot without access
- Bot generates Whop checkout link
- User subscribes via Whop
- Webhook syncs membership status
- Access automatically granted
Adding the bot to Discord servers or Telegram groups grants access to all members.
Benefits:
- 7-day trial for new groups
- One subscription covers entire server/group
- Members don't need individual access
- Perfect for communities and trading groups
How it works:
- Add bot to Discord server β Entire server gets access
- Add bot to Telegram group β All group members get access
- Group admins can manage bot permissions
All new users and groups receive a 7-day trial automatically.
Trial Features:
- β Full access to all bot commands
- β Starts on first use (command execution)
- β No credit card required
- β Clear expiration notification
Commands:
/trial- Check trial status and days remaining/access- View detailed access information
After Trial Expires:
- Bot prompts user with upgrade options
- Commands blocked until access is granted
/help,/linkwallet,/trial,/accessremain available
Add these to your .env file:
# Whop Integration
WHOP_API_KEY=your_whop_api_key_here
WHOP_PRODUCT_ID=your_whop_product_id
WHOP_PLAN_ID=your_whop_plan_id
# Token Gating
RUG_KILLER_TOKEN_MINT=your_token_mint_addressRun the migration to create the access control table:
# Using Drizzle
npm run db:push
# Or run SQL directly
psql $DATABASE_URL -f migrations/20251130_add_user_access_control.sql| Command | Description |
|---|---|
/linkwallet <address> |
Link Solana wallet for token-gating |
/trial |
Check trial status and expiration |
/access |
View detailed access level and options |
You can manually grant access via database if needed:
-- Grant permanent access to user
UPDATE user_access_control
SET access_type = 'paid',
membership_expires_at = '2099-12-31'
WHERE identifier = 'discord:USER_ID';
-- Extend trial period
UPDATE user_access_control
SET trial_ends_at = NOW() + INTERVAL '7 days'
WHERE identifier = 'telegram:USER_ID';βββββββββββββββββββ
β User/Group β
β Executes β
β Command β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Access Control β
β Middleware β
ββββββββββ¬βββββββββ
β
ββββββ΄βββββ
β β
βΌ βΌ
Trial? Paid?
β β
β βΌ
β Token Holder?
β β
βββββββ¬ββββ
β
βββββββ΄ββββββ
β β
βΌ βΌ
ALLOW DENY
# Discord
/linkwallet YourSolanaWalletWith10MTokens
/access
# Telegram
/linkwallet YourSolanaWalletWith10MTokens
/access# Create new Discord/Telegram account
# Run any command to start trial
/execute TokenAddress
# Check trial status
/trial# Add bot to Discord server or Telegram group
# Any member runs:
/trial
# Should show group trial informationTo receive real-time membership updates from Whop:
- Set up webhook endpoint:
POST /api/whop/webhook - Add webhook URL in Whop dashboard
- Bot will auto-sync membership status
// Example webhook handler
app.post('/api/whop/webhook', async (req, res) => {
const { event, membership } = req.body;
if (event === 'membership.created') {
// Grant access
await db.update(userAccessControl)
.set({
accessType: 'paid',
whopMembershipId: membership.id,
membershipExpiresAt: new Date(membership.valid_until)
})
.where(eq(userAccessControl.identifier, membership.metadata.discordId));
}
res.json({ success: true });
});- User runs
/execute <token_address> - Bot creates trial record β 7 days from now
- Command executes successfully
- Bot shows "Trial period ends on [DATE]"
- Bot sends reminder DM
- "β° Your trial expires in 1 day! Upgrade to keep access"
- Shows upgrade options with links
- User runs command
- Bot blocks execution
- Shows access options:
- Link wallet (token-gating)
- Subscribe via Whop
- Add bot to server/group
- User holds 10M+ tokens
- Links wallet via
/linkwallet - Bot verifies balance
- Instant access granted
- Re-verified on each command
- β 7-day free trial (no payment info needed)
- β Multiple access options (flexible)
- β Token holders rewarded with free access
- β
Clear status via
/trialand/accesscommands
- π° Monetization via Whop subscriptions
- πͺ Token utility (10M token requirement drives demand)
- π Group subscriptions = higher revenue per user
- π Access control prevents abuse
- π₯ One subscription covers entire server
- π 7-day trial for new groups
- π Bot tracks group vs individual access separately
If users have issues:
- Check trial status:
/trial - Check access level:
/access - Link wallet:
/linkwallet <address> - Contact support with their Discord/Telegram ID
Problem: User sees access denied message
Solutions:
- Check trial status:
/trial - Link wallet if holding tokens:
/linkwallet <address> - Subscribe via Whop link provided
- Add bot to server/group
Problem: User holds 10M+ tokens but access denied
Solutions:
- Ensure wallet linked:
/linkwallet <address> - Verify token mint address in env vars
- Check RPC connection
- Wait for balance cache to refresh (60s)
Problem: User's 7-day trial ended
Solutions:
- User must choose access method
- Link wallet with 10M+ tokens
- Subscribe via Whop
- Join group with bot access
Monitor these KPIs:
-- Total users with access
SELECT access_type, COUNT(*)
FROM user_access_control
GROUP BY access_type;
-- Active trials
SELECT COUNT(*)
FROM user_access_control
WHERE access_type = 'trial'
AND trial_ends_at > NOW();
-- Token holders
SELECT COUNT(*)
FROM user_access_control
WHERE access_type = 'token_holder';
-- Paid subscribers
SELECT COUNT(*)
FROM user_access_control
WHERE access_type = 'paid';
-- Trial conversion rate
SELECT
COUNT(CASE WHEN access_type != 'trial' THEN 1 END)::FLOAT /
COUNT(*)::FLOAT * 100 AS conversion_rate
FROM user_access_control
WHERE created_at > NOW() - INTERVAL '30 days';- β Set up Whop account and get API keys
- β Configure environment variables
- β Run database migration
- β Test all three access methods
- β Monitor trial conversions
- β Adjust pricing based on metrics