Full feature reference

Everything you need to automate SMM support

TNB SMM Bot is purpose-built for PerfectPanel operators. Every feature below ships out of the box — no plugins, no extensions, no extra configuration. Each section includes live mockups showing exactly how the bot behaves.

8

Feature Categories

60+

Individual Features

35+

Message Templates

7

Order Actions

Order Management

Complete order ops — directly in WhatsApp

Every action your customers need, handled by the bot over PerfectPanel Admin API v2. No panel login required.

Order command flow
check 54321
Order #54321 Service: Instagram Followers 1K Status: Processing Started: 847 | Remains: 153 Provider: smmcost.com Submitted: 2 hours ago
refill 54321
Refill submitted for #54321. Service: Instagram Followers 1K Start count: 847 | Qty: 1000 Track it in your panel.
cancel 54322 54323
Cancellation submitted for #54322, #54323. You will be notified once processed.

Order Status Check

Live status with service name, start count, remains, and provider. Supports single and bulk IDs in one message.

Refill Request

Auto-validates eligibility (status must be Partial or active) before submitting. Shows service, link, qty, and start count in reply.

Cancel Order

Checks eligibility and submits cancellation. Confirmed in reply with next steps.

Speed Up

Priority flag on active orders. Validates, submits, and confirms.

Refund Request

Submits refund request after eligibility check. Logged with full provider context.

Partial Delivery

Request partial delivery for oversized orders. Validates and submits via panel API.

Fake Complete

Staff tool for force-completing stalled orders when needed.

Bulk Operations

Up to 10 IDs validated synchronously; >10 IDs get an instant ack reply and async background processing — no timeout.

AI-Powered

AI that actually understands SMM context

Platform-wide LLM (OpenAI, Claude, Groq, Ollama) configured once by your admin. Applied intelligently across all tenant interactions.

Ticket AI Processing Pipeline

Ticket submitted
Pending
Celery poller picks up
Processing
Order data fetched from panel
Fetched
AI generates reply
AI Reply
Reply posted to ticket + logged
Answered

AI Chat Mode

All customer-facing command replies reformatted through LLM. Unrecognised messages routed to AI with full context. Auto language detection.

Ticket AI Poller

Celery beat task polls panel every 60 s. Reads pending tickets matching configured subject, generates contextual AI reply with live order data, posts reply to ticket.

Command Tickets

Tickets containing action keywords (speedup, refill, cancel, refund, partial) + order IDs are processed as commands — fetches live order status, logs with serial + provider OID.

Support Tickets

General questions get a support-focused AI reply. Logged as "Ticket AI Reply" with any order context found in the message.

Dirty Command Detection

When a customer includes frustrated/angry text alongside an order ID + action, bot executes the command AND generates a merged AI consolation reply.

Priority Auto-Flagging

Dirty commands — order ID + action + meaningful extra text — are automatically flagged as priority in the logs dashboard. Clean commands are not flagged.

Conversation Memory

Per-user conversation history (last 10 messages) kept in-memory per instance. AI replies maintain context across a session.

AI Rate Limiting

Per-user AI rate limiting prevents abuse. Separate from order check rate limits.

Customer Management

Know exactly who is talking to your bot

Automated verification links every WhatsApp number to a panel account. No manual look-up required.

3-Step Verification Flow

1
Greeting
Hello
Welcome! Please enter your panel username to get started.
2
Username
johndoe123
Found your account. A 6-digit code was sent to your panel ticket. Enter it here.
3
OTP Verified
284719
Verified! You can now check orders, request refills, and more.

Automated Verification Flow

New users: greeting → enter panel username → API lookup → 6-digit OTP sent via panel ticket → enter code → verified. Code expires in 10 minutes.

Permanent JID Binding

Once verified, the WhatsApp JID is permanently linked to the panel username in tenant_users table. Persists across bot restarts.

Bulk Verify Groups

!verify-users <username> verifies all group members at once. Useful for migrating existing customer bases.

User Session Lookup

