• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
jaegerdev

jaegerdev

discord-logger

Public
Like
discord-logger
Home
Code
3
README.md
logger.ts
send.ts
Branches
1
Pull requests
Remixes
1
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
…
README.md

Discord Webhook Utilities

Simple, self-contained utilities for sending messages and embeds to Discord webhooks. Handles message chunking, embed limits, rate limiting, and batched logging.

Installation

Copy send.ts and optionally logger.ts into your project.

Configuration

Set the DISCORD_WEBHOOK_URL environment variable, or pass the webhook URL directly to functions.

Usage

Sending Messages

import { createErrorEmbed, createSuccessEmbed, send } from "./send.ts"; // Simple text message await send("Hello, Discord!"); // With custom webhook URL await send("Hello!", "https://discord.com/api/webhooks/..."); // With custom username/avatar await send("Hello!", undefined, { username: "My Bot", avatar_url: "https://example.com/avatar.png", }); // Long messages are automatically chunked await send("A".repeat(5000)); // Splits into multiple messages // Send an embed await send({ title: "Server Status", description: "All systems operational", color: 0x00ff00, fields: [ { name: "CPU", value: "12%", inline: true }, { name: "Memory", value: "45%", inline: true }, ], }); // Send multiple embeds await send([ { title: "Alert 1", description: "First alert", color: 0xff0000 }, { title: "Alert 2", description: "Second alert", color: 0xffcc00 }, ]); // Use embed helpers await send(createSuccessEmbed("Deployment Complete", "v1.2.3 is now live")); await send(createErrorEmbed("Build Failed", new Error("Missing dependency")));

Embed Helpers

import { createEmbed, createErrorEmbed, createInfoEmbed, createSuccessEmbed, createWarningEmbed, } from "./send.ts"; // Basic embed const embed = createEmbed("Title", "Description", 0x0099ff); // Pre-styled embeds with emoji prefixes createErrorEmbed("Error Title", "What went wrong"); // ❌ Red createSuccessEmbed("Success Title", "What happened"); // ✅ Green createInfoEmbed("Info Title", "Details"); // ℹ️ Blue createWarningEmbed("Warning Title", "Be careful"); // ⚠️ Yellow

Logging

import { createLogger, log } from "./logger.ts"; // Create a named logger const logger = createLogger("MyService"); logger.debug("Debug message"); // Only sent if minLevel allows logger.info("Service started"); logger.warn("Disk space low"); logger.error("Connection failed", new Error("timeout")); // Important: call finalize() to flush remaining logs await logger.finalize(); // Or use the quick singleton logger log.info("Quick log"); log.error("Something broke", new Error("details")); await log.flush();

Logger Configuration

const logger = createLogger("MyService", { webhookUrl: "https://discord.com/api/webhooks/...", // Optional, falls back to env minLevel: "debug", // "debug" | "info" | "warn" | "error" batchIntervalMs: 2000, // How often to send batched logs maxBatchSize: 15, // Max logs per batch includeTimestamp: true, // Show timestamps in output consoleOutput: false, // Also log to console });

API Reference

send(content, webhookUrl?, options?)

Send a message or embed to Discord.

  • content: string | Embed | Embed[]
  • webhookUrl: Optional webhook URL (falls back to DISCORD_WEBHOOK_URL env var)
  • options: { username?, avatar_url?, content? }

Returns: Promise<SendResult>

createLogger(name, options?)

Create a batched logger instance.

log.info/warn/error/debug(message)

Quick logging using a default logger.

Limits Handled Automatically

  • Message content: 2000 characters (auto-chunked)
  • Embed title: 256 characters
  • Embed description: 4096 characters
  • Fields per embed: 25
  • Field name/value: 256/1024 characters
  • Total embed characters: 6000
  • Embeds per message: 10

License

MIT

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.