async def show_badges(self, dest: discord.Channel, badges: Pagination, member: discord.Member): es = EmbedSplitter(auto_truncate=True, title="Badges", description="{} - {:d} badges".format( member.mention, len(badges)), colour=self.EMBED_COLOUR) es.set_footer(text="Page {:d}/{:d} (total {:d} badges)".format( badges.page + 1, badges.total_pages, len(badges))) for b in badges: # type: model.Badge es.add_field_no_break(name=format_datetime(b.timestamp), value=self._get_badge(b.badge)) es.add_field_no_break(name="From", value=user_mention(b.from_user.discord_id)) es.add_field(name="For", value=b.reason + '\n' + r'\_' * 16, inline=False) for em in es.finalize(): await self.bot.send_message(dest, embed=em)
async def mixed_splitter(self, ctx: commands.Context): lines = [] for i in range(50): lines.append( '{:d}. The quick brown fox jumped over the lazy dog.'.format( i)) full_text = '\n'.join(lines) es = EmbedSplitter(auto_truncate=True, title="The Title", description="A Short Title") for i in range(10): es.add_field_no_break(name=str(i) + " A", value="A") es.add_field_no_break(name=str(i) + " B", value="B") es.add_field(name=str(i) + " C", value="CCC " * 256 + 'DDD ' * 32, inline=False) await self.send_message(ctx.message.channel, full_text, embed=es, split='line')
async def embedsplitter(self, ctx): es = EmbedSplitter(auto_truncate=True, title="asdfjkl ", description="short and stout ") es.set_author(name='ABCMan1 ', url='https://google.com') for i in range(10): es.add_field_no_break(name=str(i) + " A", value="A") es.add_field_no_break(name=str(i) + " B", value="B") es.add_field(name=str(i) + " C", value="CCCC", inline=False) for i in range(10): es.add_field_no_break(name=str(i) + " A", value="A") es.add_field_no_break(name=str(i) + " B", value="B") es.add_field(name=str(i) + " C", value="CCC " * 256 + 'DDD ' * 32, inline=False) embeds = es.finalize() self.bot.say(str(len(embeds))) for em in embeds: await self.bot.say(embed=em)
async def show_record_page(self, dest: discord.Object, *, user: Optional[User], group: Sequence[User] = None, records: Pagination, title: str): if group is None: group = [] es = EmbedSplitter(color=self.COLOR_MAP[None], title=title) es.set_footer(text='Page {page:d}/{total:d} (Total {len:d} records)'. format(page=records.page + 1, total=records.total_pages, len=len(records))) # user information if user: user_fields = self._get_user_fields(user, group) for field_name, field_value in user_fields.items(): es.add_field_no_break(name=field_name, value=field_value, inline=True) # separator sep_name = 'Records Listing' sep_value = self.EMBED_SEPARATOR es.add_field_no_break(name=sep_name, value=sep_value, inline=False) # records page for record in records: # type: Union[Record, JoinRecord] # special case: join records without a normal record if isinstance(record, DummyRecord): es.add_field(name="First seen", value=record.display_append + self.EMBED_SEPARATOR, inline=False) continue # normal record record_fields, contents = self._get_record_fields(record, show_user=True) for field_name, field_value in record_fields.items(): es.add_field_no_break(name=field_name, value=field_value, inline=True) for field_name, field_value in contents.items(): # for JoinRecords display_append = getattr(record, 'display_append', '') if display_append: field_value += '\n' + display_append + self.EMBED_SEPARATOR es.add_field(name=field_name, value=field_value, inline=False) await self.send_message(dest, embed=es)