Search the database
Search forum topics
Search members
Search for trades
diablo2.io is supported by ads
diablo2.io is supported by ads
2 replies   56 views
2

Description

Hello everyone !
I hope you are all having a good day and if not, remember that at least it's friday so it can't be that bad.

Following the post from post4362917.html#p4362917 , I decided to make a Discord Bot for
Terror
zones with some added functionality that I hope you will all appreciate.
It's more of a Passion project, seeing if I could do something for someone else that they may need help with.
The invite link for the bot is the following: https://discord.com/oauth2/authorize?cl ... 7407664188
If anyone wants to host it themselves, just write me a message and I'll send the source code.
Long story short, after a couple of days of both working on the bot in my spare time and testing it myself, here is what it has to offer.



D2
Terror
Zone Discord Bot

A Discord bot that tracks the current Diablo II
Terror
Zone, updates its nickname with live info, and optionally posts announcements in your server.

Features

Live
Terror
Zone tracking
Smart nickname formatting that respects Discord’s 32 character limit
Minimal API usage with caching and timed refresh
Optional zone change announcements
Per-server configuration
Slash command support
Built-in health diagnostics


Add the Bot

Invite the bot to your server using your invite link.

Required permissions:
Manage Nicknames
Send Messages
Embed Links
View Channels


Setup

Run the following command in the channel where you want announcements:
/setup

This will:

Set the current channel as the announcement channel
Enable nickname updates
Enable announcements
Immediately apply the current
Terror
Zone


Public Commands

/zone
Show current
Terror
Zone

/nextzone
Show next
Terror
Zone and when it starts

/status
Show bot status and cache information

/legend
Show abbreviations and immunity icons

/help
Show command list


Admin Commands (requires Manage Server permission)

/setup
Initialize the bot in the current channel

/setchannel #channel
Change the announcement channel

/showconfig
Display current server configuration

/enabletz
Enable all
Terror
Zone features

/disabletz
Disable all
Terror
Zone features

/nickon
Enable nickname updates

/nickoff
Disable nickname updates

/announceon
Enable announcements

/announceoff
Disable announcements

/nickimmunities on/off
Show or hide immunities in the nickname

/nicktiers on/off
Show or hide EXP/LOOT tiers in the nickname

/forcezone
Force an immediate
Terror
Zone refresh

/zonedebug
Show raw API data for debugging

/health
Run a full system health check


Nickname Behavior

The bot updates its nickname using:

Zone Name + Time Left + Immunities + EXP/LOOT Tier

Example:
DW/UP 18m F/C/L C/D


Formatting rules:

Always tries to show all information first
Abbreviates zone names if necessary
Removes lower priority information only if required
Uses compact separators to save space


Customization

Admins can control what appears in the nickname:
/nickimmunities off
/nicktiers off

Example result:
DW/UP 18m


Announcements

When enabled, the bot posts a message when the
Terror
Zone changes.

Includes:
Previous zone to current zone
Time remaining
Immunities
EXP / Loot tier


Health Check

/health

Displays:

Discord latency
Database status
API status
Cache status
Log system status
Backup availability
Background task state


Notes

Slash commands may take a short time to appear after adding the bot
Discord limits nicknames to 32 characters
The bot minimizes API usage using caching and timed updates


Troubleshooting

If something does not work:

Run:
/health
Check:
Bot has required permissions
Bot role is above other roles (for nickname changes)

