async def get_pr_messages(self, event_body): pr_number = event_body['number'] title = event_body['pull_request']['title'] timestamp = dateutil.parser.parse( event_body['pull_request']['created_at']) embed = Embed(title=f'#{pr_number}: {title}', colour=Colour(self._pull_request_colour), url=event_body['pull_request']['html_url'], timestamp=timestamp) author_name = event_body['pull_request']['user']['login'] author = await self.get_author_info(author_name) if author and author['name'] and author['name'] != author['login']: author_name = f'{author["name"]} ({author["login"]})' embed.set_author( name=author_name, url=event_body['pull_request']['user']['html_url'], icon_url=event_body['pull_request']['user']['avatar_url']) embed.set_footer(text='Pull Request') embed.add_field(name='Repository', value=event_body['repository']['full_name'], inline=True) # create copy without description text for brief channel brief_embed = embed.copy() # filter out comments in template event_body['pull_request']['body'] = '\n'.join( l.strip() for l in event_body['pull_request']['body'].splitlines() if not l.startswith('<!-')) # trim message to discord limits if len(event_body['pull_request']['body']) >= 2048: embed.description = event_body['pull_request'][ 'body'][:2000] + ' [... message trimmed]' else: embed.description = event_body['pull_request']['body'] return brief_embed, embed
async def get_issue_messages(self, event_body): issue_number = event_body['issue']['number'] title = event_body['issue']['title'] timestamp = dateutil.parser.parse(event_body['issue']['created_at']) embed = Embed(title=f'#{issue_number}: {title}', colour=Colour(self._issue_colour), url=event_body['issue']['html_url'], timestamp=timestamp) author_name = event_body['issue']['user']['login'] author = await self.get_author_info(author_name) if author and author['name'] and author['name'] != author['login']: author_name = f'{author["name"]} ({author["login"]})' embed.set_author(name=author_name, url=event_body['issue']['user']['html_url'], icon_url=event_body['issue']['user']['avatar_url']) embed.set_footer(text='Issue') embed.add_field(name='Repository', value=event_body['repository']['full_name'], inline=True) # create copy without description text for brief channel brief_embed = embed.copy() event_body['issue']['body'] = '\n'.join( l.strip() for l in event_body['issue']['body'].splitlines() if not l.startswith('<!-')) issue_text = event_body['issue']['body'] # strip double-newlines from issue forms if '\n\n' in issue_text: issue_text = issue_text.replace('\n\n', '\n') if len(issue_text) >= 2048: embed.description = issue_text[:2000] + ' [... message trimmed]' else: embed.description = issue_text return brief_embed, embed
async def get_discussion_messages(self, event_body): discussion_number = event_body['discussion']['number'] title = event_body['discussion']['title'] category = event_body['discussion']['category']['name'] timestamp = dateutil.parser.parse( event_body['discussion']['created_at']) embed = Embed(title=f'#{discussion_number}: {category} - {title}', colour=Colour(self._discussion_colour), timestamp=timestamp, url=event_body['discussion']['html_url']) author_name = event_body['discussion']['user']['login'] author = await self.get_author_info(author_name) if author and author['name'] and author['name'] != author['login']: author_name = f'{author["name"]} ({author["login"]})' embed.set_author( name=author_name, url=event_body['discussion']['user']['html_url'], icon_url=event_body['discussion']['user']['avatar_url']) embed.set_footer(text='Discussion') embed.add_field(name='Repository', value=event_body['repository']['full_name'], inline=True) # create copy without description text for brief channel brief_embed = embed.copy() event_body['discussion']['body'] = '\n'.join( l.strip() for l in event_body['discussion']['body'].splitlines() if not l.startswith('<!-')) if len(event_body['discussion']['body']) >= 1024: embed.description = event_body['discussion'][ 'body'][:1024] + ' [... message trimmed]' else: embed.description = event_body['discussion']['body'] return brief_embed, embed