11from collections import defaultdict
22import re
33
4+ import discord
5+
46class Version :
5- def __init__ (self , version , lines ):
7+ def __init__ (self , bot , version , lines ):
8+ self .bot = bot
69 self .version = version
710 self .lines = [x for x in lines .splitlines () if x ]
811 self .fields = defaultdict (str )
@@ -21,20 +24,45 @@ def parse(self):
2124 self .description += line + '\n '
2225 else :
2326 self .fields [curr_action ] += line + '\n '
24-
25- class ChangeLogParser :
27+
28+ @property
29+ def embed (self ):
30+ em = discord .Embed (color = discord .Color .green (), description = self .description )
31+ em .set_author (
32+ name = f'{ self .version } - Changelog' ,
33+ icon_url = self .bot .user .avatar_url ,
34+ url = 'https://modmail.tk/changelog'
35+ )
36+ for name , value in self .fields .items ():
37+ em .add_field (name = name , value = value )
38+ em .set_footer (text = f'Current version: v{ self .bot .version } ' )
39+ return em
40+
41+ class ChangeLog :
42+
43+ changelog_url = 'https://raw.githubusercontent.com/kyb3r/modmail/master/CHANGELOG.md'
2644 regex = re .compile (r'# (v\d\.\d\.\d)([\S\s]*?(?=# v))' )
2745
28- def __init__ (self , text ):
46+ def __init__ (self , bot , text ):
47+ self .bot = bot
2948 self .text = text
30- self .versions = [Version (* m ) for m in self .regex .findall (text )]
49+ self .versions = [Version (bot , * m ) for m in self .regex .findall (text )]
3150
3251 @property
3352 def latest_version (self ):
3453 return self .versions [0 ]
3554
36-
55+ @property
56+ def embeds (self ):
57+ return [v .embed for v in self .versions ]
58+
59+ @classmethod
60+ async def from_repo (cls , bot , url = None ):
61+ url = url or cls .changelog_url
62+ resp = await bot .session .get (url )
63+ return cls (bot , await resp .text ())
64+
3765if __name__ == '__main__' :
3866 with open ('../CHANGELOG.md' ) as f :
39- changelog = ChangeLogParser (f .read ())
67+ changelog = ChangeLog (f .read ())
4068 print (changelog .latest_version )
0 commit comments