Back to work

Crypto community tooling · Live Discord build

Trench Desk.

A read-only Discord bot and server kit for Solana memecoin communities. It builds and audits the server from a spec, scans tokens, scores callers, follows wallets with realized PnL, and paper copy-trades from live quotes. It never trades.

The Dugout Discord server run by Trench Desk: themed channels on the left and a wallet feed of pump.fun buys and sells with realized profit and loss on each sell
The Dugout · live mainnet swaps, October 10, 2026Open for full-size detail
Role
Bot architecture & implementation
Client
Portfolio system
Tools
TypeScript, discord.js, Solana JSON-RPC, Helius, DexScreener API, Jupiter API, SQLite
Year
2026

Inside the automation · Twelve slash commands · paste-to-scan · 209 tests

A trench server, built and run from code.

Scoped against two live job posts, a 14,000-member trading server, and the output of Rick and Axiom. Every stage below ran in a real Discord server; the seeded leaderboard callers are fictional and labeled as such.

01 · Setup

Build and audit the server from a spec

Roles, categories, channels, permission overwrites, AutoMod rules, and room for third-party bots live in one TypeScript spec. The audit compares it with the live server, including permissions read back from Discord. Renames keep history, and the apply step edits only what drifted.

  1. 01Spec
  2. 02Audit
  3. 03Rename
  4. 04Apply
  5. 05Re-audit

02 · Scan

Check a coin before anyone buys

Paste an address in #ca-lookup and the bot replies with a token card: market data, mint and freeze authority, DEX paid, and first-scan credit. Desk Pro adds holder concentration with pools excluded, same-ticker tokens, dev launches, ATH, and a chart. Unknowns say Unknown.

  1. 01Paste
  2. 02Market data
  3. 03Authorities
  4. 04Holders
  5. 05Card

03 · Calls

Score callers on what happened next

/call logs the market cap at call time and refuses repeats. A poller raises each call's peak, replies under the original at 2x, 5x, 10x and beyond, and posts a daily board. /leaderboard and /stats rank by average and median peak multiple.

  1. 01Call
  2. 02Dedupe
  3. 03Sample
  4. 04Milestone
  5. 05Rank

04 · Wallets

Follow wallets, then paper-follow them

Tracked wallets are read from Solana JSON-RPC and every sell shows realized PnL. Desk Pro members can paper copy-trade a wallet: buys and exits are priced with Jupiter quotes and closed trades post a PnL card, losses included. No transaction is ever built.

  1. 01Track
  2. 02Parse swap
  3. 03PnL
  4. 04Quote
  5. 05Card

05 · Community

Gate members, handle tickets, log everything

A rules button grants Member, tickets open private channels that lock on close, AutoMod blocks wallet-drainer phrases and stray contract addresses, a stats channel counts members, and staff actions land in #desk-log.

  1. 01Verify
  2. 02Ticket
  3. 03AutoMod
  4. 04Stats
  5. 05Log

The problem

Solana memecoin communities run on a handful of shared tools. Members paste a contract address and want a token card before they buy. Callers want credit for a call, and everyone else wants to know whose calls actually ran. Staff want to watch a few wallets, keep wallet-drainer scams out, and handle support without giving up their DMs. Most servers stitch this together from several bots and a server layout that drifts every time someone edits a permission.

I scoped Trench Desk against two live Upwork posts from October 2026. The first was for a TypeScript developer on a crypto copy-trading Discord bot: discord.js, Solana JSON-RPC, a bot that "watches trader wallets and social callers, alerts the community", and failing tests written before fixes. The second was for a Discord trading-community role covering bot automation, auto-moderation, ticketing, onboarding flows, embeds, and a Discord audit. I also took apart the structure of a 14,000-member Solana trading server and compared the output of Rick and Axiom, the scanner and the terminal those communities already use. Trench Desk is deliberately read-only: it never signs, trades, or holds keys.

How it is built

The server itself is data. One TypeScript spec describes the roles, six categories, fourteen text channels, a member-count stats channel, their permission overwrites, three AutoMod rules, and the third-party bots it makes room for. A pure planner compares that spec with a snapshot of the live server, including permission overwrites read back from Discord, so the audit can say exactly what drifted, such as "@everyone is allowed SendMessages in #calls". Channels carry stable keys, so renaming one is a rename rather than a delete and recreate, and the apply step edits only the overwrites that changed. Nothing is ever deleted.

Market data comes from DexScreener. On-chain data comes straight from Solana JSON-RPC: mint and freeze authority, holder concentration with liquidity-pool accounts excluded, and swaps derived from balance deltas in confirmed transactions, so the wallet feed works across pump.fun and other venues without an indexer. Price history and the chart come from GeckoTerminal and QuickChart, and paper copy-trading is priced with Jupiter quotes. Calls, wallets, trades, and paper positions live in SQLite. The runtime is Node 24 running TypeScript directly, with discord.js and one image renderer as its only dependencies. It reads message text only in the paste-to-scan channel, to find an address, and never stores it.

