From 1dea5902487a93d1f9a6382d838928d0a9739627 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 15:10:58 -0400 Subject: Make .github a group, and add github repo + user commands --- bot/exts/evergreen/githubinfo.py | 72 +++++++++++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 8 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 2e38e3ab..74371244 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -8,9 +8,12 @@ from discord.ext import commands from discord.ext.commands.cooldowns import BucketType from bot.constants import NEGATIVE_REPLIES +from bot.exts.utils.extensions import invoke_help_command log = logging.getLogger(__name__) +GITHUB_API_URL = "https://api.github.com" + class GithubInfo(commands.Cog): """Fetches info from GitHub.""" @@ -23,21 +26,27 @@ class GithubInfo(commands.Cog): async with self.bot.http_session.get(url) as r: return await r.json() - @commands.command(name='github', aliases=['gh']) - @commands.cooldown(1, 60, BucketType.user) - async def get_github_info(self, ctx: commands.Context, username: Optional[str]) -> None: + @commands.group(name='github', aliases=('gh',)) + @commands.cooldown(1, 10, BucketType.user) + async def github_group(self, ctx: commands.Context): + """Commands for finding info related to Github.""" + if ctx.invoked_subcommand is None: + await invoke_help_command(ctx) + + @github_group.command(name='user', aliases=('userinfo',)) + async def github_user_info(self, ctx: commands.Context, username: Optional[str]) -> None: """ Fetches a user's GitHub information. Username is optional and sends the help command if not specified. """ if username is None: - await ctx.invoke(self.bot.get_command('help'), 'github') + await invoke_help_command(ctx) ctx.command.reset_cooldown(ctx) return async with ctx.typing(): - user_data = await self.fetch_data(f"https://api.github.com/users/{username}") + user_data = await self.fetch_data(f"{GITHUB_API_URL}/users/{username}") # User_data will not have a message key if the user exists if user_data.get('message') is not None: @@ -74,24 +83,71 @@ class GithubInfo(commands.Cog): embed.add_field(name="Followers", value=f"[{user_data['followers']}]({user_data['html_url']}?tab=followers)") - embed.add_field(name="\u200b", value="\u200b") embed.add_field(name="Following", value=f"[{user_data['following']}]({user_data['html_url']}?tab=following)") embed.add_field(name="Public repos", value=f"[{user_data['public_repos']}]({user_data['html_url']}?tab=repositories)") - embed.add_field(name="\u200b", value="\u200b") if user_data['type'] == "User": embed.add_field(name="Gists", value=f"[{gists}](https://gist.github.com/{username})") embed.add_field(name=f"Organization{'s' if len(orgs)!=1 else ''}", value=orgs_to_add if orgs else "No organizations") - embed.add_field(name="\u200b", value="\u200b") embed.add_field(name="Website", value=blog) await ctx.send(embed=embed) + @github_group.command(name='repo', aliases=('repositories',)) + async def github_repo_info(self, ctx: commands.Context, repo: Optional[str]): + """ + Fetches a repositories's GitHub information. Repository should look like `user/reponame`. + + Repository is optional and sends the help command if not specified. + """ + if repo is None: + await invoke_help_command(ctx) + ctx.command.reset_cooldown() + return + async with ctx.typing(): + repo_data = await self.fetch_data(f"{GITHUB_API_URL}/repos/{repo}") + + # There won't be a message key if this repo exists + if repo_data.get('message') is not None: + await ctx.send(embed=discord.Embed(title=random.choice(NEGATIVE_REPLIES), + description=f"The requested repository was not found.", + colour=discord.Colour.red())) + return + + repo_owner = repo_data['owner'] + + parent = repo_data.get('parent') + + embed = discord.Embed(title=f"{repo_data['name']}", + description=repo_data["description"], + colour=0x7289da, + url=repo_data['html_url'], + timestamp=datetime.strptime(repo_data['pushed_at'], "%Y-%m-%dT%H:%M:%SZ") + ) + + # If it's a fork, then it will have a parent key + if parent: + embed.description += f"\nForked from [{parent['full_name']}]({parent['html_url']})" + + embed.set_author( + name=repo_owner["login"], + url=repo_owner["html_url"], + icon_url=repo_owner["avatar_url"] + ) + + repo_created_at = datetime.strptime(repo_data['created_at'], "%Y-%m-%dT%H:%M:%SZ").strftime("%d/%m/%Y") + + embed.set_footer(text=f"{repo_data['forks_count']} " + f"⑂ • {repo_data['stargazers_count']} ⭐ • Created At {repo_created_at} • " + " Last commit ") + + await ctx.send(embed=embed) + def setup(bot: commands.Bot) -> None: """Adding the cog to the bot.""" -- cgit v1.2.3 From b3c25c888b16ea707e974282c249eaf9799e184d Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 15:19:05 -0400 Subject: Make alias repository, not repositories --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 74371244..b683065e 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -98,7 +98,7 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) - @github_group.command(name='repo', aliases=('repositories',)) + @github_group.command(name='repo', aliases=('repository',)) async def github_repo_info(self, ctx: commands.Context, repo: Optional[str]): """ Fetches a repositories's GitHub information. Repository should look like `user/reponame`. -- cgit v1.2.3 From 658b3b4de1112378e9694b95bcba3d4b8c5213f7 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 15:23:24 -0400 Subject: Missed a \n --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index b683065e..521b94e7 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -132,7 +132,7 @@ class GithubInfo(commands.Cog): # If it's a fork, then it will have a parent key if parent: - embed.description += f"\nForked from [{parent['full_name']}]({parent['html_url']})" + embed.description += f"\n\nForked from [{parent['full_name']}]({parent['html_url']})" embed.set_author( name=repo_owner["login"], -- cgit v1.2.3 From 01ce649b05999b029490bff00e07cd9f32e285e8 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 15:27:53 -0400 Subject: Make flake8 happy --- bot/exts/evergreen/githubinfo.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 521b94e7..2c7dd885 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -28,7 +28,7 @@ class GithubInfo(commands.Cog): @commands.group(name='github', aliases=('gh',)) @commands.cooldown(1, 10, BucketType.user) - async def github_group(self, ctx: commands.Context): + async def github_group(self, ctx: commands.Context) -> None: """Commands for finding info related to Github.""" if ctx.invoked_subcommand is None: await invoke_help_command(ctx) @@ -99,7 +99,7 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) @github_group.command(name='repo', aliases=('repository',)) - async def github_repo_info(self, ctx: commands.Context, repo: Optional[str]): + async def github_repo_info(self, ctx: commands.Context, repo: Optional[str]) -> None: """ Fetches a repositories's GitHub information. Repository should look like `user/reponame`. @@ -115,7 +115,7 @@ class GithubInfo(commands.Cog): # There won't be a message key if this repo exists if repo_data.get('message') is not None: await ctx.send(embed=discord.Embed(title=random.choice(NEGATIVE_REPLIES), - description=f"The requested repository was not found.", + description="The requested repository was not found.", colour=discord.Colour.red())) return -- cgit v1.2.3 From 060c5403a7ea1866731ec2bb23d3e7ba4234fe8c Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 21:07:35 -0400 Subject: Make better aliases and follow style guidelines --- bot/exts/evergreen/githubinfo.py | 41 ++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 2c7dd885..8dbcc681 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -98,37 +98,38 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) - @github_group.command(name='repo', aliases=('repository',)) - async def github_repo_info(self, ctx: commands.Context, repo: Optional[str]) -> None: + @github_group.command(name='repository', aliases=('repo', 'git')) + async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: """ Fetches a repositories's GitHub information. Repository should look like `user/reponame`. Repository is optional and sends the help command if not specified. """ - if repo is None: - await invoke_help_command(ctx) - ctx.command.reset_cooldown() - return async with ctx.typing(): repo_data = await self.fetch_data(f"{GITHUB_API_URL}/repos/{repo}") # There won't be a message key if this repo exists if repo_data.get('message') is not None: - await ctx.send(embed=discord.Embed(title=random.choice(NEGATIVE_REPLIES), - description="The requested repository was not found.", - colour=discord.Colour.red())) + embed = discord.Embed( + title=random.choice(NEGATIVE_REPLIES), + description="The requested repository was not found.", + colour=discord.Colour.red() + ) + + await ctx.send(embed=embed) return repo_owner = repo_data['owner'] parent = repo_data.get('parent') - embed = discord.Embed(title=f"{repo_data['name']}", - description=repo_data["description"], - colour=0x7289da, - url=repo_data['html_url'], - timestamp=datetime.strptime(repo_data['pushed_at'], "%Y-%m-%dT%H:%M:%SZ") - ) + embed = discord.Embed( + title=f"{repo_data['name']}", + description=repo_data["description"], + colour=0x7289da, + url=repo_data['html_url'], + timestamp=datetime.strptime(repo_data['pushed_at'], "%Y-%m-%dT%H:%M:%SZ") + ) # If it's a fork, then it will have a parent key if parent: @@ -142,9 +143,13 @@ class GithubInfo(commands.Cog): repo_created_at = datetime.strptime(repo_data['created_at'], "%Y-%m-%dT%H:%M:%SZ").strftime("%d/%m/%Y") - embed.set_footer(text=f"{repo_data['forks_count']} " - f"⑂ • {repo_data['stargazers_count']} ⭐ • Created At {repo_created_at} • " - " Last commit ") + embed.set_footer( + text=( + f"{repo_data['forks_count']} " + f"⑂ • {repo_data['stargazers_count']} ⭐ • Created At {repo_created_at} • " + " Last commit " + ) + ) await ctx.send(embed=embed) -- cgit v1.2.3 From ad3c78e7a1ed8f4c54c21ab45e85be6c18e5c63f Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 21:25:11 -0400 Subject: Make git alias for the group instead --- bot/exts/evergreen/githubinfo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 8dbcc681..58162e42 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -26,7 +26,7 @@ class GithubInfo(commands.Cog): async with self.bot.http_session.get(url) as r: return await r.json() - @commands.group(name='github', aliases=('gh',)) + @commands.group(name='github', aliases=('gh', 'git')) @commands.cooldown(1, 10, BucketType.user) async def github_group(self, ctx: commands.Context) -> None: """Commands for finding info related to Github.""" @@ -98,7 +98,7 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) - @github_group.command(name='repository', aliases=('repo', 'git')) + @github_group.command(name='repository', aliases=('repo')) async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: """ Fetches a repositories's GitHub information. Repository should look like `user/reponame`. -- cgit v1.2.3 From 6387376cdb000b6e33dd1c67d9b7a24d1d7705b4 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 19 Mar 2021 21:26:59 -0400 Subject: Forgot a comma for the tuple --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 58162e42..da2b37ac 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -98,7 +98,7 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) - @github_group.command(name='repository', aliases=('repo')) + @github_group.command(name='repository', aliases=('repo',)) async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: """ Fetches a repositories's GitHub information. Repository should look like `user/reponame`. -- cgit v1.2.3 From e0dbf3b9c01774fc4570ce29b6898c5a32f32a1f Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 07:53:45 -0400 Subject: Update bot/exts/evergreen/githubinfo.py Co-authored-by: Shivansh-007 --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index da2b37ac..cffdc0b2 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -101,7 +101,7 @@ class GithubInfo(commands.Cog): @github_group.command(name='repository', aliases=('repo',)) async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: """ - Fetches a repositories's GitHub information. Repository should look like `user/reponame`. + Fetches a repositories' GitHub information. The repository should look like `user/reponame`. Repository is optional and sends the help command if not specified. """ -- cgit v1.2.3 From 087b58209b52f835eef6493d2269d98867f39b0c Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 11:02:28 -0400 Subject: Follow style guildines and use better colours --- bot/exts/evergreen/githubinfo.py | 48 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 21 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index da2b37ac..ec2f9d98 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -1,13 +1,12 @@ import logging import random from datetime import datetime -from typing import Optional import discord from discord.ext import commands from discord.ext.commands.cooldowns import BucketType -from bot.constants import NEGATIVE_REPLIES +from bot.constants import NEGATIVE_REPLIES, Colours from bot.exts.utils.extensions import invoke_help_command log = logging.getLogger(__name__) @@ -34,25 +33,24 @@ class GithubInfo(commands.Cog): await invoke_help_command(ctx) @github_group.command(name='user', aliases=('userinfo',)) - async def github_user_info(self, ctx: commands.Context, username: Optional[str]) -> None: + async def github_user_info(self, ctx: commands.Context, username: str) -> None: """ Fetches a user's GitHub information. Username is optional and sends the help command if not specified. """ - if username is None: - await invoke_help_command(ctx) - ctx.command.reset_cooldown(ctx) - return - async with ctx.typing(): user_data = await self.fetch_data(f"{GITHUB_API_URL}/users/{username}") # User_data will not have a message key if the user exists if user_data.get('message') is not None: - await ctx.send(embed=discord.Embed(title=random.choice(NEGATIVE_REPLIES), - description=f"The profile for `{username}` was not found.", - colour=discord.Colour.red())) + embed = discord.Embed( + title=random.choice(NEGATIVE_REPLIES), + description=f"The profile for `{username}` was not found.", + colour=Colours.soft_red + ) + + await ctx.send() return org_data = await self.fetch_data(user_data['organizations_url']) @@ -72,7 +70,7 @@ class GithubInfo(commands.Cog): embed = discord.Embed( title=f"`{user_data['login']}`'s GitHub profile info", description=f"```{user_data['bio']}```\n" if user_data['bio'] is not None else "", - colour=0x7289da, + colour=discord.Colour.blurple(), url=user_data['html_url'], timestamp=datetime.strptime(user_data['created_at'], "%Y-%m-%dT%H:%M:%SZ") ) @@ -81,19 +79,27 @@ class GithubInfo(commands.Cog): if user_data['type'] == "User": - embed.add_field(name="Followers", - value=f"[{user_data['followers']}]({user_data['html_url']}?tab=followers)") - embed.add_field(name="Following", - value=f"[{user_data['following']}]({user_data['html_url']}?tab=following)") + embed.add_field( + name="Followers", + value=f"[{user_data['followers']}]({user_data['html_url']}?tab=followers)" + ) + embed.add_field( + name="Following", + value=f"[{user_data['following']}]({user_data['html_url']}?tab=following)" + ) - embed.add_field(name="Public repos", - value=f"[{user_data['public_repos']}]({user_data['html_url']}?tab=repositories)") + embed.add_field( + name="Public repos", + value=f"[{user_data['public_repos']}]({user_data['html_url']}?tab=repositories)" + ) if user_data['type'] == "User": embed.add_field(name="Gists", value=f"[{gists}](https://gist.github.com/{username})") - embed.add_field(name=f"Organization{'s' if len(orgs)!=1 else ''}", - value=orgs_to_add if orgs else "No organizations") + embed.add_field( + name=f"Organization{'s' if len(orgs)!=1 else ''}", + value=orgs_to_add if orgs else "No organizations" + ) embed.add_field(name="Website", value=blog) await ctx.send(embed=embed) @@ -113,7 +119,7 @@ class GithubInfo(commands.Cog): embed = discord.Embed( title=random.choice(NEGATIVE_REPLIES), description="The requested repository was not found.", - colour=discord.Colour.red() + colour=Colours.soft_red ) await ctx.send(embed=embed) -- cgit v1.2.3 From 7fb2134e40f7d9b47759797785d9e47ff059ff7c Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 11:14:33 -0400 Subject: Make a new line for `created_at` Co-authored-by: Shivansh-007 --- bot/exts/evergreen/githubinfo.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index cffdc0b2..75db10d4 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -145,9 +145,10 @@ class GithubInfo(commands.Cog): embed.set_footer( text=( - f"{repo_data['forks_count']} " - f"⑂ • {repo_data['stargazers_count']} ⭐ • Created At {repo_created_at} • " - " Last commit " + f"{repo_data['forks_count']} ⑂ " + f"• {repo_data['stargazers_count']} ⭐ " + f"• Created At {repo_created_at} " + f"• Last commit " ) ) -- cgit v1.2.3 From d945ec3314500e579d8e79f086d53453886daf9a Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 11:28:17 -0400 Subject: Fix trailing whitespace --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 0b2c4c77..07175857 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -152,7 +152,7 @@ class GithubInfo(commands.Cog): embed.set_footer( text=( f"{repo_data['forks_count']} ⑂ " - f"• {repo_data['stargazers_count']} ⭐ " + f"• {repo_data['stargazers_count']} ⭐ " f"• Created At {repo_created_at} " f"• Last commit " ) -- cgit v1.2.3 From 5c8e3008ee5f37bbcab24552fd4c933c8271aa58 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 11:37:56 -0400 Subject: Fix imports --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 07175857..ebb265b5 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -6,7 +6,7 @@ import discord from discord.ext import commands from discord.ext.commands.cooldowns import BucketType -from bot.constants import NEGATIVE_REPLIES, Colours +from bot.constants import Colours, NEGATIVE_REPLIES from bot.exts.utils.extensions import invoke_help_command log = logging.getLogger(__name__) -- cgit v1.2.3 From 69569fe2c5dafb659b3c56e764d034281686492e Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 11:41:12 -0400 Subject: Change --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index ebb265b5..5559a464 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -132,7 +132,7 @@ class GithubInfo(commands.Cog): embed = discord.Embed( title=f"{repo_data['name']}", description=repo_data["description"], - colour=0x7289da, + colour=discord.Colour.blurple(), url=repo_data['html_url'], timestamp=datetime.strptime(repo_data['pushed_at'], "%Y-%m-%dT%H:%M:%SZ") ) -- cgit v1.2.3 From 85c6dfa00e01abea8b65654aed59a520af3c18a6 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sat, 20 Mar 2021 12:15:57 -0400 Subject: Make last commit not a timestamp to improve readability --- bot/exts/evergreen/githubinfo.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 5559a464..67d91589 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -133,8 +133,7 @@ class GithubInfo(commands.Cog): title=f"{repo_data['name']}", description=repo_data["description"], colour=discord.Colour.blurple(), - url=repo_data['html_url'], - timestamp=datetime.strptime(repo_data['pushed_at'], "%Y-%m-%dT%H:%M:%SZ") + url=repo_data['html_url'] ) # If it's a fork, then it will have a parent key @@ -148,13 +147,14 @@ class GithubInfo(commands.Cog): ) repo_created_at = datetime.strptime(repo_data['created_at'], "%Y-%m-%dT%H:%M:%SZ").strftime("%d/%m/%Y") + last_pushed = datetime.strptime(repo_data['pushed_at'], "%Y-%m-%dT%H:%M:%SZ").strftime("%d/%m/%Y at %H:%M") embed.set_footer( text=( f"{repo_data['forks_count']} ⑂ " f"• {repo_data['stargazers_count']} ⭐ " f"• Created At {repo_created_at} " - f"• Last commit " + f"• Last Commit {last_pushed}" ) ) -- cgit v1.2.3 From ed26d381e1959523b9a5da2866f7f1f917ee7bae Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Sun, 21 Mar 2021 08:36:09 -0400 Subject: Add the embed kwarg to ctx.send --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 67d91589..1be2e385 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -50,7 +50,7 @@ class GithubInfo(commands.Cog): colour=Colours.soft_red ) - await ctx.send() + await ctx.send(embed=embed) return org_data = await self.fetch_data(user_data['organizations_url']) -- cgit v1.2.3 From 8b72a57f05c85fbdd6f9735f8cf722f7d63df659 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Wed, 24 Mar 2021 13:31:13 -0400 Subject: Update docstrings because user and repo are now mandatory arguments --- bot/exts/evergreen/githubinfo.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 1be2e385..34e30d0b 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -34,11 +34,7 @@ class GithubInfo(commands.Cog): @github_group.command(name='user', aliases=('userinfo',)) async def github_user_info(self, ctx: commands.Context, username: str) -> None: - """ - Fetches a user's GitHub information. - - Username is optional and sends the help command if not specified. - """ + """Fetches a user's GitHub information.""" async with ctx.typing(): user_data = await self.fetch_data(f"{GITHUB_API_URL}/users/{username}") @@ -106,11 +102,7 @@ class GithubInfo(commands.Cog): @github_group.command(name='repository', aliases=('repo',)) async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: - """ - Fetches a repositories' GitHub information. The repository should look like `user/reponame`. - - Repository is optional and sends the help command if not specified. - """ + """Fetches a repositories' GitHub information. The repository should look like `user/reponame`.""" async with ctx.typing(): repo_data = await self.fetch_data(f"{GITHUB_API_URL}/repos/{repo}") -- cgit v1.2.3 From e044bf3d716dc166704ba31def82bd34a68acb42 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Wed, 24 Mar 2021 13:34:47 -0400 Subject: Info -> information Co-authored-by: Shivansh-007 --- bot/exts/evergreen/githubinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 34e30d0b..712a516b 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -28,7 +28,7 @@ class GithubInfo(commands.Cog): @commands.group(name='github', aliases=('gh', 'git')) @commands.cooldown(1, 10, BucketType.user) async def github_group(self, ctx: commands.Context) -> None: - """Commands for finding info related to Github.""" + """Commands for finding information related to GitHub.""" if ctx.invoked_subcommand is None: await invoke_help_command(ctx) -- cgit v1.2.3 From ed5dc457c51aae388e5d4607639fb79be958ff27 Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Thu, 25 Mar 2021 19:22:12 -0400 Subject: Quote reponame and username --- bot/exts/evergreen/githubinfo.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 34e30d0b..56195e8c 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -1,6 +1,7 @@ import logging import random from datetime import datetime +from urllib.parse import quote import discord from discord.ext import commands @@ -90,7 +91,7 @@ class GithubInfo(commands.Cog): ) if user_data['type'] == "User": - embed.add_field(name="Gists", value=f"[{gists}](https://gist.github.com/{username})") + embed.add_field(name="Gists", value=f"[{gists}](https://gist.github.com/{quote(username, safe='')})") embed.add_field( name=f"Organization{'s' if len(orgs)!=1 else ''}", @@ -103,8 +104,18 @@ class GithubInfo(commands.Cog): @github_group.command(name='repository', aliases=('repo',)) async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: """Fetches a repositories' GitHub information. The repository should look like `user/reponame`.""" + if repo.count('/') != 1: + embed = discord.Embed( + title=random.choice(NEGATIVE_REPLIES), + description="The repository should look like `user/reponame`.", + colour=Colours.soft_red + ) + + await ctx.send(embed=embed) + return + async with ctx.typing(): - repo_data = await self.fetch_data(f"{GITHUB_API_URL}/repos/{repo}") + repo_data = await self.fetch_data(f"{GITHUB_API_URL}/repos/{quote(repo)}") # There won't be a message key if this repo exists if repo_data.get('message') is not None: -- cgit v1.2.3 From 8f79d6705dd8d62a51d34f12f27fa9643fc3b04c Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Thu, 25 Mar 2021 21:44:26 -0400 Subject: Make requested changes --- bot/exts/evergreen/githubinfo.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 94a3166b..1b64b0eb 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -40,7 +40,7 @@ class GithubInfo(commands.Cog): user_data = await self.fetch_data(f"{GITHUB_API_URL}/users/{username}") # User_data will not have a message key if the user exists - if user_data.get('message') is not None: + if "message" in user_data: embed = discord.Embed( title=random.choice(NEGATIVE_REPLIES), description=f"The profile for `{username}` was not found.", @@ -118,7 +118,7 @@ class GithubInfo(commands.Cog): repo_data = await self.fetch_data(f"{GITHUB_API_URL}/repos/{quote(repo)}") # There won't be a message key if this repo exists - if repo_data.get('message') is not None: + if "message" in repo_data: embed = discord.Embed( title=random.choice(NEGATIVE_REPLIES), description="The requested repository was not found.", @@ -128,20 +128,21 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) return - repo_owner = repo_data['owner'] - - parent = repo_data.get('parent') - embed = discord.Embed( - title=f"{repo_data['name']}", + title=repo_data['name'], description=repo_data["description"], colour=discord.Colour.blurple(), url=repo_data['html_url'] ) # If it's a fork, then it will have a parent key - if parent: + try: + parent = repo_data["parent"] embed.description += f"\n\nForked from [{parent['full_name']}]({parent['html_url']})" + except KeyError: + log.debug("Repository is not a fork.") + + repo_owner = repo_data['owner'] embed.set_author( name=repo_owner["login"], -- cgit v1.2.3 From 877671523c18aad4bb5061a1a2379beb5c761e3c Mon Sep 17 00:00:00 2001 From: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Date: Fri, 26 Mar 2021 14:54:07 -0400 Subject: Make repository accept either user/reponame or user reponame --- bot/exts/evergreen/githubinfo.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'bot/exts/evergreen/githubinfo.py') diff --git a/bot/exts/evergreen/githubinfo.py b/bot/exts/evergreen/githubinfo.py index 1b64b0eb..c8a6b3f7 100644 --- a/bot/exts/evergreen/githubinfo.py +++ b/bot/exts/evergreen/githubinfo.py @@ -102,12 +102,17 @@ class GithubInfo(commands.Cog): await ctx.send(embed=embed) @github_group.command(name='repository', aliases=('repo',)) - async def github_repo_info(self, ctx: commands.Context, repo: str) -> None: - """Fetches a repositories' GitHub information. The repository should look like `user/reponame`.""" + async def github_repo_info(self, ctx: commands.Context, *repo: str) -> None: + """ + Fetches a repositories' GitHub information. + + The repository should look like `user/reponame` or `user reponame`. + """ + repo = '/'.join(repo) if repo.count('/') != 1: embed = discord.Embed( title=random.choice(NEGATIVE_REPLIES), - description="The repository should look like `user/reponame`.", + description="The repository should look like `user/reponame` or `user reponame`.", colour=Colours.soft_red ) -- cgit v1.2.3