"my username" command lets any verified user check their registered panel username.

Max Attempt Limits

Configurable max_messages_per_user_per_min and verification_max_attempts with cooldown period.

Rate Limiting

Per-user message rate limiting and order check rate limiting (max_order_checks_per_hr) prevent spam and abuse.

Group Controls

Fine-grained per-group behaviour flags

Three independent flags per group. Toggle live — no bot restart. Admin commands or dashboard.

Group flags — toggle live, no restart
Customer Support GroupSupportOffLive
VIP Clients GroupSupportMktgLive
Test / Staging GroupSupportOffSilent
Promo Broadcast GroupOffMktgLive

Support Mode

support_enabled flag: controls whether the bot responds to user commands in this group. Disabled = bot ignores all messages from this group.

Marketing Mode

marketing_enabled flag: controls whether scheduled marketing broadcasts are sent to this group. Independent of support mode.

Silent Mode

silent_mode flag: bot fully processes and logs all commands but sends zero replies. Useful for testing or monitoring without customer interruption.

Auto-registration

New groups are automatically added to whitelisted_groups table when the bot first receives a message from them. Requires manual enable.

Dashboard Toggle

All three flags toggleable from the Groups page in the dashboard. Changes take effect on the next message — no reload needed.

Admin Command Toggle

!support enable/disable, !marketing enable/disable, !silent enable/disable — run inside the target group. Admins only.

Marketing

Scheduled promotional broadcasts on autopilot

Build a rotating library of marketing messages. Broadcasts run on your schedule across all opted-in groups.

Scheduled broadcast
Flash Deal — Next 2 Hours Only! Instagram Followers: $0.90/1K (was $1.20) Use code FLASH30 at checkout. Order now at panel.yourdomain.com

Message Library

Unlimited marketing messages per tenant. Rich WhatsApp text formatting supported. Managed from the Marketing page in your dashboard.

Configurable Interval

marketing_interval_hours: base interval between broadcasts. Configurable per tenant via bot settings.

Random Jitter

Each broadcast fires with 0–60 minute random jitter on top of the base interval. Prevents patterns that trigger spam filters.

Scheduler Timezone

scheduler_timezone config key: set the timezone for your marketing schedule using UTC offset format (e.g. UTC+6).

Per-Group Targeting

Messages only go to groups with marketing_enabled = true. Groups not in the list are skipped entirely.

Celery-backed

Uses Celery beat tasks — no cron jobs to maintain. Reinitialises automatically on WhatsApp reconnect.

Admin Tools

Powerful admin commands without a dashboard

WhatsApp-native admin and staff commands. Works in DMs and groups. No login required for admins.

Full Command Reference

CommandDescription
!statusUptime, user count, group count, AI status
!broadcast <msg>Send to all support-enabled groups now
!support enable|disableToggle bot responses for this group
!marketing enable|disableToggle marketing broadcasts for this group
!silent enable|disableToggle silent mode — process but send no replies
!resolve <ids> <status>Update log status; escalated notifies provider group
!config set <key> <value>Live config update — persists to DB immediately
refill verify <id…>Live count vs panel data — refill justification
<ids> provider statusProvider OID + Provider Status per order
!verify-users <username>Bulk verify all group members at once
!remove-users <username>Unverify all users under this username

!status

Uptime, verified user count, group count, AI status. DM or group. Shows which AI provider is active.

!broadcast

Send a message to all support-enabled groups immediately. Useful for urgent announcements.

!users / !groups

List all verified users or all whitelisted groups for this instance.

refill verify

Admin + staff command. Shows live count vs panel data for each order ID — justifies or disputes a refill request without the customer seeing.

provider status

Comma-separated order IDs + "provider status": shows Provider OID and Provider Status per order. No ownership check — staff use.

!config set/get/list

Live config management via WhatsApp. Changes persist to bot_config table. No restart needed. Admin only.

Admin & Staff Roles

tenant_admins table has role column (admin | staff). Admin: full command access. Staff: refill verify + provider status only.

