{"_id":"@anura-gate/watcher-discord","_rev":"3-0d08e45e9dadbaceee34cd6588499531","name":"@anura-gate/watcher-discord","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@anura-gate/watcher-discord","version":"0.1.0","keywords":["gate","watcher","discord","messaging","self-hosted"],"license":"MIT","_id":"@anura-gate/watcher-discord@0.1.0","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"bin":{"gate-watcher-discord":"cli.js"},"dist":{"shasum":"4a0f276036cd412eb607e4bbceff125c1bfcd90e","tarball":"https://registry.npmjs.org/@anura-gate/watcher-discord/-/watcher-discord-0.1.0.tgz","fileCount":7,"integrity":"sha512-HnJU+RBHELNferrmA4v2gt2CBLFJclnIxMmZEsewDpaXCXZQ9f0IwUn02MC1RtFfhDCPMaM6pLhfTDl7wwKV9Q==","signatures":[{"sig":"MEYCIQDuZeOu2GHD/yhwARbc9WP/kVdEb++MB7ln7ZYNMthoGQIhAImBg3VxLRS/2EF9N8phrZZZ6cl2hJhdufWGwhxmggIz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53258},"main":"index.js","engines":{"node":">=18"},"gitHead":"3a4dd8fd893355926391ba5112ae2d4232fe37ed","scripts":{"dev":"node cli.js","start":"node cli.js"},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"_npmVersion":"10.9.2","description":"GATE Watcher — Self-hosted daemon for Discord account monitoring. Token never leaves your machine.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"debug":"^4.4.3","dotenv":"^17.3.1","qrcode":"^1.5.4","discord.js-selfbot-v13":"^3.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/watcher-discord_0.1.0_1771499620361_0.14823331485715174","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anura-gate/watcher-discord","version":"0.1.1","keywords":["gate","watcher","discord","messaging","self-hosted"],"license":"MIT","_id":"@anura-gate/watcher-discord@0.1.1","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"bin":{"gate-watcher-discord":"cli.js"},"dist":{"shasum":"f24344ef87099eef0aaa1e4eeb557ba8a49a2334","tarball":"https://registry.npmjs.org/@anura-gate/watcher-discord/-/watcher-discord-0.1.1.tgz","fileCount":7,"integrity":"sha512-0x4rVnsaIo37MORwXBCePwqoVAj+fuK+YOjwS44PjfpkHTzlJBrfNg1VZ7MHT9an174aZrvZIjKIqPzYRcUiZg==","signatures":[{"sig":"MEYCIQCxJom1RvOtRm6QlSJNzIJJNcXcADDT+p5PGjXDlt89DgIhANcfChFet3lot3hX5RELR3nIADamvsynvzNkSqc6jOaT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53641},"main":"index.js","engines":{"node":">=18"},"gitHead":"5c5f0faef20ef41bf9d7a7bd4cdb1b5247782879","scripts":{"dev":"node cli.js","start":"node cli.js"},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"_npmVersion":"10.9.2","description":"GATE Watcher — Self-hosted daemon for Discord account monitoring. Token never leaves your machine.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"debug":"^4.4.3","dotenv":"^17.3.1","qrcode":"^1.5.4","discord.js-selfbot-v13":"^3.4.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/watcher-discord_0.1.1_1772345841456_0.7934164534378261","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anura-gate/watcher-discord","version":"0.2.0","description":"GATE Watcher — Self-hosted daemon for Discord account monitoring. Token never leaves your machine.","main":"index.js","bin":{"gate-watcher-discord":"cli.js"},"scripts":{"start":"node cli.js","dev":"node cli.js"},"keywords":["gate","watcher","discord","messaging","self-hosted"],"license":"MIT","homepage":"https://anuragate.com","repository":{"type":"git","url":"git+https://github.com/ahmad-ajmal/AnuraGate_Sample.git"},"dependencies":{"debug":"^4.4.3","discord.js-selfbot-v13":"^3.4.2","dotenv":"^17.3.1","qrcode":"^1.5.4"},"engines":{"node":">=18"},"_id":"@anura-gate/watcher-discord@0.2.0","gitHead":"0ebb362ebdf75c602ccbaa15cb7db91b80f2901d","bugs":{"url":"https://github.com/ahmad-ajmal/AnuraGate_Sample/issues"},"_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-RdpZr85ZKU2tzvK3O+DwNTAES1nGcIQW88LK5PWERo3jE1lQyURFk6UKCTNS01v+GxnIBSAnpMevbk4hWgdaSQ==","shasum":"b74382059ee6c58b9aabd20417d790ed418c2c65","tarball":"https://registry.npmjs.org/@anura-gate/watcher-discord/-/watcher-discord-0.2.0.tgz","fileCount":8,"unpackedSize":58158,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBUt4wfNixxUpwINga2nQWSQxHJsjRkvq7nTUIvK3Dn2AiEAx7wOs8aNTseFqb5I4tYf7T0ZbWHke5cZ/FsMhXl0h4A="}]},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"directories":{},"maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/watcher-discord_0.2.0_1772353017422_0.9843522282981023"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-19T11:13:40.240Z","modified":"2026-03-01T08:16:57.711Z","0.1.0":"2026-02-19T11:13:40.493Z","0.1.1":"2026-03-01T06:17:21.619Z","0.2.0":"2026-03-01T08:16:57.570Z"},"license":"MIT","keywords":["gate","watcher","discord","messaging","self-hosted"],"description":"GATE Watcher — Self-hosted daemon for Discord account monitoring. Token never leaves your machine.","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"readme":"# GATE Watcher — Discord\n\nSelf-hosted daemon that monitors your Discord account and pushes message events to GATE cloud for security processing. **Your Discord token never leaves your machine.**\n\n## How it works\n\n```\nYour Machine (Watcher)              GATE Cloud\n┌─────────────────────┐        ┌──────────────────┐\n│ Discord account      │───────>│ Security pipeline │\n│ (token stays HERE)   │<───────│ (redact, policy,  │\n│                      │ poll   │  audit, forward)  │\n└─────────────────────┘        └──────────────────┘\n```\n\n## Quick Start (CLI)\n\n```bash\ncd gate-watcher-discord\nnpm install\n\n# Create .env (or pass env vars directly)\ncp .env.example .env\n# Fill in GATE_KEY, GATE_INTEGRATION_ID, DISCORD_TOKEN\n\nnpm start\n```\n\n## Embed in Your App (SDK)\n\n```bash\nnpm install @anura-gate/watcher-discord\n```\n\n```js\nconst { GateDiscordWatcher } = require(\"@anura-gate/watcher-discord\");\n\nconst watcher = new GateDiscordWatcher({\n  gateKey: \"gk-xxx\",\n  integrationId: \"int_xxx\",\n  discordToken: \"your-discord-token\",\n});\n\nwatcher.on(\"ready\", (user) => {\n  console.log(`Discord connected: ${user.tag}`);\n});\n\n// Every incoming message after GATE security processing\nwatcher.on(\"message\", (message, result) => {\n  console.log(`From: ${message.author.tag}, Text: ${message.content}`);\n  console.log(`Security actions: ${result.securityActions}`);\n  console.log(`Blocked: ${result.blocked}`);\n});\n\n// Messages sent by you (from any device)\nwatcher.on(\"message_sent\", (message, result) => {\n  console.log(`Sent: ${message.content}`);\n});\n\nwatcher.on(\"action_result\", ({ action, success, error }) => {\n  console.log(`${action}: ${success ? \"done\" : error}`);\n});\n\nawait watcher.start();\n\n// Later...\nawait watcher.stop();\n```\n\n## SDK Events\n\n| Event | Args | Description |\n|---|---|---|\n| `ready` | `(user)` | Connected to Discord |\n| `message` | `(message, result)` | Incoming message processed by GATE |\n| `message_sent` | `(message, result)` | Outgoing message processed by GATE |\n| `message_update` | `(oldMsg, newMsg, result)` | Message edited, processed by GATE |\n| `message_delete` | `(message, result)` | Message deleted, processed by GATE |\n| `action` | `(action)` | Outbound action received from GATE queue |\n| `action_result` | `({ actionId, action, success, result, error })` | Outbound action completed |\n| `gate_error` | `({ path, status, error })` | GATE API call failed |\n| `limit_reached` | `(type)` | Plan limit hit |\n| `disconnected` | `(reason)` | Disconnected from Discord |\n| `stopped` | — | Watcher fully shut down |\n\n## SDK Options\n\n| Option | Required | Default | Description |\n|---|---|---|---|\n| `gateKey` | Yes | — | Virtual key (`gk-xxx`) |\n| `integrationId` | Yes | — | Integration ID (`int_xxx`) |\n| `discordToken` | Yes | — | Discord user token |\n| `gateUrl` | No | `\"https://anuragate.com\"` | GATE cloud URL |\n| `heartbeatInterval` | No | `30000` | ms between heartbeats |\n| `pollInterval` | No | `3000` | ms between outbound polls |\n| `sessionId` | No | — | Session ID for multi-tenant use |\n| `sessionLabel` | No | — | Human-readable session label |\n| `sessionMetadata` | No | `{}` | Arbitrary metadata for the session |\n\n### Advanced: Access discord.js directly\n\n```js\nconst client = watcher.getDiscordClient();\nconst guilds = client.guilds.cache;\n```\n\n## Setup\n\n1. Go to **GATE Dashboard → Integrations → Add Integration**\n2. Select **Discord**, copy the **Integration ID**\n3. Copy your **Virtual Key** from the **Keys** page\n4. Set the env vars and run\n\n## Environment Variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `GATE_KEY` | Yes | Your GATE virtual key |\n| `GATE_INTEGRATION_ID` | Yes | Integration ID from the dashboard |\n| `DISCORD_TOKEN` | Yes | Your Discord user token |\n| `GATE_URL` | No | Custom GATE cloud URL |\n| `WEB_PORT` | No | Port for the dev dashboard (CLI only) |\n\n## Security model\n\n- Discord token stored in `.env` on YOUR machine\n- GATE cloud never sees or stores your credentials\n- All message content passes through GATE's security pipeline\n- Both incoming and outgoing messages are reported to GATE\n- Billing, limits, and security enforced server-side\n","readmeFilename":"README.md","homepage":"https://anuragate.com","repository":{"type":"git","url":"git+https://github.com/ahmad-ajmal/AnuraGate_Sample.git"},"bugs":{"url":"https://github.com/ahmad-ajmal/AnuraGate_Sample/issues"}}