The Dugout

I ran it in a private server I staged as a real community, The Dugout, with Rick installed alongside it on least-privilege permissions. The leaderboard history is seeded: mudlark, sapper, foxhole_fin and trenchfoot are fictional callers on fictional tokens, so the board has something to rank. Everything else on this page is live output from October 10, 2026.

The same Fartcoin address scanned a minute apart: Trench Desk's card in #ca-lookup with first-scan credit, revoked authorities, top 10 holders 35.5% excluding pools, top 5 holders, holder count, same-ticker count, dev launches and ATH, next to Rick's card in #scanning with FDV, liquidity, top holders, 187K holders and fresh-wallet share

Pasting an address in #ca-lookup returns a token card. Desk Pro members also get holder concentration, a same-ticker count, the developer's launch history, ATH and drawdown, and a chart. The first person to scan a token in the server gets credit. Values the bot cannot establish say so: LP lock is marked not verified, and the ATH carries a note because the free price history only reaches back a year.

Rick scanned the same address a minute after Trench Desk, and I had read Axiom's page for it earlier the same day. Market caps agreed within 1% at each read. Trench Desk's top-10 holder share with pools excluded came out at 35.5%, against Axiom's 35.48%; Rick's holder line omits the second-largest wallet Trench Desk shows and reports 31%, which suggests it also excludes a large labeled wallet. Rick and Axiom report a full-history ATH and a six-figure holder count that free data sources cannot match, and the card is honest about that instead of guessing.

The wallet feed at the top of this page follows one anonymous public pump.fun wallet. Each sell shows realized profit and loss against the buys the bot saw, net of everything the wallet paid.

The paper-trade PnL card the bot posted: $Surfd, P0ND following Fast flipper, minus 21.4 percent, entry 0.100 SOL, exit 0.079 SOL, held one minute, simulated from Jupiter quotes with no transaction sent

Desk Pro members can paper-follow a tracked wallet. When the wallet buys, the bot quotes the same buy on Jupiter; when it sells, it quotes the exit and posts a PnL card, losses included. The first live round trip lost 21.4% while the wallet itself lost 11.4% on the same token: the follower is always quoted a moment after the leader, and in a one-minute memecoin trade that gap is most of the result. Measuring it is the honest version of what a copy-trading bot sells.

Caller leaderboard for the last seven days with average and median peak multiple, 2x hit counts, best calls, and the scoring rule in the footer

/call records the market cap at call time and refuses a repeat within 24 hours. A poller raises each call's peak, replies under the original call at 2x, 5x, 10x and beyond, and posts a daily 24-hour board on its own. /stats shows a caller's record and /fc who called a token first.

A rules button grants the Member role, tickets open private channels that lock instead of being deleted, AutoMod blocks wallet-drainer phrases and stray contract addresses, and staff actions land in #desk-log.

Verification

The repository has 209 tests on recorded fixtures, with no network in the test path. The fixtures are real public data captured the same day: DexScreener responses, mainnet swaps, failed and non-swap transactions, mint accounts with revoked and active authorities, holder lists and their owners from a Helius RPC, Jupiter quotes, and paid and unpaid DexScreener orders. An offline replay runs a synthetic call scenario, the transaction fixtures, and the audit planner, including a deliberate permission drift the audit catches.

Running it live surfaced bugs the tests had not: a locked stats channel the bot could no longer see, a permission rule that kept members and Rick from adding reactions, which stopped Rick from working at all, an apply step that resent another app's grant and had the whole request rejected, and an ATH that silently covered only six months. Each one is fixed, most with a test, and the audit of the live server now reports nothing left to change.

What it does not do

Trench Desk does not trade, sign, copy real trades, or give advice. Peaks and wallet activity are sampled on an interval, so a spike between samples is missed. Swaps are inferred from balance changes, so complex multi-token transactions are skipped. The holder count stops at 5,000, the ATH covers about a year, the developer's launch history relies on pump.fun's unofficial API, and LP lock is not verified. Milestone replies and AutoMod blocks are covered by tests but were not triggered during this run, because no tracked call doubled and server owners and bots are exempt from AutoMod.

For a production community I would move the wallet feed from polling to websocket subscriptions, add a paid price-history source for true ATH, store data in Postgres if it runs as more than one instance, sync the Desk Pro role from a payment platform, and host it with Doppler-managed secrets and alerting on poller lag and Discord API errors.

Next

D2C WhatsApp AI Support

D2C WhatsApp AI Support