{"action":"created","comment":{"url":"https://api.github.com/repos/kyb3r/modmail/pulls/comments/245043743","pull_request_review_id":189068744,"id":245043743,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0NTA0Mzc0Mw==","diff_hunk":"@@ -0,0 +1,586 @@\n+import discord\n+from discord.ext import commands\n+import datetime\n+import traceback\n+import inspect\n+import json\n+import io\n+import textwrap\n+from contextlib import redirect_stdout\n+from difflib import get_close_matches\n+\n+from core.paginator import PaginatorSession\n+from core.decorators import auth_required, owner_only, trigger_typing\n+\n+class Utility:\n+    '''General commands that provide utility'''\n+\n+    def __init__(self, bot):\n+        self.bot = bot\n+\n+    def format_cog_help(self, ctx, cog):\n+        \"\"\"Formats the text for a cog help\"\"\"\n+        sigs = []\n+        prefix = self.bot.prefix\n+\n+        for cmd in self.bot.commands:\n+            if cmd.hidden:\n+                continue\n+            if cmd.instance is cog:\n+                sigs.append(len(cmd.qualified_name) + len(prefix))\n+                if hasattr(cmd, 'all_commands'):\n+                    for c in cmd.all_commands.values():\n+                        sigs.append(len('\\u200b  └─ ' + c.name) + 1)\n+\n+        if not sigs:\n+            return\n+\n+        maxlen = max(sigs)\n+\n+        fmt = ['']\n+        index = 0\n+        for cmd in self.bot.commands:\n+            if cmd.instance is cog:\n+                if cmd.hidden:\n+                    continue\n+                if len(fmt[index] + f'`{prefix+cmd.qualified_name:<{maxlen}}` - ' + f'{cmd.short_doc:<{maxlen}}\\n') > 1024:\n+                    index += 1\n+                    fmt.append('')\n+                fmt[index] += f'`{prefix+cmd.qualified_name:<{maxlen}}` - '\n+                fmt[index] += f'{cmd.short_doc:<{maxlen}}\\n'\n+                if hasattr(cmd, 'commands'):\n+                    for i, c in enumerate(cmd.commands):\n+                        if len(cmd.commands) == i + 1:  # last\n+                            branch = '\\u200b  └─ ' + c.name\n+                        else:\n+                            branch = '\\u200b  ├─ ' + c.name\n+                        if len(fmt[index] + f\"`{branch:<{maxlen+1}}` - \" + f\"{c.short_doc:<{maxlen}}\\n\") > 1024:\n+                            index += 1\n+                            fmt.append('')\n+                        fmt[index] += f\"`{branch:<{maxlen+1}}` - \"\n+                        fmt[index] += f\"{c.short_doc:<{maxlen}}\\n\"\n+\n+        em = discord.Embed(\n+            description='*' + inspect.getdoc(cog) + '*',\n+            color=discord.Colour.green()\n+        )\n+        em.set_author(name=cog.__class__.__name__ + ' - Help', icon_url=ctx.bot.user.avatar_url)\n+\n+        for n, i in enumerate(fmt):\n+            if n == 0:\n+                em.add_field(name='Commands', value=i)\n+            else:\n+                em.add_field(name=u'\\u200b', value=i)\n+\n+        em.set_footer(text=f'Type {prefix}command for more info on a command.')\n+        return em\n+\n+    def format_command_help(self, ctx, cmd):\n+        '''Formats command help.'''\n+        prefix = self.bot.prefix\n+        em = discord.Embed(\n+            color=discord.Color.green(),\n+            description=cmd.help\n+        )\n+\n+        if hasattr(cmd, 'invoke_without_command') and cmd.invoke_without_command:\n+            em.title = f'`Usage: {prefix}{cmd.signature}`'\n+        else:\n+            em.title = f'`{prefix}{cmd.signature}`'\n+\n+        if not hasattr(cmd, 'commands'):\n+            return em\n+\n+        maxlen = max(len(prefix + str(c)) for c in cmd.commands)\n+        fmt = ''\n+\n+        for i, c in enumerate(cmd.commands):\n+            if len(cmd.commands) == i + 1:  # last\n+                branch = '└─ ' + c.name\n+            else:\n+                branch = '├─ ' + c.name\n+            fmt += f\"`{branch:<{maxlen+1}}` - \"\n+            fmt += f\"{c.short_doc:<{maxlen}}\\n\"\n+\n+        em.add_field(name='Subcommands', value=fmt)\n+        em.set_footer(text=f'Type {prefix}help {cmd} command for more info on a command.')\n+\n+        return em\n+\n+    def format_not_found(self, ctx, command):\n+        prefix = ctx.prefix\n+        em = discord.Embed()\n+        em.title = 'Could not find a cog or command by that name.'\n+        em.color = discord.Color.green()\n+        em.set_footer(text=f'Type {prefix}help to get a full list of commands.')\n+        cogs = get_close_matches(command, self.bot.cogs.keys())\n+        cmds = get_close_matches(command, self.bot.all_commands.keys())\n+        if cogs or cmds:\n+            em.description = 'Did you mean...'\n+        if cogs:\n+            em.add_field(name='Cogs', value='\\n'.join(f'`{x}`' for x in cogs))\n+        if cmds:\n+            em.add_field(name='Commands', value='\\n'.join(f'`{x}`' for x in cmds))\n+        return em\n+\n+    @commands.command()\n+    async def help(self, ctx, *, command: str=None):\n+        \"\"\"Shows the help message.\"\"\"\n+\n+        await ctx.trigger_typing()\n+\n+        if command is not None:\n+            cog = self.bot.cogs.get(command)\n+            cmd = self.bot.get_command(command)\n+            if cog is not None:\n+                em = self.format_cog_help(ctx, cog)\n+            elif cmd is not None:\n+                em = self.format_command_help(ctx, cmd)\n+            else:\n+                em = self.format_not_found(ctx, command)\n+            if em:\n+                return await ctx.send(embed=em)\n+\n+        pages = []\n+\n+        prefix = self.bot.prefix\n+\n+        for _, cog in sorted(self.bot.cogs.items()):\n+            em = self.format_cog_help(ctx, cog)\n+            if em:\n+                pages.append(em)\n+\n+        p_session = PaginatorSession(ctx, *pages)\n+\n+        await p_session.run()\n+\n+    @commands.command()\n+    @trigger_typing\n+    async def about(self, ctx):\n+        '''Shows information about the bot.'''\n+        em = discord.Embed(color=discord.Color.green(), timestamp=datetime.datetime.utcnow())\n+        em.set_author(name='Mod Mail - Information', icon_url=self.bot.user.avatar_url)\n+        em.set_thumbnail(url=self.bot.user.avatar_url)\n+\n+        em.description = 'This is an open source discord bot made by kyb3r and '\\\n+                         'improved upon suggestions by the users! This bot serves as a means for members to '\\\n+                         'easily communicate with server leadership in an organised manner.'\n+\n+        try:\n+            async with self.bot.session.get('https://api.modmail.tk/metadata') as resp:\n+                meta = await resp.json()\n+        except:\n+            meta = None\n+\n+        em.add_field(name='Uptime', value=self.bot.uptime)\n+        if meta:\n+            em.add_field(name='Instances', value=meta['instances'])\n+        else:\n+            em.add_field(name='Latency', value=f'{self.bot.latency*1000:.2f} ms')\n+        \n+\n+        em.add_field(name='Version', value=f'[`{self.bot.version}`](https://github.com/kyb3r/modmail/blob/master/bot.py#L25)')\n+        em.add_field(name='Author', value='[`kyb3r`](https://github.com/kyb3r)')\n+\n+        em.add_field(name='Latest Updates', value=await self.bot.get_latest_updates())\n+        \n+        footer = f'Bot ID: {self.bot.user.id}'\n+        \n+        if meta:\n+            if self.bot.version != meta['latest_version']:\n+                footer = f\"A newer version is available v{meta['latest_version']}\"\n+            else:\n+                footer = 'You are up to date with the latest version.'\n+        \n+        em.add_field(name='Github', value='https://github.com/kyb3r/modmail', inline=False)\n+\n+        em.set_footer(text=footer)\n+\n+        await ctx.send(embed=em)\n+    \n+    @commands.command()\n+    @owner_only()\n+    @auth_required\n+    @trigger_typing\n+    async def github(self, ctx):\n+        '''Shows the github user your access token is linked to.'''\n+        if ctx.invoked_subcommand:\n+            return\n+\n+        data = await self.bot.modmail_api.get_user_info()\n+        print(data)\n+\n+        prefix = self.bot.prefix\n+\n+        em = discord.Embed(title='Github')\n+\n+        user = data['user']\n+        em.color = discord.Color.green()\n+        em.description = f\"Current user.\"\n+        em.set_author(name=user['username'], icon_url=user['avatar_url'], url=user['url'])\n+        em.set_thumbnail(url=user['avatar_url'])\n+        await ctx.send(embed=em)\n+\n+    \n+    @commands.command()\n+    @owner_only()\n+    @auth_required\n+    @trigger_typing\n+    async def update(self, ctx):\n+        '''Updates the bot, this only works with heroku users.'''\n+        metadata = await self.bot.modmail_api.get_metadata()\n+\n+        em = discord.Embed(\n+                title='Already up to date',\n+                description=f'The latest version is [`{self.bot.version}`](https://github.com/kyb3r/modmail/blob/master/bot.py#L25)',\n+                color=discord.Color.green()\n+        )\n+\n+        if metadata['latest_version'] == self.bot.version:\n+            data = await self.bot.modmail_api.get_user_info()\n+            if not data['error']:\n+                user = data['user']\n+                em.set_author(name=user['username'], icon_url=user['avatar_url'], url=user['url'])\n+        else:\n+            data = await self.bot.modmail_api.update_repository()\n+\n+            commit_data = data['data']\n+            user = data['user']\n+            em.title = 'Success'\n+            em.set_author(name=user['username'], icon_url=user['avatar_url'], url=user['url'])\n+            em.set_footer(text=f\"Updating modmail v{self.bot.version} -> v{metadata['latest_version']}\")  \n+\n+            if commit_data:\n+                em.description = 'Bot successfully updated, the bot will restart momentarily'\n+                message = commit_data['commit']['message']\n+                html_url = commit_data[\"html_url\"]\n+                short_sha = commit_data['sha'][:6]\n+                em.add_field(name='Merge Commit', value=f\"[`{short_sha}`]({html_url}) {message} - {user['username']}\")\n+            else:\n+                em.description = 'Already up to date with master repository.'\n+\n+        em.add_field(name='Latest Commit', value=await self.bot.get_latest_updates(limit=1), inline=False)\n+\n+        await ctx.send(embed=em)\n+\n+    @commands.command(name=\"status\", aliases=['customstatus', 'presence'])\n+    @commands.has_permissions(administrator=True)\n+    async def _status(self, ctx, *, message):\n+        '''Set a custom playing status for the bot.\n+        \n+        Set the message to `clear` if you want to remove the playing status.\n+        '''\n+\n+        if message == 'clear':\n+            self.bot.config['status'] = None\n+            await self.bot.config.update()\n+            return await self.bot.change_presence(activity=None)\n+            \n+            \n+        await self.bot.change_presence(activity=discord.Game(message))\n+        self.bot.config['status'] = message\n+        await self.bot.config.update()\n+\n+        em = discord.Embed(title='Status Changed')\n+        em.description = message\n+        em.color = discord.Color.green()\n+        await ctx.send(embed=em)\n+\n+    @commands.command()\n+    @trigger_typing\n+    @commands.has_permissions(administrator=True)\n+    async def ping(self, ctx):\n+        \"\"\"Pong! Returns your websocket latency.\"\"\"\n+        em = discord.Embed()\n+        em.title ='Pong! Websocket Latency:'\n+        em.description = f'{self.bot.ws.latency * 1000:.4f} ms'\n+        em.color = 0x00FF00\n+        await ctx.send(embed=em)\n+\n+    @commands.command()\n+    @commands.has_permissions(administrator=True)\n+    async def mention(self, ctx, *, mention=None):\n+        '''Changes what the bot mentions at the start of each thread.'''\n+        current = self.bot.config.get(\"mention\", \"@here\")\n+        em = discord.Embed(\n+            title='Current text',\n+            color=discord.Color.green(),\n+            description=f'{current}'\n+        )\n+\n+        if mention is None:\n+            await ctx.send(embed=em)\n+        else:\n+            em.title = 'Changed mention!'\n+            em.description = f'On thread creation the bot now says: {mention}'\n+            self.bot.config['mention'] = mention\n+            await self.bot.config.update()\n+            await ctx.send(embed=em)\n+\n+    @commands.command()\n+    @commands.has_permissions(administrator=True)\n+    async def prefix(self, ctx, *, prefix=None):\n+        '''Changes the prefix for the bot.'''\n+\n+        current = self.bot.config.get(\"prefix\", \"m.\")","path":"cogs/utility.py","position":null,"original_position":325,"commit_id":"935d897c205a6e45cb3044e1f1267f7b3da9565d","original_commit_id":"0f1507f3561e8ff06e4d167b208841ee5da4b932","user":{"login":"fourjr","id":28086837,"node_id":"MDQ6VXNlcjI4MDg2ODM3","avatar_url":"https://avatars0.githubusercontent.com/u/28086837?v=4","gravatar_id":"","url":"https://api.github.com/users/fourjr","html_url":"https://github.com/fourjr","followers_url":"https://api.github.com/users/fourjr/followers","following_url":"https://api.github.com/users/fourjr/following{/other_user}","gists_url":"https://api.github.com/users/fourjr/gists{/gist_id}","starred_url":"https://api.github.com/users/fourjr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fourjr/subscriptions","organizations_url":"https://api.github.com/users/fourjr/orgs","repos_url":"https://api.github.com/users/fourjr/repos","events_url":"https://api.github.com/users/fourjr/events{/privacy}","received_events_url":"https://api.github.com/users/fourjr/received_events","type":"User","site_admin":false},"body":"Outdated","created_at":"2019-01-03T15:54:48Z","updated_at":"2019-01-03T15:54:49Z","html_url":"https://github.com/kyb3r/modmail/pull/82#discussion_r245043743","pull_request_url":"https://api.github.com/repos/kyb3r/modmail/pulls/82","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/kyb3r/modmail/pulls/comments/245043743"},"html":{"href":"https://github.com/kyb3r/modmail/pull/82#discussion_r245043743"},"pull_request":{"href":"https://api.github.com/repos/kyb3r/modmail/pulls/82"}},"in_reply_to_id":245034375},"pull_request":{"url":"https://api.github.com/repos/kyb3r/modmail/pulls/82","id":241586969,"node_id":"MDExOlB1bGxSZXF1ZXN0MjQxNTg2OTY5","html_url":"https://github.com/kyb3r/modmail/pull/82","diff_url":"https://github.com/kyb3r/modmail/pull/82.diff","patch_url":"https://github.com/kyb3r/modmail/pull/82.patch","issue_url":"https://api.github.com/repos/kyb3r/modmail/issues/82","number":82,"state":"open","locked":false,"title":"Modmail API Integration","user":{"login":"fourjr","id":28086837,"node_id":"MDQ6VXNlcjI4MDg2ODM3","avatar_url":"https://avatars0.githubusercontent.com/u/28086837?v=4","gravatar_id":"","url":"https://api.github.com/users/fourjr","html_url":"https://github.com/fourjr","followers_url":"https://api.github.com/users/fourjr/followers","following_url":"https://api.github.com/users/fourjr/following{/other_user}","gists_url":"https://api.github.com/users/fourjr/gists{/gist_id}","starred_url":"https://api.github.com/users/fourjr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fourjr/subscriptions","organizations_url":"https://api.github.com/users/fourjr/orgs","repos_url":"https://api.github.com/users/fourjr/repos","events_url":"https://api.github.com/users/fourjr/events{/privacy}","received_events_url":"https://api.github.com/users/fourjr/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-12-31T17:46:13Z","updated_at":"2019-01-03T15:54:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"266dd68161a162089b9af08e8c56b03152850d56","assignee":{"login":"fourjr","id":28086837,"node_id":"MDQ6VXNlcjI4MDg2ODM3","avatar_url":"https://avatars0.githubusercontent.com/u/28086837?v=4","gravatar_id":"","url":"https://api.github.com/users/fourjr","html_url":"https://github.com/fourjr","followers_url":"https://api.github.com/users/fourjr/followers","following_url":"https://api.github.com/users/fourjr/following{/other_user}","gists_url":"https://api.github.com/users/fourjr/gists{/gist_id}","starred_url":"https://api.github.com/users/fourjr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fourjr/subscriptions","organizations_url":"https://api.github.com/users/fourjr/orgs","repos_url":"https://api.github.com/users/fourjr/repos","events_url":"https://api.github.com/users/fourjr/events{/privacy}","received_events_url":"https://api.github.com/users/fourjr/received_events","type":"User","site_admin":false},"assignees":[{"login":"fourjr","id":28086837,"node_id":"MDQ6VXNlcjI4MDg2ODM3","avatar_url":"https://avatars0.githubusercontent.com/u/28086837?v=4","gravatar_id":"","url":"https://api.github.com/users/fourjr","html_url":"https://github.com/fourjr","followers_url":"https://api.github.com/users/fourjr/followers","following_url":"https://api.github.com/users/fourjr/following{/other_user}","gists_url":"https://api.github.com/users/fourjr/gists{/gist_id}","starred_url":"https://api.github.com/users/fourjr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fourjr/subscriptions","organizations_url":"https://api.github.com/users/fourjr/orgs","repos_url":"https://api.github.com/users/fourjr/repos","events_url":"https://api.github.com/users/fourjr/events{/privacy}","received_events_url":"https://api.github.com/users/fourjr/received_events","type":"User","site_admin":false},{"login":"kyb3r","id":29310830,"node_id":"MDQ6VXNlcjI5MzEwODMw","avatar_url":"https://avatars3.githubusercontent.com/u/29310830?v=4","gravatar_id":"","url":"https://api.github.com/users/kyb3r","html_url":"https://github.com/kyb3r","followers_url":"https://api.github.com/users/kyb3r/followers","following_url":"https://api.github.com/users/kyb3r/following{/other_user}","gists_url":"https://api.github.com/users/kyb3r/gists{/gist_id}","starred_url":"https://api.github.com/users/kyb3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyb3r/subscriptions","organizations_url":"https://api.github.com/users/kyb3r/orgs","repos_url":"https://api.github.com/users/kyb3r/repos","events_url":"https://api.github.com/users/kyb3r/events{/privacy}","received_events_url":"https://api.github.com/users/kyb3r/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1176817998,"node_id":"MDU6TGFiZWwxMTc2ODE3OTk4","url":"https://api.github.com/repos/kyb3r/modmail/labels/high%20priority","name":"high priority","color":"d110b4","default":false}],"milestone":{"url":"https://api.github.com/repos/kyb3r/modmail/milestones/1","html_url":"https://github.com/kyb3r/modmail/milestone/1","labels_url":"https://api.github.com/repos/kyb3r/modmail/milestones/1/labels","id":3931098,"node_id":"MDk6TWlsZXN0b25lMzkzMTA5OA==","number":1,"title":"v2.0","description":"Version 2.0.0 introduces logging and basic interfacing with the Modmail API!\r\n\r\n### Added\r\n- Logging threads\r\n- Log URLs `logs.modmail.tk`\r\n- `m.log [user]` (#78)\r\n- `m.nsfw` sets a channel to NSFW (#77)\r\n- A whole API for modmail!\r\n- Auto updating [PLANNED] (#73)\r\n- Seperate Server Support [PLANNED] (#81)\r\n\r\n### Removed\r\n- Archives\r\n  - With logs, you can close and not lose the thread, bye archives!","creator":{"login":"fourjr","id":28086837,"node_id":"MDQ6VXNlcjI4MDg2ODM3","avatar_url":"https://avatars0.githubusercontent.com/u/28086837?v=4","gravatar_id":"","url":"https://api.github.com/users/fourjr","html_url":"https://github.com/fourjr","followers_url":"https://api.github.com/users/fourjr/followers","following_url":"https://api.github.com/users/fourjr/following{/other_user}","gists_url":"https://api.github.com/users/fourjr/gists{/gist_id}","starred_url":"https://api.github.com/users/fourjr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fourjr/subscriptions","organizations_url":"https://api.github.com/users/fourjr/orgs","repos_url":"https://api.github.com/users/fourjr/repos","events_url":"https://api.github.com/users/fourjr/events{/privacy}","received_events_url":"https://api.github.com/users/fourjr/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":4,"state":"open","created_at":"2018-12-31T17:45:51Z","updated_at":"2019-01-03T12:54:13Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/kyb3r/modmail/pulls/82/commits","review_comments_url":"https://api.github.com/repos/kyb3r/modmail/pulls/82/comments","review_comment_url":"https://api.github.com/repos/kyb3r/modmail/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kyb3r/modmail/issues/82/comments","statuses_url":"https://api.github.com/repos/kyb3r/modmail/statuses/935d897c205a6e45cb3044e1f1267f7b3da9565d","head":{"label":"kyb3r:modmail-api","ref":"modmail-api","sha":"935d897c205a6e45cb3044e1f1267f7b3da9565d","user":{"login":"kyb3r","id":29310830,"node_id":"MDQ6VXNlcjI5MzEwODMw","avatar_url":"https://avatars3.githubusercontent.com/u/29310830?v=4","gravatar_id":"","url":"https://api.github.com/users/kyb3r","html_url":"https://github.com/kyb3r","followers_url":"https://api.github.com/users/kyb3r/followers","following_url":"https://api.github.com/users/kyb3r/following{/other_user}","gists_url":"https://api.github.com/users/kyb3r/gists{/gist_id}","starred_url":"https://api.github.com/users/kyb3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyb3r/subscriptions","organizations_url":"https://api.github.com/users/kyb3r/orgs","repos_url":"https://api.github.com/users/kyb3r/repos","events_url":"https://api.github.com/users/kyb3r/events{/privacy}","received_events_url":"https://api.github.com/users/kyb3r/received_events","type":"User","site_admin":false},"repo":{"id":106154828,"node_id":"MDEwOlJlcG9zaXRvcnkxMDYxNTQ4Mjg=","name":"modmail","full_name":"kyb3r/modmail","private":false,"owner":{"login":"kyb3r","id":29310830,"node_id":"MDQ6VXNlcjI5MzEwODMw","avatar_url":"https://avatars3.githubusercontent.com/u/29310830?v=4","gravatar_id":"","url":"https://api.github.com/users/kyb3r","html_url":"https://github.com/kyb3r","followers_url":"https://api.github.com/users/kyb3r/followers","following_url":"https://api.github.com/users/kyb3r/following{/other_user}","gists_url":"https://api.github.com/users/kyb3r/gists{/gist_id}","starred_url":"https://api.github.com/users/kyb3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyb3r/subscriptions","organizations_url":"https://api.github.com/users/kyb3r/orgs","repos_url":"https://api.github.com/users/kyb3r/repos","events_url":"https://api.github.com/users/kyb3r/events{/privacy}","received_events_url":"https://api.github.com/users/kyb3r/received_events","type":"User","site_admin":false},"html_url":"https://github.com/kyb3r/modmail","description":"An easy to use ModMail bot for Discord - DM to contact mods! ","fork":false,"url":"https://api.github.com/repos/kyb3r/modmail","forks_url":"https://api.github.com/repos/kyb3r/modmail/forks","keys_url":"https://api.github.com/repos/kyb3r/modmail/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kyb3r/modmail/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kyb3r/modmail/teams","hooks_url":"https://api.github.com/repos/kyb3r/modmail/hooks","issue_events_url":"https://api.github.com/repos/kyb3r/modmail/issues/events{/number}","events_url":"https://api.github.com/repos/kyb3r/modmail/events","assignees_url":"https://api.github.com/repos/kyb3r/modmail/assignees{/user}","branches_url":"https://api.github.com/repos/kyb3r/modmail/branches{/branch}","tags_url":"https://api.github.com/repos/kyb3r/modmail/tags","blobs_url":"https://api.github.com/repos/kyb3r/modmail/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kyb3r/modmail/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kyb3r/modmail/git/refs{/sha}","trees_url":"https://api.github.com/repos/kyb3r/modmail/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kyb3r/modmail/statuses/{sha}","languages_url":"https://api.github.com/repos/kyb3r/modmail/languages","stargazers_url":"https://api.github.com/repos/kyb3r/modmail/stargazers","contributors_url":"https://api.github.com/repos/kyb3r/modmail/contributors","subscribers_url":"https://api.github.com/repos/kyb3r/modmail/subscribers","subscription_url":"https://api.github.com/repos/kyb3r/modmail/subscription","commits_url":"https://api.github.com/repos/kyb3r/modmail/commits{/sha}","git_commits_url":"https://api.github.com/repos/kyb3r/modmail/git/commits{/sha}","comments_url":"https://api.github.com/repos/kyb3r/modmail/comments{/number}","issue_comment_url":"https://api.github.com/repos/kyb3r/modmail/issues/comments{/number}","contents_url":"https://api.github.com/repos/kyb3r/modmail/contents/{+path}","compare_url":"https://api.github.com/repos/kyb3r/modmail/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kyb3r/modmail/merges","archive_url":"https://api.github.com/repos/kyb3r/modmail/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kyb3r/modmail/downloads","issues_url":"https://api.github.com/repos/kyb3r/modmail/issues{/number}","pulls_url":"https://api.github.com/repos/kyb3r/modmail/pulls{/number}","milestones_url":"https://api.github.com/repos/kyb3r/modmail/milestones{/number}","notifications_url":"https://api.github.com/repos/kyb3r/modmail/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kyb3r/modmail/labels{/name}","releases_url":"https://api.github.com/repos/kyb3r/modmail/releases{/id}","deployments_url":"https://api.github.com/repos/kyb3r/modmail/deployments","created_at":"2017-10-08T06:24:54Z","updated_at":"2019-01-03T09:34:20Z","pushed_at":"2019-01-03T15:53:27Z","git_url":"git://github.com/kyb3r/modmail.git","ssh_url":"git@github.com:kyb3r/modmail.git","clone_url":"https://github.com/kyb3r/modmail.git","svn_url":"https://github.com/kyb3r/modmail","homepage":"https://modmail.tk","size":334,"stargazers_count":186,"watchers_count":186,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":191,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":191,"open_issues":10,"watchers":186,"default_branch":"master"}},"base":{"label":"kyb3r:master","ref":"master","sha":"fd806bcfa0268371a444ad89ff9e2a231aeb5374","user":{"login":"kyb3r","id":29310830,"node_id":"MDQ6VXNlcjI5MzEwODMw","avatar_url":"https://avatars3.githubusercontent.com/u/29310830?v=4","gravatar_id":"","url":"https://api.github.com/users/kyb3r","html_url":"https://github.com/kyb3r","followers_url":"https://api.github.com/users/kyb3r/followers","following_url":"https://api.github.com/users/kyb3r/following{/other_user}","gists_url":"https://api.github.com/users/kyb3r/gists{/gist_id}","starred_url":"https://api.github.com/users/kyb3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyb3r/subscriptions","organizations_url":"https://api.github.com/users/kyb3r/orgs","repos_url":"https://api.github.com/users/kyb3r/repos","events_url":"https://api.github.com/users/kyb3r/events{/privacy}","received_events_url":"https://api.github.com/users/kyb3r/received_events","type":"User","site_admin":false},"repo":{"id":106154828,"node_id":"MDEwOlJlcG9zaXRvcnkxMDYxNTQ4Mjg=","name":"modmail","full_name":"kyb3r/modmail","private":false,"owner":{"login":"kyb3r","id":29310830,"node_id":"MDQ6VXNlcjI5MzEwODMw","avatar_url":"https://avatars3.githubusercontent.com/u/29310830?v=4","gravatar_id":"","url":"https://api.github.com/users/kyb3r","html_url":"https://github.com/kyb3r","followers_url":"https://api.github.com/users/kyb3r/followers","following_url":"https://api.github.com/users/kyb3r/following{/other_user}","gists_url":"https://api.github.com/users/kyb3r/gists{/gist_id}","starred_url":"https://api.github.com/users/kyb3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyb3r/subscriptions","organizations_url":"https://api.github.com/users/kyb3r/orgs","repos_url":"https://api.github.com/users/kyb3r/repos","events_url":"https://api.github.com/users/kyb3r/events{/privacy}","received_events_url":"https://api.github.com/users/kyb3r/received_events","type":"User","site_admin":false},"html_url":"https://github.com/kyb3r/modmail","description":"An easy to use ModMail bot for Discord - DM to contact mods! ","fork":false,"url":"https://api.github.com/repos/kyb3r/modmail","forks_url":"https://api.github.com/repos/kyb3r/modmail/forks","keys_url":"https://api.github.com/repos/kyb3r/modmail/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kyb3r/modmail/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kyb3r/modmail/teams","hooks_url":"https://api.github.com/repos/kyb3r/modmail/hooks","issue_events_url":"https://api.github.com/repos/kyb3r/modmail/issues/events{/number}","events_url":"https://api.github.com/repos/kyb3r/modmail/events","assignees_url":"https://api.github.com/repos/kyb3r/modmail/assignees{/user}","branches_url":"https://api.github.com/repos/kyb3r/modmail/branches{/branch}","tags_url":"https://api.github.com/repos/kyb3r/modmail/tags","blobs_url":"https://api.github.com/repos/kyb3r/modmail/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kyb3r/modmail/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kyb3r/modmail/git/refs{/sha}","trees_url":"https://api.github.com/repos/kyb3r/modmail/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kyb3r/modmail/statuses/{sha}","languages_url":"https://api.github.com/repos/kyb3r/modmail/languages","stargazers_url":"https://api.github.com/repos/kyb3r/modmail/stargazers","contributors_url":"https://api.github.com/repos/kyb3r/modmail/contributors","subscribers_url":"https://api.github.com/repos/kyb3r/modmail/subscribers","subscription_url":"https://api.github.com/repos/kyb3r/modmail/subscription","commits_url":"https://api.github.com/repos/kyb3r/modmail/commits{/sha}","git_commits_url":"https://api.github.com/repos/kyb3r/modmail/git/commits{/sha}","comments_url":"https://api.github.com/repos/kyb3r/modmail/comments{/number}","issue_comment_url":"https://api.github.com/repos/kyb3r/modmail/issues/comments{/number}","contents_url":"https://api.github.com/repos/kyb3r/modmail/contents/{+path}","compare_url":"https://api.github.com/repos/kyb3r/modmail/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kyb3r/modmail/merges","archive_url":"https://api.github.com/repos/kyb3r/modmail/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kyb3r/modmail/downloads","issues_url":"https://api.github.com/repos/kyb3r/modmail/issues{/number}","pulls_url":"https://api.github.com/repos/kyb3r/modmail/pulls{/number}","milestones_url":"https://api.github.com/repos/kyb3r/modmail/milestones{/number}","notifications_url":"https://api.github.com/repos/kyb3r/modmail/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kyb3r/modmail/labels{/name}","releases_url":"https://api.github.com/repos/kyb3r/modmail/releases{/id}","deployments_url":"https://api.github.com/repos/kyb3r/modmail/deployments","created_at":"2017-10-08T06:24:54Z","updated_at":"2019-01-03T09:34:20Z","pushed_at":"2019-01-03T15:53:27Z","git_url":"git://github.com/kyb3r/modmail.git","ssh_url":"git@github.com:kyb3r/modmail.git","clone_url":"https://github.com/kyb3r/modmail.git","svn_url":"https://github.com/kyb3r/modmail","homepage":"https://modmail.tk","size":334,"stargazers_count":186,"watchers_count":186,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":191,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":191,"open_issues":10,"watchers":186,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kyb3r/modmail/pulls/82"},"html":{"href":"https://github.com/kyb3r/modmail/pull/82"},"issue":{"href":"https://api.github.com/repos/kyb3r/modmail/issues/82"},"comments":{"href":"https://api.github.com/repos/kyb3r/modmail/issues/82/comments"},"review_comments":{"href":"https://api.github.com/repos/kyb3r/modmail/pulls/82/comments"},"review_comment":{"href":"https://api.github.com/repos/kyb3r/modmail/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kyb3r/modmail/pulls/82/commits"},"statuses":{"href":"https://api.github.com/repos/kyb3r/modmail/statuses/935d897c205a6e45cb3044e1f1267f7b3da9565d"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"fourjr"}}