aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/info/python_news.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/bot/exts/info/python_news.py b/bot/exts/info/python_news.py
index e06c82bb8..c786a9d19 100644
--- a/bot/exts/info/python_news.py
+++ b/bot/exts/info/python_news.py
@@ -4,6 +4,7 @@ from datetime import UTC, datetime, timedelta
import discord
import feedparser
+import sentry_sdk
from bs4 import BeautifulSoup
from discord.ext.commands import Cog
from discord.ext.tasks import loop
@@ -43,6 +44,22 @@ class PythonNews(Cog):
self.webhook: discord.Webhook | None = None
self.seen_items: dict[str, set[str]] = {}
+ async def cog_load(self) -> None:
+ """Load all existing seen items from db and create any missing mailing lists."""
+ with sentry_sdk.start_span(description="Fetch mailing lists from site"):
+ response = await self.bot.api_client.get("bot/mailing-lists")
+
+ for mailing_list in response:
+ self.seen_items[mailing_list["name"]] = set(mailing_list["seen_items"])
+
+ with sentry_sdk.start_span(description="Update site with new mailing lists"):
+ for mailing_list in ("pep", *constants.PythonNews.mail_lists):
+ if mailing_list not in self.seen_items:
+ await self.bot.api_client.post("bot/mailing-lists", json={"name": mailing_list})
+ self.seen_items[mailing_list] = set()
+
+ self.fetch_new_media.start()
+
async def cog_unload(self) -> None:
"""Stop news posting tasks on cog unload."""
self.fetch_new_media.cancel()
@@ -225,19 +242,6 @@ class PythonNews(Cog):
email_information = await resp.json()
return thread_information, email_information
- async def cog_load(self) -> None:
- """Load all existing seen items from db and create any missing mailing lists."""
- response = await self.bot.api_client.get("bot/mailing-lists")
- for mailing_list in response:
- self.seen_items[mailing_list["name"]] = set(mailing_list["seen_items"])
-
- for mailing_list in ("pep", *constants.PythonNews.mail_lists):
- if mailing_list not in self.seen_items:
- await self.bot.api_client.post("bot/mailing-lists", json={"name": mailing_list})
- self.seen_items[mailing_list] = set()
-
- self.fetch_new_media.start()
-
async def setup(bot: Bot) -> None:
"""Add `News` cog."""