The Telegram Subscription Manager supports multiple subscription plans with different pricing, duration, and access levels. Plans are configured in the src/lib/config.ts file.
Available Plans
The system currently supports five subscription plans:
Basic VIP ₦5,000 for 7 daysVIP signals channel access
Bi-Weekly VIP ₦10,000 for 14 daysVIP signals channel access
Monthly VIP ₦15,000 for 30 daysVIP signals channel access
Premium VIP + Copier ₦22,000 for 14 daysVIP signals + Auto Copier Bot access
Promo VIP ₦3,000 for 7 daysPromotional pricing for VIP access
Plan Configuration
Plans are defined in src/lib/config.ts:
export const PLANS = {
basic: {
name: 'Basic VIP' ,
amountKobo: 500000 , // NGN 5,000
durationDays: 7 ,
hasCopierAccess: false
},
biweekly: {
name: 'Bi-Weekly VIP' ,
amountKobo: 1000000 , // NGN 10,000
durationDays: 14 ,
hasCopierAccess: false
},
monthly: {
name: 'Monthly VIP' ,
amountKobo: 1500000 , // NGN 15,000
durationDays: 30 ,
hasCopierAccess: false
},
premium: {
name: 'Premium VIP + Copier' ,
amountKobo: 2200000 , // NGN 22,000
durationDays: 14 ,
hasCopierAccess: true
},
promo: {
name: 'Promo VIP' ,
amountKobo: 300000 , // NGN 3,000
durationDays: 7 ,
hasCopierAccess: false
}
} as const
Plan Properties
Display name of the subscription plan shown to users in bot messages.
Price in kobo (Nigerian currency minor unit). 1 Naira = 100 kobo. Examples:
₦5,000 = 500000 kobo
₦10,000 = 1000000 kobo
₦22,000 = 2200000 kobo
Paystack API requires amounts in kobo, not Naira.
Number of days the subscription remains active after payment verification.
Whether this plan includes access to the Auto Copier Bot functionality.
true: User gets VIP signals + MT5 copy trading setup
false: User gets VIP signals only
Modifying Plans
Change Pricing
To update plan prices, edit the amountKobo field:
export const PLANS = {
basic: {
name: 'Basic VIP' ,
amountKobo: 700000 , // Changed from ₦5,000 to ₦7,000
durationDays: 7 ,
hasCopierAccess: false
},
// ... other plans
}
Remember to multiply Naira by 100 to get kobo. For example, ₦7,000 = 700,000 kobo.
Change Duration
To modify subscription length, update durationDays:
export const PLANS = {
basic: {
name: 'Basic VIP' ,
amountKobo: 500000 ,
durationDays: 10 , // Changed from 7 to 10 days
hasCopierAccess: false
},
// ... other plans
}
Add New Plan
To add a new subscription tier:
export const PLANS = {
// ... existing plans
quarterly: {
name: 'Quarterly VIP' ,
amountKobo: 4000000 , // ₦40,000 for 90 days
durationDays: 90 ,
hasCopierAccess: false
}
} as const
After adding a new plan, you’ll need to create a corresponding bot command like /verify_quarterly in your bot handler code.
Enable/Disable Copier Access
To give or remove copier access from a plan:
export const PLANS = {
monthly: {
name: 'Monthly VIP + Copier' , // Update name to reflect copier access
amountKobo: 1800000 , // Increase price
durationDays: 30 ,
hasCopierAccess: true // Changed from false to true
},
// ... other plans
}
Helper Functions
The config file includes utility functions for working with plans:
Get Plan Details
import { getPlan } from '@/lib/config'
const basicPlan = getPlan ( 'basic' )
console . log ( basicPlan . name ) // "Basic VIP"
console . log ( basicPlan . amountKobo ) // 500000
console . log ( basicPlan . durationDays ) // 7
Calculate Expiry Date
import { calculateExpiryDate } from '@/lib/config'
// Calculate when subscription expires for basic plan
const expiryDate = calculateExpiryDate ( 'basic' )
console . log ( expiryDate ) // Date 7 days from now
// Calculate from specific start date
const futureStart = new Date ( '2026-04-01' )
const futureExpiry = calculateExpiryDate ( 'basic' , futureStart )
console . log ( futureExpiry ) // Date 7 days after April 1, 2026
Plan Type Safety
The configuration uses TypeScript’s type system to ensure plan names are valid:
export type PlanType = keyof typeof PLANS
// Type is: "basic" | "biweekly" | "monthly" | "premium" | "promo"
This prevents typos and ensures you only use valid plan identifiers throughout your codebase.
Best Practices
Before changing plans in production:
Test locally with test Paystack keys
Update bot commands in BotFather if adding/removing plans
Notify existing users of pricing changes
Consider grandfathering existing subscribers at old rates
Verify calculations (kobo conversion, expiry dates)
Recommended pricing strategy:
Longer plans should offer better value per day
Premium features (copier access) should have clear added value
Use promo plans for special events or new user acquisition
Displaying Plans to Users
When users interact with your bot, they’ll see plan details formatted like:
💎 Basic: ₦5,000 (7 days)
📊 Bi-Weekly: ₦10,000 (14 days)
📅 Monthly: ₦15,000 (30 days)
👑 Premium: ₦22,000 (14 days + Copier)
🎉 Promo: ₦3,000 (7 days)
The bot automatically formats amounts from kobo to Naira for display purposes.