From 89afed5793221d8d55792c50f8dd30b28db4885d Mon Sep 17 00:00:00 2001
From: Taku <45324516+Taaku18@users.noreply.github.com>
Date: Thu, 16 Jan 2025 08:28:36 +0000
Subject: [PATCH 1/4] Update README.md
Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 980066ca7e..500978a1f9 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
@@ -24,7 +24,7 @@
-
+
From 6c820bfeca3f42d9e9e0bc4fd5d6ddfb8a1e18ad Mon Sep 17 00:00:00 2001
From: Taku <45324516+Taaku18@users.noreply.github.com>
Date: Mon, 10 Feb 2025 14:59:47 +0000
Subject: [PATCH 2/4] Update README.md
Update sponsors
Signed-off-by: Taku <45324516+Taaku18@users.noreply.github.com>
---
README.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/README.md b/README.md
index 500978a1f9..eef9e3f940 100644
--- a/README.md
+++ b/README.md
@@ -159,6 +159,13 @@ Discord Advice Center:
+
+
+Blacklight Promotions:
+
+
+
+
Become a sponsor on [Patreon](https://patreon.com/kyber).
From c1241d5ea6c46b57716f125d25a2078eb34fd1ae Mon Sep 17 00:00:00 2001
From: Chris Lovering
Date: Mon, 19 Jun 2023 09:18:20 +0100
Subject: [PATCH 3/4] Escape hyphen in regex string
Unescaped this was permitting any character between $ (index 36) and _ (index 95), which aren't all valid in urls.
---
core/thread.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/thread.py b/core/thread.py
index 81dc03f44d..b388a93052 100644
--- a/core/thread.py
+++ b/core/thread.py
@@ -995,7 +995,7 @@ async def send(
attachments.append(attachment)
image_urls = re.findall(
- r"http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*(),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+",
+ r"http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$\-_@.&+]|[!*(),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+",
message.content,
)
From 380a9fab5e75b4f3d83c398914f4e536c94a19d7 Mon Sep 17 00:00:00 2001
From: Chris Lovering
Date: Thu, 18 Aug 2022 11:18:35 +0100
Subject: [PATCH 4/4] Get or fetch member when trying to reply
This fixes an issue where the member may not be in the cache
---
bot.py | 10 ++++++++++
core/thread.py | 8 +++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/bot.py b/bot.py
index 3c6ebe7911..bcf67e5f9a 100644
--- a/bot.py
+++ b/bot.py
@@ -640,6 +640,16 @@ async def get_or_fetch_user(self, id: int) -> discord.User:
"""
return self.get_user(id) or await self.fetch_user(id)
+ @staticmethod
+ async def get_or_fetch_member(guild: discord.Guild, member_id: int) -> typing.Optional[discord.Member]:
+ """
+ Attempt to get a member from cache; on failure fetch from the API.
+
+ Returns:
+ The :obj:`discord.Member` or :obj:`None` to indicate the member could not be found.
+ """
+ return guild.get_member(member_id) or await guild.fetch_member(member_id)
+
async def retrieve_emoji(self) -> typing.Tuple[str, str]:
sent_emoji = self.config["sent_emoji"]
blocked_emoji = self.config["blocked_emoji"]
diff --git a/core/thread.py b/core/thread.py
index b388a93052..00060ab7f5 100644
--- a/core/thread.py
+++ b/core/thread.py
@@ -823,7 +823,13 @@ async def reply(
"""Returns List[user_dm_msg] and thread_channel_msg"""
if not message.content and not message.attachments and not message.stickers:
raise MissingRequiredArgument(DummyParam("msg"))
- if not any(g.get_member(self.id) for g in self.bot.guilds):
+ for guild in self.bot.guilds:
+ try:
+ if await self.bot.get_or_fetch_member(guild, self.id):
+ break
+ except discord.NotFound:
+ pass
+ else:
return await message.channel.send(
embed=discord.Embed(
color=self.bot.error_color,