aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/constants.py8
-rw-r--r--bot/exts/evergreen/issues.py19
2 files changed, 22 insertions, 5 deletions
diff --git a/bot/constants.py b/bot/constants.py
index 1d41a53e..ce1ca29a 100644
--- a/bot/constants.py
+++ b/bot/constants.py
@@ -9,6 +9,7 @@ __all__ = (
"AdventOfCode",
"Branding",
"Channels",
+ "Categories",
"Client",
"Colours",
"Emojis",
@@ -100,6 +101,7 @@ class Channels(NamedTuple):
big_brother_logs = 468507907357409333
bot = 267659945086812160
checkpoint_test = 422077681434099723
+ organisation = 551789653284356126
devalerts = 460181980097675264
devlog = int(environ.get("CHANNEL_DEVLOG", 622895325144940554))
dev_contrib = 635950537262759947
@@ -128,6 +130,12 @@ class Channels(NamedTuple):
voice_chat_1 = 799647045886541885
+class Categories(NamedTuple):
+ development = 411199786025484308
+ devprojects = 787641585624940544
+ media = 799054581991997460
+
+
class Client(NamedTuple):
name = "Sir Lancebot"
guild = int(environ.get("BOT_GUILD", 267624335836053506))
diff --git a/bot/exts/evergreen/issues.py b/bot/exts/evergreen/issues.py
index d2c70d4b..4ab3df2c 100644
--- a/bot/exts/evergreen/issues.py
+++ b/bot/exts/evergreen/issues.py
@@ -7,8 +7,7 @@ from enum import Enum
import discord
from discord.ext import commands, tasks
-from bot.constants import Channels, Colours, ERROR_REPLIES, Emojis, Tokens, WHITELISTED_CHANNELS
-from bot.utils.decorators import override_in_channel
+from bot.constants import Categories, Channels, Colours, ERROR_REPLIES, Emojis, Tokens, WHITELISTED_CHANNELS
log = logging.getLogger(__name__)
@@ -16,13 +15,19 @@ BAD_RESPONSE = {
404: "Issue/pull request not located! Please enter a valid number!",
403: "Rate limit has been hit! Please try again later!"
}
+
MAX_REQUESTS = 10
REQUEST_HEADERS = dict()
-PYTHON_DISCORD_REPOS = "https://api.github.com/orgs/{repo}/repos"
+PYTHON_DISCORD_REPOS = "https://api.github.com/orgs/{repo}/repos"
if GITHUB_TOKEN := Tokens.github:
REQUEST_HEADERS["Authorization"] = f"token {GITHUB_TOKEN}"
+WHITELISTED_CATEGORIES = (
+ Categories.devprojects, Categories.media, Categories.development
+)
+WHITELISTED_CHANNELS += (Channels.organisation)
+
CODE_BLOCK_RE = re.compile(
r"^`([^`\n]+)`" # Inline codeblock
r"|```(.+?)```", # Multiline codeblock
@@ -135,7 +140,6 @@ class Issues(commands.Cog):
return resp
@commands.command(aliases=("pr",))
- @override_in_channel(WHITELISTED_CHANNELS + (Channels.dev_contrib, Channels.dev_branding))
async def issue(
self,
ctx: commands.Context,
@@ -144,6 +148,9 @@ class Issues(commands.Cog):
user: str = "python-discord"
) -> None:
"""Command to retrieve issue(s) from a GitHub repository."""
+ if ctx.channel.category not in WHITELISTED_CATEGORIES or ctx.channel.category in WHITELISTED_CHANNELS:
+ return
+
result = await self.fetch_issues(set(numbers), repository, user)
if result == FetchIssueErrors.value_error:
@@ -166,9 +173,11 @@ class Issues(commands.Cog):
await ctx.send(result)
@commands.Cog.listener()
- @override_in_channel(WHITELISTED_CHANNELS + (Channels.dev_contrib, Channels.dev_branding))
async def on_message(self, message: discord.Message) -> None:
"""Command to retrieve issue(s) from a GitHub repository using automatic linking if matching <repo>#<issue>."""
+ if message.channel.category not in WHITELISTED_CATEGORIES or message.channel.category in WHITELISTED_CHANNELS:
+ return
+
message_repo_issue_map = re.findall(fr".+?({self.repo_regex})#(\d+)", message.content)
links = []