aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/seasons/halloween/hacktober-issue-finder.py39
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")