Skip to content

Commit b36d3b2

Browse files
Merge pull request #11 from python-discord/don't-ping-off-duty-mods
Don't ping off-duty mods
2 parents ae5240c + 9414d32 commit b36d3b2

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

ping_manager/ping_manager.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from core.thread import Thread
1313
from .utils import async_tasks
1414

15+
# Remove view perms from this role while pining, so only on-duty mods get the ping.
16+
MOD_TEAM_ROLE_ID = 267629731250176001
1517
log = getLogger(__name__)
1618

1719

@@ -40,6 +42,7 @@ class PingManager(commands.Cog):
4042
def __init__(self, bot: ModmailBot):
4143
self.bot = bot
4244

45+
self.mod_team_role: discord.Role = None
4346
self.config: t.Optional[PingConfig] = None
4447
self.ping_tasks: list[PingTask] = None
4548
self.db = bot.api.get_plugin_partition(self)
@@ -52,6 +55,8 @@ async def init_plugin(self) -> None:
5255
db_config = db_config or {}
5356
self.config = PingConfig(**db_config)
5457

58+
self.mod_team_role = self.bot.guild.get_role(MOD_TEAM_ROLE_ID)
59+
5560
db_ping_tasks = await self.db.find_one({"_id": "ping-delay-tasks"})
5661
db_ping_tasks = db_ping_tasks or {}
5762
self.ping_tasks = [PingTask(**task) for task in db_ping_tasks.get("ping_tasks", [])]
@@ -198,9 +203,13 @@ async def maybe_ping_later(self, ping_task: PingTask) -> None:
198203
if not (channel := self.bot.get_channel(ping_task.channel_id)):
199204
log.info("Channel closed before we could ping.")
200205
else:
206+
channel: discord.TextChannel
201207
try:
202208
if await self.should_ping(channel):
209+
# Remove overwrites for off-duty mods, ping, then add back.
210+
await channel.set_permissions(self.mod_team_role, overwrite=None)
203211
await channel.send(self.config.ping_string)
212+
await channel.edit(sync_permissions=True)
204213
except discord.NotFound:
205214
# Fail silently if the channel gets deleted during processing.
206215
pass

0 commit comments

Comments
 (0)