A community-maintained library of bots, webhooks, and integrations for Haven — the self-hosted private chat server.
These integrations are written and maintained by the Haven community. They are not part of Haven itself and are not reviewed or supported by the Haven maintainers beyond a basic sanity glance. Use them at your own discretion.
If you've built something useful for Haven, please PR it in. See CONTRIBUTING.md.
| Name | Description | Language | Author |
|---|---|---|---|
github-releases |
Posts a formatted message to a Haven channel whenever a new release is published on a watched GitHub repository. | Node.js | @ancsemi |
rss |
Polls RSS/Atom feeds and posts new items into a Haven channel (optional /rss management). |
Node.js | @Amnibro |
welcome |
Greets users when they join a channel via Haven member-joined events. |
Node.js | @Amnibro |
reminders |
Schedule channel reminders with /remind and /reminders (persisted timer). |
Node.js | @Amnibro |
automod |
Word-list automod on message events: warn, optional delete and mute. |
Node.js | @Amnibro |
custom-commands |
User-defined canned tags via /tag and optional !prefix message triggers. |
Node.js | @Amnibro |
leveling |
Message XP / levels with /rank and /levels leaderboard. |
Node.js | @Amnibro |
starboard |
Posts highlighted messages when star reactions hit a threshold. | Node.js | @Amnibro |
twitch-live |
Announces when watched Twitch streamers go live (Helix API). | Node.js | @Amnibro |
youtube |
Posts new YouTube uploads via channel RSS (no API key). | Node.js | @Amnibro |
polls |
Polls with /survey and /vote, with live tallies (Haven keeps /poll for its own polls). |
Node.js | @Amnibro |
giveaway |
Timed giveaways: /giveaway start|enter|end with random winner. |
Node.js | @Amnibro |
uptime |
Poll URLs and announce up/down flips with latency. | Node.js | @Amnibro |
translate |
Slash /translate via LibreTranslate or MyMemory fallback. |
Node.js | @Amnibro |
weather |
Slash /weather using Open-Meteo geocoding + forecast (no key). |
Node.js | @Amnibro |
reddit |
Poll subreddit new listings and post fresh threads. | Node.js | @Amnibro |
scheduled-announce |
Interval or daily HH:MM channel announcements. | Node.js | @Amnibro |
tickets |
Support tickets: /ticket open|close|list with persisted cards. |
Node.js | @Amnibro |
suggestions |
Suggestion box: /suggest, list, approve/reject (optional approvers). |
Node.js | @Amnibro |
moderation |
Slash /kick /ban /unban /mute /unmute (needs can_moderate). |
Node.js | @Amnibro |
afk |
/away and /back, plus a notice when someone mentions a person who is away. |
Node.js | @Amnibro |
counting |
Sequential counting channel game (reset or STRICT freeze). | Node.js | @Amnibro |
quotes |
Quote book: /quote add|random|get|list|remove. |
Node.js | @Amnibro |
define |
/define <word> via Free Dictionary API. |
Node.js | @Amnibro |
crypto |
/crypto <symbol> prices via CoinGecko (no key). |
Node.js | @Amnibro |
world-clock |
/clock for a city or time zone, plus an optional multi-zone board. |
Node.js | @Amnibro |
gitlab-releases |
Posts GitLab Release webhooks into a Haven channel. | Node.js | @Amnibro |
steam-news |
Poll Steam news for APP_IDS; post new gids. | Node.js | @Amnibro |
hackernews |
Poll HN top stories above SCORE_MIN. | Node.js | @Amnibro |
karma |
name++ / name-- and /karma scores. |
Node.js | @Amnibro |
confessions |
Anonymous /confess as Confession Bot. |
Node.js | @Amnibro |
say |
/say <text> re-posts as the bot (optional allowlist). |
Node.js | @Amnibro |
purge |
/purge match|last via message ring buffer + DELETE. |
Node.js | @Amnibro |
dice |
/dice NdM+K classic dice notation. |
Node.js | @Amnibro |
choose |
/choose a | b | c random pick. |
Node.js | @Amnibro |
wikipedia |
/wiki <query> MediaWiki summary + link. |
Node.js | @Amnibro |
math |
/math <expr> safe calculator (+ - * / ^ %). |
Node.js | @Amnibro |
joke |
/joke dad & programming jokes (public APIs). |
Node.js | @Amnibro |
animal-pics |
/cat /dog random animal image URLs. |
Node.js | @Amnibro |
github-issues |
GitHub issues webhook → opened/closed cards. | Node.js | @Amnibro |
npm-releases |
Poll npm registry for PACKAGE_NAMES version bumps. | Node.js | @Amnibro |
birthday |
/birthday set MM-DD; daily happy-birthday list. |
Node.js | @Amnibro |
rsvp |
/event create + RSVP yes/no/maybe. |
Node.js | @Amnibro |
bump-reminder |
/bump timer; remind every BUMP_EVERY_HOURS. |
Node.js | @Amnibro |
lastfm |
/np [user] Last.fm now-playing (API key). |
Node.js | @Amnibro |
trivia |
/trivia start Open Trivia DB; first correct wins. |
Node.js | @Amnibro |
warns |
/warn /warns staff warning log (STATE_FILE). |
Node.js | @Amnibro |
report |
/report to staff webhook (optional anonymous). |
Node.js | @Amnibro |
sticky |
/sticky set; re-post every N messages. |
Node.js | @Amnibro |
timezone-convert |
/tz <time> <from> <to> zone convert. |
Node.js | @Amnibro |
urbandict |
/ud <term> Urban Dictionary (often NSFW). |
Node.js | @Amnibro |
color |
/color #RRGGBB RGB/HSL/contrast breakdown. |
Node.js | @Amnibro |
uuid-tool |
/uuid [n] generate UUID v4 values. |
Node.js | @Amnibro |
base64 |
/encode and /decode for Base64. |
Node.js | @Amnibro |
password-gen |
/password [length] secure random password. |
Node.js | @Amnibro |
echo-once |
/echo ephemeral when recipient_id known. |
Node.js | @Amnibro |
mod-notes |
/note add|list staff notes (STATE_FILE). |
Node.js | @Amnibro |
None yet — be the first to add one!
Projects that talk to Haven but are developed in their own repositories. They are listed here so people can find them; the code stays with its author, who updates it on their own schedule.
| Name | Description | Links | Author |
|---|---|---|---|
| Haven.DotNet | Haven bot library for .NET developers | Haven.DotNet | @josolanes |
| ContainrBot | An extensible container management chat bot with flexible chat service and container orchestration support | ContainrBot | @josolanes |
Most entries are small, self-contained scripts. The general pattern is:
- Read the bot's own README to see what env vars / config it needs.
- Create a Haven bot in your server (
Settings → Server Admin Settings → Bots) and copy its webhook token. - Host the script somewhere that can reach both Haven and (if applicable) whatever external service it integrates with — a $0 tier on Fly.io / Railway / Render / Cloudflare Workers / a tiny VPS all work fine.
- Set the required env vars and start it.
Code in this repo is contributed by community members. The Haven maintainers do not endorse, audit, or guarantee any individual entry. Always read a bot's source before pointing it at your server — especially if it asks for a bot token with moderation permissions.
Each subfolder is licensed individually (see its LICENSE file). When in doubt, assume MIT.