Forum teuk.org

🪄 Lumos Maxima III — Feature Wave IV: More Spells, More Light (May 2026)

in Mediabot · started by TeuK · 3d ago

TeuK · 3d ago

Overview

The fourth wave lands. Ten new commands, two new Partyline tools, and a handful of bugs quietly hexed into oblivion. Analytics, dice, coins, rankings, activity maps, and the long-awaited weather comparison — all production-ready and wired.

“Lumos Maxima! Even the darkest corners of the bot are now illuminated.” 🕯️✨


!karmatop [n] — Karma Leaderboard

<teuk> m karmatop 5
<mediabotv3> Karma top 5 on #boulets:
<mediabotv3>    1. teuk                +14
<mediabotv3>    2. Boole                +7
<mediabotv3>    3. Poyan                +3

Shows the top N karma scores on the current channel. Queries the KARMA table sorted by score descending. Limit 1–10, default 5.


🎲 !roll [NdN] — Dice Roller

<teuk> m roll 2d6
<mediabotv3> teuk rolled 2d6: [4, 3] = 7

<teuk> m roll d20
<mediabotv3> teuk rolled 1d20: 17

<teuk> m roll
<mediabotv3> teuk rolled 1d6: 4

Supports NdN format (e.g. 2d6, 3d8, 1d100). Bounds: 1–10 dice, 2–100 sides. Defaults to 1d6. Single dice shows value only; multiple dice shows the breakdown.


🪙 !flip — Coin Flip

<Boole> m flip
<mediabotv3> Boole flipped a coin: Heads!

50/50. No database. Pure rand().


📊 !active [period] — Recently Active Nicks

<teuk> m active 24h
<mediabotv3> Active in last 24h on #boulets: teuk, Boole, Poyan (3 nick(s))

<teuk> m active 7d
<mediabotv3> Active in last 7d on #boulets: teuk, Boole, Poyan, Menz, Gwen (5 nick(s))

Distinct nicks who posted in the last N hours or days. Supports Nh (hours) and Nd (days). Default: 24h.


📅 !when <nick> — First Appearance

<teuk> m when Boole
<mediabotv3> Boole first seen on #boulets: 2024-01-15 09:12:01

MIN(ts) from CHANNEL_LOG. Complements !stats (which shows MIN(ts) inline) with a dedicated single-nick lookup.


💬 !quotecount [nick] — Quote Count by Author

<teuk> m quotecount Boole
<mediabotv3> Boole: 14 quote(s) on #boulets

<teuk> m quotecount
<mediabotv3> #boulets: 312 quote(s) total

Without argument, shows the total for the channel. With a nick, filters by author (prefix match via LIKE 'nick%').

Also wired as !quote count [nick] for consistency with the !quote family.


!quote add <text> — Add Quote from IRC

<teuk> m quote add <Boole> si Linux était une pizza, la croûte ce serait le kernel
<mediabotv3> -teuk- Quote added.

Alias for !qadd — routes through the existing mbQuoteAdd sub. Now accessible as !quote add <text> for users who find !qadd opaque.


🌦️ !weather compare <city1> <city2> — Side-by-Side Weather

<teuk> m weather Sceaux
<teuk> m weather Lavaur
<teuk> m weather compare Sceaux Lavaur
<mediabotv3> sceaux: ☀️ +6°C (feels +6°C) | 93% | ↙4km/h | 0.0mm  ||  lavaur: 🌧 +9°C (feels +9°C) | 98% | ↙4km/h | 0.0mm

Reads from the existing displayWeather_ctx in-memory cache (key: lc($location)). No additional HTTP call — inherits the OVH IP rate-limiting workaround automatically. Both cities must have been fetched recently via !weather <city> first.


🔮 Partyline .seen <nick> — Last Seen from Partyline

.seen Boole
Boole last seen 2026-05-12 18:44:02 on #boulets (QUIT) saying: "à demain"

Reads USER_SEEN table directly. Accessible from the Partyline without needing to go through an IRC channel.


🧹 Partyline .purgereminders — Clean Up Old Reminders

.purgereminders
Purged 14 reminder(s) older than 7 days.

Deletes rows from REMINDERS where delivered > 0 and created_at < NOW() - 7 days. Keeps the table tidy without manual SQL.


🐛 Bugs Fixed

Bug Fix
!weather compare returned <!DOCTYPE html> wttr.in returns HTML for unencoded format params; switched to URI-escaped format string
!weather compare showed “unavailable” after HTML fix wttr.in returns 403 for OVH IPs — rewritten to read displayWeather_ctx in-memory cache
Cache key mismatch in compare displayWeather_ctx uses lc($location) as key; compare was using `lc(uri_escape($city).’

📦 Files Changed

File Changes
UserCommands.pm mbKarmaTop_ctx, mbRoll_ctx, mbFlip_ctx, mbActive_ctx, mbWhen_ctx, mbWeatherCompare_ctx
Quotes.pm mbQuoteCount_ctx
Partyline.pm _cmd_seen, _cmd_purgereminders + dispatch + help
Mediabot.pm dispatch for all new commands + !quote add/count routing + !weather compare routing

You must be logged in to reply.