Hack Theory // Discord application

Sixty commands. No chat reading.

NullPointer Exception Handler turns a Discord server into a structured learning environment — timed quizzes, per-member CTFs, a simulated Linux box, passive security tooling, published courses, and real IT tasks reviewed by staff.

It runs entirely on Cloudflare Workers, holds no Gateway connection, and requests no privileged intents.

$ botctl inspect nullpointer
version      4.16.0
commands     60 registered
runtime      Cloudflare Workers
storage      Durable Objects + SQLite
privileged   intents: none
admin        permission: not requested
messages     ordinary chat: not read
gateway      connection: none
servers      owner-approved individually

status: ready ✓

Permission transparency

Purpose-built access, not Administrator.

Discord delivers interactions either through a Gateway connection or an outgoing HTTP webhook — never both. This bot uses the webhook path, so there is no socket sitting in your server consuming events. Everything it does starts from a signed interaction you initiated.

INTERACTIONS

Signed requests only

Slash commands and buttons arrive as Discord-signed HTTP requests. Every payload is verified before the Worker acts on it.

PRIVACY

No privileged intents

Message Content, Server Members, and Presence stay disabled. Ordinary chat and private DMs are never read or stored.

DISCLOSED

One documented exception

The optional conversational companion reads a single general channel, stores none of it, and can be switched off by staff. It is written down in the Privacy Policy rather than buried.

SECURITY

Owner-gated servers

The install does not request Administrator. Each server is approved individually by the bot owner — until yours is enabled the commands stay inactive.

What it does

Nine systems, one application.

QUIZZES

Randomized and timed

Roughly four challenges a day on a randomized interval, drawn from reviewed questions plus procedural generators. First answer locks; correctness stays private until the quiz closes.

PRACTICE SHELL

A box you cannot break

/terminal and /sh give you a simulated Linux machine with a real interpreter — pipes, redirection, grep, find. Three planted weaknesses are waiting in the starting image.

DYNAMIC CTF

Per-member flags

Challenges randomize per session and flags are signed to the solver, so a copied flag will not validate as someone else's solve. /ctf-stats tracks the live board.

PASSIVE RECON

Look without touching

Certificate transparency, RDAP, DNS-over-HTTPS, and malware filtering. Nothing connects to, scans, or probes a host you name.

COURSE PORTAL

Publish and browse

/teach opens an upload portal that publishes a structured course to the academy channels, with labs, assessments, and safe-use boundaries.

ASSIGNED WORK

Real IT tasks

Staff assign a randomized task; the member submits it and answers five follow-up questions, which staff review through /task-report.

MODERATION

Notices and review

Warning and information notices, member moderation views, staff polls that escalate on a majority, and a private queue for suspicious-contact reports.

ALERTING

CISA KEV watch

The known-exploited-vulnerability catalog is polled hourly and routed to the server, alongside topic-routed daily learning material.

OPT-IN AI

Tutor and fact checker

/ask answers technical questions privately by default. /fact-check evaluates a claim respectfully rather than dunking on whoever made it.

Complete reference

Every command, and who can run it.

Commands marked Manage Server are restricted by Discord's own permission system, not by an honour system. Owner commands are limited to the bot owner regardless of server role.

Learning and progression

CommandWhoPurpose
/quiz-statusEveryoneShow the active quiz and the next scheduled launch.
/leaderboardEveryoneShow the top quiz competitors.
/profileMemberPrivately show your quiz statistics.
/rewardsMemberSee XP, streak, and random bonus reward details.
/checkinMemberCheck in for the day and build your streak.
/study-tipEveryoneGet a practical security or engineering study prompt.
/path-screenEveryoneStart a short skills screen for a technical learning path.
/perksMemberShow what your roles entitle you to, and what stays free for everyone.

AI tutor

CommandWhoPurpose
/askMemberAsk the security-focused AI tutor a technical question.
/fact-checkMemberRespectfully check a technical claim with the AI tutor.

Practice: CTF and shell

