Skip to content

Commit 2476ca7

Browse files
committed
Heavily improve update command
1 parent 8a5e136 commit 2476ca7

File tree

2 files changed

+39
-12
lines changed

2 files changed

+39
-12
lines changed

bot.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
SOFTWARE.
2323
'''
2424

25-
__version__ = '1.3.9'
25+
__version__ = '1.4.0'
2626

2727
from contextlib import redirect_stdout
2828
from urllib.parse import urlparse
@@ -319,12 +319,15 @@ async def update(self, ctx):
319319
description=f'The latest version is [`{__version__}`](https://github.com/kyb3r/modmail/blob/master/bot.py#L25)',
320320
color=discord.Color.green()
321321
)
322+
323+
access_token = self.config.get('GITHUB_ACCESS_TOKEN')
322324

323325
if data['latest_version'] == __version__:
326+
if access_token:
327+
user = await Github.login(self, access_token)
328+
em.set_author(name=user.username, icon_url=user.avatar_url, url=user.url)
324329
return await ctx.send(embed=em)
325330

326-
access_token = self.config.get('GITHUB_ACCESS_TOKEN')
327-
328331
if not access_token:
329332
em.title = 'Invalid Access Token'
330333
em.description = 'You have not properly set up GitHub credentials. '\
@@ -337,14 +340,29 @@ async def update(self, ctx):
337340
return await ctx.send(embed=em)
338341

339342
user = await Github.login(self, access_token)
340-
url = await user.update_repository()
343+
resp = await user.request(user.head)
344+
sha, commit_url = resp['object']['sha'], resp['object']['url']
345+
data = await user.update_repository(sha)
346+
347+
latest_update = await user.request(commit_url)
348+
341349
em.title = 'Success'
350+
em.set_author(name=user.username, icon_url=user.avatar_url, url=user.url)
342351

343-
if url:
352+
if data:
344353
em.description = 'Bot successfully updated, the bot will restart momentarily'
345-
em.add_field(name='Commit', value=f'[Click Here]({url})')
354+
message = data['commit']['message']
355+
html_url = data["html_url"]
356+
short_sha = data['sha'][:6]
357+
em.add_field(name='Merge Commit', value=f'[`{short_sha}`]({html_url}) - {message}')
346358
else:
347359
em.description = 'Already up to date with master repository.'
360+
361+
362+
short_sha = latest_update['sha'][:6]
363+
html_url = latest_update['html_url']
364+
message = latest_update['message']
365+
em.add_field(name='Latest Commit', value=f'[`{short_sha}`]({html_url}) - {message}')
348366

349367
await ctx.send(embed=em)
350368

utils/github.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,26 @@ def __init__(self, bot, access_token, username=None):
77
self.session = bot.session
88
self.access_token = access_token
99
self.username = username
10+
self.avatar_url = None
11+
self.url = None
1012
self.headers = {'Authorization': 'Bearer '+access_token}
1113

12-
async def update_repository(self):
13-
sha = (await self.request(self.head))['object']['sha']
14+
async def update_repository(self, sha=None):
15+
if sha is None:
16+
resp = await self.request(self.head)
17+
sha = resp['object']['sha']
18+
1419
payload = {
1520
'base': 'master',
1621
'head': sha,
1722
'commit_message': 'Updating bot'
1823
}
24+
1925
merge_url = self.merge_url.format(username=self.username)
2026

21-
r = await self.request(merge_url, method='POST', payload=payload)
22-
if isinstance(r, dict):
23-
return r['html_url']
27+
resp = await self.request(merge_url, method='POST', payload=payload)
28+
if isinstance(resp, dict):
29+
return resp
2430

2531
async def request(self, url, method='GET', payload=None):
2632
async with self.session.request(method, url, headers=self.headers, json=payload) as resp:
@@ -32,5 +38,8 @@ async def request(self, url, method='GET', payload=None):
3238
@classmethod
3339
async def login(cls, bot, access_token):
3440
self = cls(bot, access_token)
35-
self.username = (await self.request('https://api.github.com/user'))['login']
41+
resp = await self.request('https://api.github.com/user')
42+
self.username = resp['login']
43+
self.avatar_url = resp['avatar_url']
44+
self.url = resp['html_url']
3645
return self

0 commit comments

Comments
 (0)