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.

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.

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.

/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.