CommandWhoPurpose
/ctf-startEveryoneStart a private per-member capture-the-flag challenge.
/ctf-submitEveryoneSubmit an answer to your active CTF session.
/ctf-statsEveryoneShow the live CTF solve leaderboard.
/terminalEveryoneOpen or reset your simulated Linux practice shell.
/shEveryoneRun a command in your practice shell. Simulated, and output is public.

Passive security toolkit

CommandWhoPurpose
/subnetEveryoneIPv4 subnet calculator: network, broadcast, mask, and usable range.
/hashEveryoneCompute a SHA digest, for verifying a download against its checksum.
/encodeEveryoneConvert text between base64, hex, and URL encoding.
/ip-lookupEveryoneLook up public IP registration data without probing the host.
/dns-lookupEveryoneResolve a DNS record through Cloudflare DNS over HTTPS.
/url-checkEveryoneCheck a hostname against malware and phishing DNS filtering.
/cert-searchEveryoneFind subdomains from public certificate transparency logs.
/domain-infoEveryoneRegistrar, registration date, expiry, and status via RDAP.
/email-securityContributorAudit SPF, DMARC, and MTA-STS posture for a domain.
/attack-surfaceContributorCombined passive exposure review for a domain.
/bulk-url-checkContributorCheck up to eight URLs against malware and phishing filtering.
/contributor-insightsContributorAdvanced combined domain defence briefing.

Assigned IT tasks

CommandWhoPurpose
/task-mineMemberShow your active assigned task and how to submit it.
/task-submitMemberSubmit your task and answer the five follow-up questions.
/task-assignManage ServerAssign a randomized IT task to a member.
/task-reportManage ServerReview completed task reports.
/task-clearManage ServerClear a member's current task so a new one can be given.

Membership and privacy

CommandWhoPurpose
/verifyEveryoneStart or resume server verification.
/rolesMemberPick your languages, systems, interests, and region.
/helpEveryoneLearn how the bot works, including participation and privacy.
/link-createMemberCreate a disclosed, aggregate-click community link.
/link-statsMemberView aggregate clicks for one of your disclosed links.
/report-securityMemberPrivately queue a suspicious-contact report for staff review.
/delete-my-dataMemberConfirm and permanently delete your answers and statistics.

Moderation and notices

CommandWhoPurpose
/warnManage ServerPost a warning notice, optionally pinging someone.
/notifyManage ServerPost an information notice, optionally pinging someone.
/mod-userManage ServerView a member profile with moderation options.
/pollManage ServerCreate a yes/no poll and alert staff if the majority votes yes.
/bulk-deleteManage ServerBulk delete messages from specified users in a channel.
/broadcastManage ServerSend an announcement to a channel, optionally pinging one role.

Content and server management

CommandWhoPurpose
/teachManage ServerOpen the course upload portal and publish a course.
/post-contentManage ServerPost the most interesting unseen item to a channel.
/pasteManage ServerPost a file as a highlighted code block or tidy text.
/embedManage ServerBuild a custom embedded message.
/clone-channelManage ServerClone messages from a source channel to a destination.
/server-setupManage ServerProvision the verification role, channel, and theme.
/pendingManage ServerShow every half-finished task, review, and draft.
/verify-queueManage ServerShow members waiting on a verification decision.
/security-auditManage ServerWrite a read-only audit of non-managed role permissions.
/quiz-startManage ServerLaunch a quiz immediately.
/quiz-closeManage ServerClose and score the active quiz.

Bot owner

CommandWhoPurpose
/guild-approveBot ownerApprove a server to use the bot.
/guild-revokeBot ownerRevoke a server's access to the bot.
/guild-listBot ownerList servers approved to use the bot.

Before installation

Know what will happen.

  1. Discord opens its official authorization screen for application 1306605317676859392.
  2. Discord displays the exact permissions being requested, for your review.
  3. Administrator is not among them, and no privileged intents are enabled.
  4. After install, the commands stay inactive until the bot owner approves your server.
  5. Request approval in Hack Theory with the server ID the bot reports back to you.

Ready to handle the exception?

Add the bot to your server, or join Hack Theory first and try every command there.

Add the bot