diff --git a/src/extensions/rss.py b/src/extensions/rss.py index 6dfcfa6..ccb347e 100644 --- a/src/extensions/rss.py +++ b/src/extensions/rss.py @@ -227,17 +227,13 @@ class FeedCog(commands.Cog): await inter.response.defer() - page = 1 - pagesize = 10 - async def formatdata(index: int, item: dict) -> tuple[str, str]: item = SubscriptionChannel.from_dict(item) next_emoji = self.bot.get_emoji(1204542366602502265) - key = f"{index}. {item.subscription.name} {next_emoji} <#{item.id}>" - value = f"[RSS]({item.subscription.rss_url}) · [API]({API.CHANNEL_ENDPOINT}{item.uuid}/)" - return key, value + key = f"{index}. {item.subscription.name} {next_emoji} {item.mention}" + return key, item.hyperlinks_string - async def getdata(page: int) -> dict: + async def getdata(page: int, pagesize: int) -> dict: async with aiohttp.ClientSession() as session: api = API(self.bot.api_token, session) return await api.get_subscription_channels( @@ -245,7 +241,15 @@ class FeedCog(commands.Cog): ) embed = Followup(f"Links in {inter.guild.name}").info()._embed - pagination = PaginationView(self.bot, inter, embed, getdata, formatdata, pagesize, page) + pagination = PaginationView( + self.bot, + inter=inter, + embed=embed, + getdata=getdata, + formatdata=formatdata, + pagesize=10, + initpage=1 + ) await pagination.send() @subscription_group.command(name="add") @@ -324,16 +328,13 @@ class FeedCog(commands.Cog): await inter.response.defer() - page = 1 - pagesize = 10 - def formatdata(index, item): item = Subscription.from_dict(item) key = f"{index}. {item.name}" value = f"[RSS]({item.rss_url}) · [API]({API.SUBSCRIPTION_ENDPOINT}{item.uuid}/)" return key, value - async def getdata(page): + async def getdata(page: int, pagesize: int): async with aiohttp.ClientSession() as session: api = API(self.bot.api_token, session) return await api.get_subscriptions( @@ -341,7 +342,15 @@ class FeedCog(commands.Cog): ) embed = Followup(f"Subscriptions in {inter.guild.name}").info()._embed - pagination = PaginationView(self.bot, inter, embed, getdata, formatdata, pagesize, page) + pagination = PaginationView( + self.bot, + inter=inter, + embed=embed, + getdata=getdata, + formatdata=formatdata, + pagesize=10, + initpage=1 + ) await pagination.send() diff --git a/src/feed.py b/src/feed.py index d95ada4..16b6a64 100644 --- a/src/feed.py +++ b/src/feed.py @@ -285,6 +285,24 @@ class SubscriptionChannel(DjangoDataModel): item["creation_datetime"] = datetime.strptime(item["creation_datetime"], DATETIME_FORMAT) return item + @property + def mention(self) -> str: + """ + Returns the `id` as a string in the discord mention format. + """ + + return f"<#{self.id}>" + + @property + def hyperlinks_string(self) -> str: + """""" + + api_hyperlink = f"[API]({API.CHANNEL_ENDPOINT}{self.uuid}/)" + rss_hyperlink = f"[RSS]({self.subscription.rss_url})" + value = f"{rss_hyperlink} · {api_hyperlink}" + + return value + @dataclass class TrackedContent(DjangoDataModel): diff --git a/src/utils.py b/src/utils.py index ee91b2a..3a5d957 100644 --- a/src/utils.py +++ b/src/utils.py @@ -194,7 +194,7 @@ class PaginationView(View): embed = self.embed.copy() try: - data, total_results = await self.getdata(self.index) + data, total_results = await self.getdata(self.index, self.pagesize) except aiohttp.ClientResponseError as exc: log.error(exc) await (