diff options
| author | 2019-10-02 22:05:23 +0200 | |
|---|---|---|
| committer | 2019-10-02 22:05:23 +0200 | |
| commit | c06ec338c1e6d955c4244ed60d08bbeccb90c359 (patch) | |
| tree | c7ca9276affa51203b59bcf1536ff84e2eb32c49 | |
| parent | get issue data (diff) | |
added embed.
| -rw-r--r-- | bot/seasons/halloween/hacktober-issue-finder.py | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/bot/seasons/halloween/hacktober-issue-finder.py b/bot/seasons/halloween/hacktober-issue-finder.py index 17eec95a..54f205cf 100644 --- a/bot/seasons/halloween/hacktober-issue-finder.py +++ b/bot/seasons/halloween/hacktober-issue-finder.py @@ -1,15 +1,16 @@ import datetime import logging +import random from typing import Dict, List import aiohttp +import discord from discord.ext import commands log = logging.getLogger(__name__) -URL = "https://api.github.com/search/issues" +URL = "https://api.github.com/search/issues?q=label:hacktoberfest+language:python+state:open&per_page=100" HEADERS = {"Accept": "application / vnd.github.v3 + json"} -SEARCH = "label:hacktoberfest+language:python+state:open" class HacktoberIssues(commands.Cog): @@ -24,8 +25,10 @@ class HacktoberIssues(commands.Cog): 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) + issues = await self.get_issues(ctx) + issue = random.choice(issues) + embed = self.format_embed(issue) + await ctx.send(embed=embed) 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.""" @@ -34,17 +37,31 @@ class HacktoberIssues(commands.Cog): async with aiohttp.ClientSession() as session: # text = TEXT # + "+label:hacktober" - params = { - "q": SEARCH - } - async with session.get(URL, headers=HEADERS, params=params) as response: + + async with session.get(URL, headers=HEADERS) 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 + data = await response.json() + issues = data["items"] + self.cache = issues self.cache_timer = ctx.message.created_at - return data + return issues + + @staticmethod + def format_embed(issue: Dict) -> discord.Embed: + """Format the issue data into a embed.""" + title = issue["title"] + issue_url = issue["url"].replace("api.", "").replace("/repos/", "/") + body = issue["body"] + labels = [label["name"] for label in issue["labels"]] + + embed = discord.Embed(title=title) + embed.description = body + embed.add_field(name="labels", value="\n".join(labels)) + embed.url = issue_url + + return embed def setup(bot: commands.Bot) -> None: |