예제 #1
0
    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)
예제 #2
0
파일: test.py 프로젝트: Laogeodritt/KazTron
    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')
예제 #3
0
파일: test.py 프로젝트: Laogeodritt/KazTron
    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)
예제 #4
0
    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)