Skip to main content
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:
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

name
string
required
Display name of the subscription plan shown to users in bot messages.
amountKobo
number
required
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.
durationDays
number
required
Number of days the subscription remains active after payment verification.
hasCopierAccess
boolean
required
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:
src/lib/config.ts
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:
src/lib/config.ts
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:
src/lib/config.ts
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:
src/lib/config.ts
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:
src/lib/config.ts
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:
  1. Test locally with test Paystack keys
  2. Update bot commands in BotFather if adding/removing plans
  3. Notify existing users of pricing changes
  4. Consider grandfathering existing subscribers at old rates
  5. 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.

Build docs developers (and LLMs) love