Hachi
Discord bot for Twitch and Kick stream notifications, raid protection, role panels, and server utilities.
Project maintained by FearlessKenji
Hosted on GitHub Pages — Theme by mattgraham
Hachi Patch Notes
These notes are written for server owners and moderators. They include changes
that affect setup, security, day-to-day use, or visible bot behavior. For the
full developer history, see CHANGELOG.md.
Unreleased
v3.9.0 - 2026-09-11
Birthdays
- Birthday setup now uses
Upcoming Birthday Reminder Channel, Upcoming
Birthday Reminder Role, Day of Birthday Ping Channel, and Day of Birthday
Role labels.
- Every unannounced birthday within two weeks receives one upcoming reminder.
The reminder is posted even without a configured reminder role; that role
only controls its optional mention. A
Create a Card button opens the
RecoCards birthday-card creator directly.
- Birthdays added one or two days beforehand receive the upcoming reminder
immediately. A birthday added on the day itself after the configured posting
hour receives the birthday announcement immediately.
v3.8.0 - 2026-08-29
Birthdays
- Upcoming Birthday Board entries show
(has card) or (no card set) beside
each member. Today’s birthday entries do not show a card status.
- When a Day of Birthday Role is configured, the Birthday Board shows a
Toggle Birthday Pings button. Clicking it adds the role; clicking it again
removes the role.
- Birthday setup now includes a
Birthday Board Posting setting. Daily
continues posting a new board each day. Upcoming birthdays only shows one
board when a birthday is within two weeks, updates that message instead of
reposting it, and removes it when no birthdays are within the two-week window.
v3.7.0 - 2026-08-16
Twitch Role Linking
- Twitch role linking now manages VIP status only. Hachi no longer requests
Moderator access or subscribes to Moderator updates. Previously linked
accounts remain linked.
- Hachi removes Discord Moderator roles that it previously managed before
clearing the old mapping. If Discord’s role hierarchy prevents cleanup, Hachi
keeps the mapping so an administrator can fix permissions and retry
/twitch sync.
/twitch panel now creates a canonical managed verification panel. Hachi
refreshes its wording on startup, recreates it when its message is deleted,
and supports moving, refreshing, or removing it with the channel and
action options. /twitch status reports its health, and managers receive
private guidance when Hachi loses channel access.
Patch Notes
/announce patch-notes now identifies every server by name and ID when
delivery fails or is skipped across private follow-up messages. Successful
deliveries are condensed into the total so long summaries remain within
Discord’s limits.
- When patch notes cannot reach the configured Hachi Updates channel, Hachi now
privately reminds members with Manage Server permission during later
command use. Reminders identify unavailable channels or missing permissions
under a Hachi updates need attention: heading and are limited to three per
server each day, at least 15 minutes apart.
v3.6.0 - 2026-08-11 - Special Delivery!
Modmail
- Server managers can run
/modmail setup to create a ready-to-use #modmail
entrance and a private category for support tickets.
- Members open tickets with the 📩 Create Ticket button. Hachi numbers each
private channel in order, beginning with
ticket-0001.
- Servers can choose several roles to notify and additional roles that may read
and answer tickets. Roles selected for notifications receive access
automatically.
- Only the Modmail panel belongs in
#modmail: members cannot chat, react, or
start threads there, and Hachi clears away other messages.
- Ticket openers cannot close their own requests. A staff member must confirm
closure, after which the opener loses access unless they also belong to the
configured support team.
- Closed tickets can be reopened, deleted, downloaded as a transcript, or stored
for later reference. Ordinary closed channels are removed after 15 days;
storing one keeps it available and counts toward the server’s chosen limit.
Link Fixing
- Fixed-link replies now contain only the full replacement URLs, without labels
or masked Markdown destinations.
v3.5.0 - 2026-08-03
Security
- Updated vulnerable networking and pattern-expansion dependencies.
Link Management
- Administrators can manage automatic replacements with
/links fix add,
/links fix remove, /links fix enable, /links fix disable, and
/links fix status.
- Instagram and TikTok replacements are suggested when no mappings exist, but
servers can configure other source and replacement domains.
- Facebook is no longer built in because Facebook share links may reveal the
sharer’s profile identity. Hachi warns administrators who add one manually.
- Administrators can block domains with
/links block. Hachi creates its own
Discord AutoMod rule, prevents matching messages from appearing, and privately
tells the sender that the link is not allowed.
- Blocking Facebook, Instagram, or TikTok also blocks its known embed-provider
counterpart. Removing either member of the pair removes the whole pair.
- Custom source and replacement domains configured with
/links fix add are
also treated as affiliates by link blocking.
- Link blocking recognizes actual URL and domain tokens without matching ordinary
words, partial hostnames, email addresses, or similarly named domains.
- Link-fixing mappings reject IP addresses and require plain domain names.
Commands
- Removed the
Fix Social Links and Shorten Amazon Links message context menus. Automatic link fixing is configured with /links fix.
- Hachi’s only message context menus are now
Convert to Reaction Roles and Edit Reaction Roles.
v3.4.2 - 2026-07-24
Smart Links
- Social-link fixing now focuses on Instagram, TikTok, and Facebook.
- Common Facebook posts, videos, reels, shares, photos, watch links,
permalinks, and group posts now receive cleaned, embed-friendly links.
- Platforms that did not improve Discord previews are no longer rewritten.
v3.4.1 - 2026-07-24
Smart Links
- Removed the
Shorten Amazon Links message context menu.
- Social-link replies now use platform-only labels such as
Instagram link.
Birthdays
- Birthday Board now only shows the
Set / Update Birthday and Sign Upcoming
Card buttons.
- Birthday Board entries now show only the date and member, without card-status
labels.
/birthday card list has been removed. Staff can still manage card links with
/birthday card set and /birthday card remove.
Patch Notes
/announce patch-notes no longer adds Part X/Y labels when a release note
is split across multiple Discord messages.
Reliability
- Stream-provider outages now produce concise log entries instead of filling
Hachi’s logs with entire proxy error pages.
v3.4.0 - 2026-07-24
Smart Links
- A new profile-installable
Shorten Amazon Links message context menu turns
recognized product URLs into short, tracking-free regional Amazon links.
- Server administrators can enable automatic social-link fixing from
/setup.
- Hachi replies without pinging and combines up to five cleaned, embed-friendly
links from a message into one masked-link reply.
- The profile-installable
Fix Social Links message context menu provides the
same cleanup on demand, even when automatic fixing is disabled.
Birthdays
- Birthday setup now supports separate channels for the birthday board,
week-before pings, and pings on birthdays.
- Birthday boards can show today’s birthdays and upcoming birthdays in the next
two weeks.
- Members can set, view, or remove their birthday from the birthday board
buttons.
- Staff can save RecoCards board links with
/birthday card set, remove them
with /birthday card remove, and review upcoming cards with /birthday card
list.
- Week-before birthday reminders include a
Create a card button for quickly
opening RecoCards. Staff still attach the finished card link with /birthday
card set.
- Week-before birthday reminders ping only the configured reminder role, not the
birthday members being listed.
- Birthday cards only need the RecoCards board link. Hachi automatically derives
the delivery link for birthday announcements.
- When staff add or remove a birthday card, Hachi refreshes the birthday board
right away when a board channel is configured.
- Upcoming card links are available through an ephemeral selector so a birthday
person’s own card stays hidden until their birthday.
Reliability
- Dependency security updates cleared the current
npm audit --audit-level=moderate
report.
/announce patch-notes now catches up on every unsent release newer than the
server’s last sent patch-note version, sending older missed releases before
the newest one.
- Twitch EventSub reconnect warnings now include a safe reason when Hachi rejects
an unexpected reconnect URL.
/raid sync now summarizes long channel error lists instead of failing with a
generic Discord embed error.
v3.3.3 - 2026-07-16
Reliability
- Twitch role EventSub reconnects now validate Twitch WebSocket URLs before
opening a replacement connection.
/raid audit now avoids noisy explicit-allow warnings for Hachi’s own role
and normal voice Connect access.
/raid audit and /raid sync now better explain when full quarantine sync
needs either Administrator or category/channel Manage Permissions exceptions.
/announce patch-notes stays focused on Hachi’s server-facing patch notes,
without adding HachiGen manager release notes to Discord update posts.
- Patch-note announcement posts now use one
## Hachi v... heading instead of
repeating a separate Hachi section heading.
v3.3.2 - 2026-07-14
Reliability
- Encrypted database writes now handle bot state updates correctly, including
Kick live-notification status changes.
- Kick notifications now keep retrying for a replay link after a stream ends
instead of giving up after one blocked or delayed VoD lookup.
Security and Privacy
- Twitch verification now includes a privacy note clarifying that Hachi never
sees Twitch passwords or stores OAuth tokens from member verification.
v3.3.1 - 2026-07-12
Setup
- Hachi Updates is now the first button in
/setup, making patch-note channel
setup easier to find.
- Fixed Hachi Updates channel selection so saving an announcement channel no
longer fails with a database binding error.
Reliability
- Kick stream notifications now stop retrying the VoD lookup when Kick blocks
the replay endpoint after a stream ends.
- If a Kick notification already has a valid VoD link, Hachi now clears the
stale live state without making another blocked lookup.
v3.3.0 - 2026-07-12
Security and Setup
- Hachi now expects its database to be encrypted at rest. HachiGen can generate
the database key, verify encrypted database access, convert an existing plain
database, rotate the key, and export a key backup.
- Hachi now expects
.env values to be stored encrypted. HachiGen saves Discord,
Twitch, and Kick configuration values as encrypted entries and only decrypts
them at runtime.
- Secret copy buttons are available in HachiGen for cases where a value needs to
be reused outside the bot. Copied secrets are temporary and are never printed
in logs.
Configuration
- Config files now support multiple bot owner IDs and multiple guild IDs
through
botOwners and guildIds arrays.
- Older
botOwner and guildId config files still work, but new saves from
HachiGen write the plural array format.
- Guild command deployment now deploys to every configured guild ID.
Hachi Updates
- Servers can now choose a Hachi Updates channel from
/setup.
- Hachi patch notes are manual and user-facing. They come from this file instead
of the full developer changelog.
- Bot owners can manually send the latest patch notes to opted-in servers with
/announce patch-notes.
Reliability
- Hachi now remembers when it leaves a server and keeps that server’s data for a
short cleanup window instead of deleting it immediately.
- Startup reconciliation repairs missing server rows and clears the left-server
marker when Hachi rejoins before cleanup.