Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7263d9e
chore(deps): update dependency ruff to v0.9.2 (#481)
renovate[bot] Jan 16, 2025
f562718
chore(deps): update dependency identify to v2.6.6 (#482)
renovate[bot] Jan 21, 2025
9dedf66
chore(deps): update dependency ruff to v0.9.3 (#484)
renovate[bot] Jan 24, 2025
09fd37b
chore(deps): update dependency ruff to v0.9.4 (#485)
renovate[bot] Jan 31, 2025
74717d4
chore(deps): update dependency ruff to v0.9.5 (#486)
renovate[bot] Feb 7, 2025
6feff9d
chore(deps): update dependency identify to v2.6.7 (#487)
renovate[bot] Feb 9, 2025
4ef1db6
chore(deps): update dependency ruff to v0.9.6 (#488)
renovate[bot] Feb 10, 2025
ce746f6
chore(deps): update dependency ruff to v0.9.7 (#489)
renovate[bot] Feb 20, 2025
cc2c4c4
chore(deps): update dependency identify to v2.6.8 (#490)
renovate[bot] Feb 23, 2025
e6447e9
chore(deps): update mongo docker tag to v7.0.17 (#491)
renovate[bot] Feb 25, 2025
6d4a48e
chore(deps): update dependency ruff to v0.9.8 (#492)
renovate[bot] Feb 27, 2025
d7d3600
chore(deps): update dependency ruff to v0.9.9 (#493)
renovate[bot] Feb 28, 2025
e33d769
chore(deps): update dependency ruff to v0.9.10 (#494)
renovate[bot] Mar 7, 2025
9bac43a
chore(deps): update dependency identify to v2.6.9 (#495)
renovate[bot] Mar 8, 2025
71f2d59
chore(deps): update dependency platformdirs to v4.3.7 (#497)
renovate[bot] Mar 20, 2025
90b5470
chore(deps): update mongo docker tag to v7.0.18 (#498)
renovate[bot] Mar 25, 2025
06c666b
chore(deps): update mongo docker tag to v7.0.19 (#499)
renovate[bot] Apr 15, 2025
df2f602
chore(deps): update dependency identify to v2.6.10 (#500)
renovate[bot] Apr 19, 2025
4db43b4
chore(deps): update mongo docker tag to v7.0.20 (#501)
renovate[bot] May 1, 2025
6661a44
chore(deps): update dependency platformdirs to v4.3.8 (#502)
renovate[bot] May 8, 2025
f673902
chore(deps): update dependency identify to v2.6.12 (#503)
renovate[bot] May 24, 2025
d33bd9d
chore(deps): update mongo docker tag to v7.0.21 (#504)
renovate[bot] Jun 4, 2025
b9c0bc4
chore(deps): update mongo docker tag to v7.0.22 (#506)
renovate[bot] Jul 22, 2025
efc9e38
chore(deps): update dependency identify to v2.6.13 (#507)
renovate[bot] Aug 10, 2025
94499b7
add bump reminder cog
Aug 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
version: "3.8"
services:
mongo:
image: mongo:7.0.16
image: mongo:7.0.22
container_name: zorak_mongo_${ENVIRONMENT}
env_file: .env
volumes:
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@
"cfgv==3.4.0",
"distlib==0.3.9",
"filelock==3.16.1",
"identify==2.6.5",
"identify==2.6.13",
"nodeenv==1.9.1",
"platformdirs==4.3.6",
"platformdirs==4.3.8",
"pre-commit==3.8.0",
"PyYAML==6.0.2",
"ruff==0.9.1",
"ruff==0.9.10",
"virtualenv==20.28.1",
"versioneer",
],
Expand Down
82 changes: 82 additions & 0 deletions src/zorak/cogs/utility/bump_reminder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#!/usr/bin/env python3

# This example requires the 'message_content' intent.
import discord
import asyncio
import time
import os

# optional: try to load .env locally; in docker, env comes from .env file anyway
try:
from dotenv import load_dotenv
load_dotenv()
except Exception:
pass

# ── CONFIGURATION ────────────────────────────────────────────────────────────
DISBOARD_BOT_ID = int(os.getenv("DISBOARD_BOT_ID", 0))
# BOT_TOKEN = os.getenv("BOT_TOKEN") # not used inside Zorak
BUMP_CHANNEL_ID = int(os.getenv("BUMP_CHANNEL_ID", 0))
BUMP_ROLE_ID = int(os.getenv("BUMP_ROLE_ID", 0))
CHECK_INTERVAL = 60
BUMP_INTERVAL = 7200
# TEST_USER_ID = #for testing fake bump

from discord.ext import commands, tasks

class BumpReminder(commands.Cog):
"""
Your bump reminder, as a Cog.
- watches for DISBOARD 'Bump done'
- after BUMP_INTERVAL, pings the role in BUMP_CHANNEL_ID
"""

def __init__(self, bot: commands.Bot):
self.bot = bot
self.last_bump = 0
self._reminder_loop.start() # start the background loop

def cog_unload(self):
self._reminder_loop.cancel()

@commands.Cog.listener()
async def on_ready(self):
print(f"[bump] Cog loaded as {self.bot.user}")

@commands.Cog.listener()
async def on_message(self, message: discord.Message):
# ── FAKE-BUMP TRIGGER (for testing only) ────────────
# if message.author.id == TEST_USER_ID and message.content.lower() == "!fakebump":
# self.last_bump = time.time()
# print("🧪 Simulated bump at", time.ctime(self.last_bump))
# return # skip the rest
# ────────────────────────────────────────────────────
if not message.guild or message.author.id != DISBOARD_BOT_ID:
return

text = (message.content or "").lower()
if message.embeds:
e0 = message.embeds[0].to_dict()
text += " " + (e0.get("title") or "").lower()
text += " " + (e0.get("description") or "").lower()

if "bump done" in text:
self.last_bump = time.time()
print("✅ Registered bump at", time.ctime(self.last_bump))

@tasks.loop(seconds=CHECK_INTERVAL)
async def _reminder_loop(self):
# run every CHECK_INTERVAL seconds
await self.bot.wait_until_ready()
channel = self.bot.get_channel(BUMP_CHANNEL_ID)
if not isinstance(channel, discord.TextChannel):
# print only once per process start if you want; keeping it quiet
return

if self.last_bump and (time.time() - self.last_bump) >= BUMP_INTERVAL:
await channel.send(f"<@&{BUMP_ROLE_ID}> Time to bump again!")
self.last_bump = 0 # wait for next bump

# Zorak loader hook
async def setup(bot: commands.Bot):
await bot.add_cog(BumpReminder(bot))