diff options
| author | 2019-10-01 02:45:48 +0200 | |
|---|---|---|
| committer | 2019-10-01 02:45:48 +0200 | |
| commit | ae4eb13f93c9b7e5465fe9b3a91f093f1c6d1bac (patch) | |
| tree | e054b90e2eaf0ea4aac6fb91d4704895bcbaabd7 /bot | |
| parent | added hacktober-issue-finder cog. (diff) | |
get issue data
Diffstat (limited to 'bot')
| -rw-r--r-- | bot/seasons/halloween/hacktober-issue-finder.py | 39 | 
1 files changed, 37 insertions, 2 deletions
| diff --git a/bot/seasons/halloween/hacktober-issue-finder.py b/bot/seasons/halloween/hacktober-issue-finder.py index ce0993d3..17eec95a 100644 --- a/bot/seasons/halloween/hacktober-issue-finder.py +++ b/bot/seasons/halloween/hacktober-issue-finder.py @@ -1,18 +1,53 @@ +import datetime  import logging +from typing import Dict, List +import aiohttp  from discord.ext import commands  log = logging.getLogger(__name__) +URL = "https://api.github.com/search/issues" +HEADERS = {"Accept": "application / vnd.github.v3 + json"} +SEARCH = "label:hacktoberfest+language:python+state:open" -class SpookyEightBall(commands.Cog): + +class HacktoberIssues(commands.Cog):      """Find a random hacktober python issue on GitHub."""      def __init__(self, bot: commands.Bot):          self.bot = bot +        self.cache = None +        self.cache_timer = datetime.datetime(1, 1, 1) + +    @commands.command() +    async def hacktoberissues(self, ctx: commands.Context) -> None: +        """Get a random python hacktober issue from Github.""" +        with ctx.typing(): +            data = await self.get_issues(ctx) +            print("need to use data somehow to commit...", data) + +    async def get_issues(self, ctx: commands.Context) -> List[Dict]: +        """Get a list of the python issues with the label 'hacktoberfest' from the Github api.""" +        if (ctx.message.created_at - self.cache_timer).seconds <= 60: +            return self.cache + +        async with aiohttp.ClientSession() as session: +            # text = TEXT # + "+label:hacktober" +            params = { +                "q": SEARCH +            } +            async with session.get(URL, headers=HEADERS, params=params) as response: +                if response.status != 200: +                    await ctx.send(f"ERROR: expected 200 status (got {response.status}) from the GitHub api.") +                    await ctx.send(await response.text()) +                data = (await response.json())["items"] +                self.cache = data +                self.cache_timer = ctx.message.created_at +                return data  def setup(bot: commands.Bot) -> None:      """Hacktober issue finder Cog Load.""" -    bot.add_cog(SpookyEightBall(bot)) +    bot.add_cog(HacktoberIssues(bot))      log.info("hacktober-issue-finder cog loaded") | 
