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

Description

I’m trying to find (or confirm if it exists) a Discord bot for Diablo that tracks
Terror
Zones in a very minimal way? The best would be a bot that would just update it's own name about what zone is terrorized and for how long. Similar to this one that someone has made, but for 3-day instance reset timers for world of wracraft:

https://www.reddit.com/r/classicwow/com ... et_timers/
5

Can be used to make Runewords:

7
I’m trying to find (or confirm if it exists) a Discord bot for Diablo that tracks
Terror
Zones in a very minimal way? The best would be a bot that would just update it's own name about what zone is terrorized and for how long. Similar to this one that someone has made, but for 3-day instance reset timers for world of wracraft:

https://www.reddit.com/r/classicwow/com ... et_timers/
7
Bot code has been removed as following the updates, it's becoming bigger and bigger.
Also, I see that when I post it on the forums , the python specific formatting is screwed.
If anyone wants to host it for themselves, contact me and I'll send you the source files.
For the bot itself, see posts below.
7
After testing it for like a day, I decided to host it up and let everyone who needs it use it without the hassle of having computer literacy skills.
I have further modified the original bot so that everyone can use it out of the box, without having to mumble through .env files and such. ( I have updated the source code above as well, to reflect the new changes)

To achieve this, once the bot is invited to a server, just type !setup in the chat channel you want the bot to anounce in ( you must run !setup at least once so that the bot actually starts working ).

These are all the various bot commands so far:

Admin ( by Admin, I mean both Admins as well as people who have the Manage Server role in the server ):

!setup - initial setup of the bot, automatically adding the GUILD_ID and ANNOUNCE_CHANNEL_ID to the sqlite db the bot uses so it knows on which server/channel to connect to
!setchannel - self explanatory, use it in case you need to change the channel it anounces on ( for example: !setchannel #tz-updates )
!enabletz / !disabletz - enables/disables the whole bot functionality, aka nickname updates and announcements
!nickon / !nickoff - enables/disables the nickname updates
!announceon / !announceoff - enables/disables the announcements via text channel
!removetz - deletes the entry for your server from the sqlite database the bot uses, basically it stops working XD
!forcezone - forces an update to the nickname, sends an announcement, ignores cooldown
!showconfig - shows the current config of the bot
!zonedebug - mostly for internal use while coding it, but left it in


Everyone:

!zone - general zone information
!legend - legend of what everything means
!status - status of bot
!help - shows the list of commands

Here is the invite link for the bot: https://discord.com/oauth2/authorize?cl ... 7407664188

I hope it helps anyone who may need it, and in case you do use it and run into any bugs, drop me a message and I'll see what's up.
7
Bot update:

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
Bot update:

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