JID + LID Auth

Admins authenticated by both wa_jid (DMs) and lid (groups). LID auto-resolved via Evolution API on dashboard add.

3-Tier Role System

Owner

WhatsApp Bot

  • All admin commands
  • !config set/get/list
  • !broadcast
  • Group flag toggles
  • Bulk verify/remove

Dashboard

  • Full access to all pages
  • Billing management
  • Admin & Staff management
  • Settings & API keys
Staff Admin

WhatsApp Bot

  • !broadcast
  • Group flag toggles (!support / !marketing / !silent)
  • !resolve
  • refill verify
  • provider status
  • Bulk verify

Dashboard

  • Bot Settings
  • Templates
  • Groups
  • Marketing
  • Customers
  • Message Logs
  • Providers
Staff

WhatsApp Bot

  • refill verify <id…>
  • <ids> provider status
  • !resolve <ids> <status>

Dashboard

  • Message Logs only
Provider Integration

Multi-provider SMM panel sync

Connect multiple SMM providers, sync their service catalogs, and get WhatsApp alerts for new services.

Provider sync status
smmcost.com+3 new
1,842 servicesBalance: $127.40
justanotherpanel7 min ago
965 servicesBalance: $89.20
peakerr.com12 min ago
2,104 servicesBalance: $54.80

Service Catalog Sync

POST /providers/{id}/sync fetches the full service list from the provider panel API. Upserts services, tags new ones on subsequent syncs.

Balance Sync

Balance fetched alongside services on every sync. Stored in smm_providers.balance. Best-effort — sync succeeds even if balance call fails.

New Service Notifications

When a subsequent sync detects genuinely new services, a WhatsApp alert is sent to admin-role numbers only (not staff). First sync is treated as baseline — no alert.

Celery Auto-Sync

Configurable sync_interval per provider. Celery beat task runs auto-sync. is_active = false disables auto-sync for that provider.

Service Search

GET /providers/services: paginated, filterable by q (name/ID), provider_id, sort order. Powers the Service Search dashboard page.

Duplicate Protection

provider_sync_lock:{provider_id} Redis NX lock (TTL 600s) prevents two workers from syncing the same provider simultaneously.

Dashboard

A full SaaS dashboard for every tenant

Real-time visibility, live config, template management, billing — all in one place.

Message Logs — auto-refresh 4s Live
SerialActionOrderStatus
#1247Refill#54321Resolved
#1246CancelPriority#54318Open
#1245Status#54310Ignored
#1244RefundPriority#54305Escalated

Live Message Logs

Searchable logs table with auto-refresh every 4 s. Filters by date, action, status, priority. Click long IDs to expand in modal.

Priority Log Flagging

Dirty commands auto-flagged as priority. Visual indicator in logs. Bulk status update: select rows → choose status → Apply.

Message Templates

35+ template keys across 11 categories. Edit any key from the Templates page. Changes take effect on next message — no restart.

Live Config Reload

All dashboard saves trigger POST /tenants/{instance}/reload. Bot invalidates cache and rebuilds with fresh data in-place.

Customer Management

View all verified users, manually verify, block, or delete. Shows panel username + last active time.

Group Management

View all groups with support/marketing/silent flags. Toggle per-group or sync group list from Evolution API.

Billing & Plans

Stripe-powered upgrade/downgrade. Usage stats (messages today, active groups). Invoice history.

Bulk Copy Provider OIDs

"Copy IDs" button in logs bulk action bar — copies all Provider OIDs from selected rows as comma-separated list. Useful for cross-checking with providers.

Support Status Workflow

OpenEscalatedTicket CreatedResolvedorIgnored

Escalated status also sends provider order IDs to the mapped provider WhatsApp group for cross-panel follow-up. Update via !resolve <ids> <status> or bulk-select in dashboard logs.

Ready to put all of this to work?

14-day free trial. No credit card. Connect WhatsApp in under 30 seconds.

No credit card required 14-day free trial Cancel anytime