diff options
| -rw-r--r-- | bot/seasons/halloween/hacktober-issue-finder.py | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/bot/seasons/halloween/hacktober-issue-finder.py b/bot/seasons/halloween/hacktober-issue-finder.py index 3c4780a9..a9cff610 100644 --- a/bot/seasons/halloween/hacktober-issue-finder.py +++ b/bot/seasons/halloween/hacktober-issue-finder.py @@ -1,7 +1,7 @@  import datetime  import logging  import random -from typing import Dict, List, Optional +from typing import Dict, Optional  import aiohttp  import discord @@ -27,14 +27,14 @@ class HacktoberIssues(commands.Cog):      async def hacktoberissues(self, ctx: commands.Context, option: str = "") -> None:          """Get a random python hacktober issue from Github."""          with ctx.typing(): -            issues = await self.get_issues(ctx, option) +            issues = (await self.get_issues(ctx, option))["items"]              if issues is None:                  return              issue = random.choice(issues)              embed = self.format_embed(issue)          await ctx.send(embed=embed) -    async def get_issues(self, ctx: commands.Context, option: str) -> Optional[List[Dict]]: +    async def get_issues(self, ctx: commands.Context, option: str) -> Optional[Dict]:          """Get a list of the python issues with the label 'hacktoberfest' from the Github api."""          if option == "beginner":              if (ctx.message.created_at - self.cache_timer_beginner).seconds <= 60: @@ -45,8 +45,14 @@ class HacktoberIssues(commands.Cog):          async with aiohttp.ClientSession() as session:              if option == "beginner":                  url = URL + '+label:"good first issue"' +                if self.cache_beginner is not None: +                    page = random.randint(1, min(1000, self.cache_beginner["total_count"]) // 100) +                    url += f"&page={page}"              else:                  url = URL +                if self.cache_normal is not None: +                    page = random.randint(1, min(1000, self.cache_normal["total_count"])) +                    url += f"&page={page}"              async with session.get(url, headers=HEADERS) as response:                  if response.status != 200: @@ -54,20 +60,19 @@ class HacktoberIssues(commands.Cog):                      await ctx.send(await response.text())                      return None                  data = await response.json() -                issues = data["items"] -                if len(issues) == 0: +                if len(data["items"]) == 0:                      await ctx.send(f"ERROR: no issues returned from GitHub api. with url: {response.url}")                      return None                  if option == "beginner": -                    self.cache_beginner = issues +                    self.cache_beginner = data                      self.cache_timer_beginner = ctx.message.created_at                  else: -                    self.cache_normal = issues +                    self.cache_normal = data                      self.cache_timer_normal = ctx.message.created_at -                return issues +                return data      @staticmethod      def format_embed(issue: Dict) -> discord.Embed: | 