I will announce any future updates in this post ( I'll move the update announcements from the old topic as well for visibility ).
I apreciate the community here and I hope it can help you in any way.
If you come across bugs or maybe even have some ideas for new functionalities, please feel free to contact me.

Have a nice weekend, and see you around the forums lads and lasses.
5

Can be used to make Runewords:

7
Hello everyone !
I hope you are all having a good day and if not, remember that at least it's friday so it can't be that bad.

Following the post from post4362917.html#p4362917 , I decided to make a Discord Bot for
Terror
zones with some added functionality that I hope you will all appreciate.
It's more of a Passion project, seeing if I could do something for someone else that they may need help with.
The invite link for the bot is the following: https://discord.com/oauth2/authorize?cl ... 7407664188
If anyone wants to host it themselves, just write me a message and I'll send the source code.
Long story short, after a couple of days of both working on the bot in my spare time and testing it myself, here is what it has to offer.



D2
Terror
Zone Discord Bot

A Discord bot that tracks the current Diablo II
Terror
Zone, updates its nickname with live info, and optionally posts announcements in your server.

Features

Live
Terror
Zone tracking
Smart nickname formatting that respects Discord’s 32 character limit
Minimal API usage with caching and timed refresh
Optional zone change announcements
Per-server configuration
Slash command support
Built-in health diagnostics


Add the Bot

Invite the bot to your server using your invite link.

Required permissions:
Manage Nicknames
Send Messages
Embed Links
View Channels


Setup

Run the following command in the channel where you want announcements:
/setup

This will:

Set the current channel as the announcement channel
Enable nickname updates
Enable announcements
Immediately apply the current
Terror
Zone


Public Commands

/zone
Show current
Terror
Zone

/nextzone
Show next
Terror
Zone and when it starts

/status
Show bot status and cache information

/legend
Show abbreviations and immunity icons

/help
Show command list


Admin Commands (requires Manage Server permission)

/setup
Initialize the bot in the current channel

/setchannel #channel
Change the announcement channel

/showconfig
Display current server configuration

/enabletz
Enable all
Terror
Zone features

/disabletz
Disable all
Terror
Zone features

/nickon
Enable nickname updates

/nickoff
Disable nickname updates

/announceon
Enable announcements

/announceoff
Disable announcements

/nickimmunities on/off
Show or hide immunities in the nickname

/nicktiers on/off
Show or hide EXP/LOOT tiers in the nickname

/forcezone
Force an immediate
Terror
Zone refresh

/zonedebug
Show raw API data for debugging

/health
Run a full system health check


Nickname Behavior

The bot updates its nickname using:

Zone Name + Time Left + Immunities + EXP/LOOT Tier

Example:
DW/UP 18m F/C/L C/D


Formatting rules:

Always tries to show all information first
Abbreviates zone names if necessary
Removes lower priority information only if required
Uses compact separators to save space


Customization

Admins can control what appears in the nickname:
/nickimmunities off
/nicktiers off

Example result:
DW/UP 18m


Announcements

When enabled, the bot posts a message when the
Terror
Zone changes.

Includes:
Previous zone to current zone
Time remaining
Immunities
EXP / Loot tier


Health Check

/health

Displays:

Discord latency
Database status
API status
Cache status
Log system status
Backup availability
Background task state


Notes

Slash commands may take a short time to appear after adding the bot
Discord limits nicknames to 32 characters
The bot minimizes API usage using caching and timed updates


Troubleshooting

If something does not work:

Run:
/health
Check:
Bot has required permissions
Bot role is above other roles (for nickname changes)

I will announce any future updates in this post ( I'll move the update announcements from the old topic as well for visibility ).
I apreciate the community here and I hope it can help you in any way.
If you come across bugs or maybe even have some ideas for new functionalities, please feel free to contact me.

Have a nice weekend, and see you around the forums lads and lasses.
7
OP
Bot update (23.04.2026):

Added next-zone preview support for display commands.
Refactored the bot from a single-server design into a multi-guild design.
Removed hardcoded GUILD_ID and ANNOUNCE_CHANNEL_ID from .env.
Added SQLite storage for per-server configuration.
Added per-server setup and control commands:
Made the bot usable in multiple Discord servers through one hosted instance.
Adjusted permissions so setup/admin commands use Manage Server instead of requiring full Administrator.
Clarified which commands are public and which are admin-only.
Added a custom !help command and disabled the default Discord.py help command.
Restricted !zonedebug so it can be limited to server managers/admins instead of everyone.
Improved command error handling so users get clean messages instead of raw exceptions.
Deployed the bot to a VPS.
Added cleanup behavior for servers that remove the bot.
Added on_guild_remove cleanup so the bot deletes server config automatically when kicked.
Added loop-time stale-config cleanup as a fallback if a guild record remains after the bot is gone.
Added startup audit cleanup, so on every restart the bot checks database guilds against actual connected guilds and removes stale entries.
Centralized guild cleanup logic into a single helper and improved cleanup logging.
Added structured logging.
We split logs into:
activity.log
error.log
Kept console logging so logs also remain visible through journalctl.
Added a !status command to show runtime and cache health information.
Improved logging and status so the bot is easier to monitor in production.
Reduced API usage by introducing caching.
Changed nickname updates to use cached data and update locally every minute.
Added a refresh policy so the API is only called again shortly before the current zone expires.
Aligned nickname updates to the real minute boundary, so countdown changes happen at exact minute marks instead of drifting from startup time.
Split background behavior into two internal loops:
Minute-aligned nickname updater
API refresh loop based on expiry
Kept !forcezone available for manual refresh/testing.
Added automatic SQLite database backups on the VPS.
7
OP
Bot update(24.04.2026):

Converted
Key
commands to Discord embeds for cleaner presentation:
!zone
!status
!help
!showconfig

Added timestamps and improved formatting across all outputs
Implemented API failure handling system
Tracks failures, last error, and last successful fetch
Added graceful fallback
Uses cached data if API fails
Introduced exponential backoff
Prevents excessive API calls during outages
Extended !status to display API health

Rebuilt nickname generation with intelligent fallback logic
Priority order:
Zone name
Time left
Immunities
EXP / Loot tiers

Behavior:
Always tries to display full info first
Falls back to abbreviated zone names only if necessary
Only removes info when required to fit Discord’s 32-char limit

Optimized formatting
Added nickname customization settings per server:
!nickimmunities on/off
!nicktiers on/off
Stored in database and applied dynamically
Converted commands to hybrid commands (!command + /command)

Implemented dropdown choices for:
/nickimmunities
/nicktiers

Added permission-based visibility
Improved !setup / /setup command:
Instantly applies current
Terror
Zone
Updates bot nickname immediately
Sends current TZ announcement right away

Replaced plain text announcements with embed-based messages
Now includes:
Previous → current zone transition
Time remaining
Immunities
EXP / Loot tiers

Added !nextzone / /nextzone
Displays upcoming
Terror
Zone and start time

Added !health / /health
Full system diagnostic including:
Discord latency
Database access
TZ cache status
API health
Logs and backups
Background tasks
9

Advertisment

Hide ads
999

Greetings stranger!

You don't appear to be logged in...

No matches
 

 

 

 

You haven't specified which diablo2.io user you completed this trade with. This means that you will not be able to exchange trust.

Are you sure you want to continue?

Yes, continue without username
No, I will specify a username
Are you sure you want to delete your entire Holy Grail collection? This action is irreversible.

Are you sure you want to continue?

Yes, delete my entire collection
No, I want to keep my collection
Choose which dclone tracking options you want to see in this widget:
Version:
Value:
Hide ads forever by supporting the site with a donation.

Greetings adblocker...

Warriv asks that you consider disabling your adblocker when using diablo2.io

Ad revenue helps keep the servers going and supports me, the site's creator :)

A one-time donation hides all ads, forever:
Make a donation