|
|
|
@ -91,7 +91,6 @@ async def run_command(args):
|
|
|
|
return stdout.decode().strip()
|
|
|
|
return stdout.decode().strip()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO Add Paginator
|
|
|
|
|
|
|
|
class Paginator:
|
|
|
|
class Paginator:
|
|
|
|
def __init__(self, *,
|
|
|
|
def __init__(self, *,
|
|
|
|
max_chars: int=1990,
|
|
|
|
max_chars: int=1990,
|
|
|
|
@ -114,10 +113,8 @@ class Paginator:
|
|
|
|
|
|
|
|
|
|
|
|
def pages(self) -> typing.List[str]:
|
|
|
|
def pages(self) -> typing.List[str]:
|
|
|
|
pages = list()
|
|
|
|
pages = list()
|
|
|
|
|
|
|
|
|
|
|
|
page = ''
|
|
|
|
page = ''
|
|
|
|
lines = 0
|
|
|
|
lines = 0
|
|
|
|
|
|
|
|
|
|
|
|
parts = list()
|
|
|
|
parts = list()
|
|
|
|
|
|
|
|
|
|
|
|
def open_page():
|
|
|
|
def open_page():
|
|
|
|
@ -153,6 +150,10 @@ class Paginator:
|
|
|
|
def __len__(self):
|
|
|
|
def __len__(self):
|
|
|
|
return sum(len(p) for p in self._parts)
|
|
|
|
return sum(len(p) for p in self._parts)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __eq__(self, other):
|
|
|
|
|
|
|
|
# noinspection PyProtectedMember
|
|
|
|
|
|
|
|
return self.__class__ == other.__class__ and self._parts == other._parts
|
|
|
|
|
|
|
|
|
|
|
|
def add_page_break(self, *, to_beginning: bool=False) -> None:
|
|
|
|
def add_page_break(self, *, to_beginning: bool=False) -> None:
|
|
|
|
self.add(self._page_break, to_beginning=to_beginning)
|
|
|
|
self.add(self._page_break, to_beginning=to_beginning)
|
|
|
|
|
|
|
|
|
|
|
|
@ -203,3 +204,27 @@ class Paginator:
|
|
|
|
self._parts.insert(0, item)
|
|
|
|
self._parts.insert(0, item)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
self._parts.append(item)
|
|
|
|
self._parts.append(item)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Book:
|
|
|
|
|
|
|
|
def __init__(self, pag: Paginator, message: discord.Message):
|
|
|
|
|
|
|
|
if pag == Paginator():
|
|
|
|
|
|
|
|
raise RuntimeError('Cannot create a book out of an empty Paginator.')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self._pages = pag.pages()
|
|
|
|
|
|
|
|
self._len_pages = len(self._pages)
|
|
|
|
|
|
|
|
self._current_page = 0
|
|
|
|
|
|
|
|
self._message = message
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def advance_page(self, count: int=1):
|
|
|
|
|
|
|
|
self._current_page += count
|
|
|
|
|
|
|
|
if self._current_page >= self._len_pages:
|
|
|
|
|
|
|
|
self._current_page = self._len_pages
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def reverse_page(self, count: int=1):
|
|
|
|
|
|
|
|
self._current_page -= count
|
|
|
|
|
|
|
|
if self._current_page <= 0:
|
|
|
|
|
|
|
|
self._current_page = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def display_page(self):
|
|
|
|
|
|
|
|
await self._message.edit(content=self._pages[self._current_page])
|
|
|
|
|