aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/help_channels/_caches.py9
-rw-r--r--bot/exts/help_channels/_cog.py28
-rw-r--r--bot/exts/help_channels/_message.py73
3 files changed, 1 insertions, 109 deletions
diff --git a/bot/exts/help_channels/_caches.py b/bot/exts/help_channels/_caches.py
index 3369fc0a6..ef7b3887f 100644
--- a/bot/exts/help_channels/_caches.py
+++ b/bot/exts/help_channels/_caches.py
@@ -1,14 +1,5 @@
from async_rediscache import RedisCache
-# This cache keeps track of who has help-dms on.
-# RedisCache[discord.User.id, bool]
-help_dm = RedisCache(namespace="HelpChannels.help_dm")
-
-# This cache tracks member who are participating and opted in to help channel dms.
-# serialise the set as a comma separated string to allow usage with redis
-# RedisCache[discord.TextChannel.id, str[set[discord.User.id]]]
-session_participants = RedisCache(namespace="HelpChannels.session_participants")
-
# Stores posts that have had a non-claimant, non-bot, reply.
# Currently only used to determine whether the post was answered or not when collecting stats.
posts_with_non_claimant_messages = RedisCache(namespace="HelpChannels.posts_with_non_claimant_messages")
diff --git a/bot/exts/help_channels/_cog.py b/bot/exts/help_channels/_cog.py
index c70ce4e71..59a95ab6a 100644
--- a/bot/exts/help_channels/_cog.py
+++ b/bot/exts/help_channels/_cog.py
@@ -6,7 +6,7 @@ from pydis_core.utils import scheduling
from bot import constants
from bot.bot import Bot
-from bot.exts.help_channels import _caches, _channel, _message
+from bot.exts.help_channels import _caches, _channel
from bot.log import get_logger
from bot.utils.checks import has_any_role_check
@@ -87,30 +87,6 @@ class HelpForum(commands.Cog):
if ctx.channel.id in self.scheduler:
self.scheduler.cancel(ctx.channel.id)
- @help_forum_group.command(name="dm", root_aliases=("helpdm",))
- async def help_dm_command(
- self,
- ctx: commands.Context,
- state_bool: bool,
- ) -> None:
- """
- Allows user to toggle "Helping" DMs.
-
- If this is set to on the user will receive a dm for the channel they are participating in.
- If this is set to off the user will not receive a dm for channel that they are participating in.
- """
- state_str = "ON" if state_bool else "OFF"
-
- if state_bool == await _caches.help_dm.get(ctx.author.id, False):
- await ctx.send(f"{constants.Emojis.cross_mark} {ctx.author.mention} Help DMs are already {state_str}")
- return
-
- if state_bool:
- await _caches.help_dm.set(ctx.author.id, True)
- else:
- await _caches.help_dm.delete(ctx.author.id)
- await ctx.send(f"{constants.Emojis.ok_hand} {ctx.author.mention} Help DMs {state_str}!")
-
@help_forum_group.command(name="title", root_aliases=("title",))
async def rename_help_post(self, ctx: commands.Context, *, title: str) -> None:
"""Rename the help post to the provided title."""
@@ -167,7 +143,5 @@ class HelpForum(commands.Cog):
if not _channel.is_help_forum_post(message.channel):
return
- await _message.notify_session_participants(message)
-
if not message.author.bot and message.author.id != message.channel.owner_id:
await _caches.posts_with_non_claimant_messages.set(message.channel.id, "sentinel")
diff --git a/bot/exts/help_channels/_message.py b/bot/exts/help_channels/_message.py
deleted file mode 100644
index aa6e52340..000000000
--- a/bot/exts/help_channels/_message.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from operator import attrgetter
-
-import discord
-
-import bot
-from bot import constants
-from bot.exts.help_channels import _caches
-from bot.log import get_logger
-from bot.utils import lock
-
-log = get_logger(__name__)
-NAMESPACE = "help"
-
-
-def _serialise_session_participants(participants: set[int]) -> str:
- """Convert a set to a comma separated string."""
- return ",".join(str(p) for p in participants)
-
-
-def _deserialise_session_participants(s: str) -> set[int]:
- """Convert a comma separated string into a set."""
- return set(int(user_id) for user_id in s.split(",") if user_id != "")
-
-
[email protected]_arg(NAMESPACE, "message", attrgetter("channel.id"))
[email protected]_arg(NAMESPACE, "message", attrgetter("author.id"))
-async def notify_session_participants(message: discord.Message) -> None:
- """
- Check if the message author meets the requirements to be notified.
-
- If they meet the requirements they are notified.
- """
- if message.channel.owner_id == message.author.id:
- return # Ignore messages sent by claimants
-
- if not await _caches.help_dm.get(message.author.id):
- return # Ignore message if user is opted out of help dms
-
- session_participants = _deserialise_session_participants(
- await _caches.session_participants.get(message.channel.id) or "",
- )
-
- if message.author.id not in session_participants:
- session_participants.add(message.author.id)
-
- embed = discord.Embed(
- title="Currently Helping",
- description=f"You're currently helping in {message.channel.mention}",
- color=constants.Colours.bright_green,
- timestamp=message.created_at,
- )
- embed.add_field(name="Conversation", value=f"[Jump to message]({message.jump_url})")
-
- try:
- await message.author.send(embed=embed)
- except discord.Forbidden:
- log.trace(
- f"Failed to send help dm message to {message.author.id}. DMs Closed/Blocked. "
- "Removing user from help dm."
- )
- await _caches.help_dm.delete(message.author.id)
- bot_commands_channel = bot.instance.get_channel(constants.Channels.bot_commands)
- await bot_commands_channel.send(
- f"{message.author.mention} {constants.Emojis.cross_mark} "
- "To receive updates on help channels you're active in, enable your DMs.",
- delete_after=constants.RedirectOutput.delete_delay,
- )
- return
-
- await _caches.session_participants.set(
- message.channel.id,
- _serialise_session_participants(session_participants),
- )