From a863b351f2616ff3a8158e7486f8c05e5162c86b Mon Sep 17 00:00:00 2001 From: M2tecDev <42443737+M2tecDev@users.noreply.github.com> Date: Sat, 5 Jun 2021 21:25:32 +0200 Subject: [PATCH 1/3] Add send private support Little changes for send the message to message.author with a new arg ```private=bool``` --- discord/ext/buttons/buttons.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/discord/ext/buttons/buttons.py b/discord/ext/buttons/buttons.py index 3c6959f..fe768f0 100644 --- a/discord/ext/buttons/buttons.py +++ b/discord/ext/buttons/buttons.py @@ -221,13 +221,15 @@ class Paginator(Session): The timeout in seconds to wait for reaction responses. thumbnail: Only available when embed=True. The thumbnail URL to set for the embeded pages. + private: bool + if true send the author PM default is False """ def __init__(self, *, title: str = '', length: int = 10, entries: list = None, extra_pages: list = None, prefix: str = '', suffix: str = '', format: str = '', colour: Union[int, discord.Colour] = discord.Embed.Empty, color: Union[int, discord.Colour] = discord.Embed.Empty, use_defaults: bool = True, embed: bool = True, - joiner: str = '\n', timeout: int = 180, thumbnail: str = None): + joiner: str = '\n', timeout: int = 180, thumbnail: str = None, private: bool = False): super().__init__() self._defaults = {(0, '⏮'): Button(emoji='⏮', position=0, callback=partial(self._default_indexer, 'start')), (1, '◀'): Button(emoji='◀', position=1, callback=partial(self._default_indexer, -1)), @@ -258,6 +260,7 @@ def __init__(self, *, title: str = '', length: int = 10, entries: list = None, self.joiner = joiner self.use_defaults = use_defaults self.use_embed = embed + self.private = private def chunker(self): """Create chunks of our entries for pagination.""" @@ -300,9 +303,15 @@ async def _paginate(self, ctx: commands.Context): self._pages = self._pages + self.extra_pages if isinstance(self._pages[0], discord.Embed): - self.page = await ctx.send(embed=self._pages[0]) + if self.private: + self.page = await ctx.author.send(embed=self._pages[0]) + else: + self.page = await ctx.send(embed=self._pages[0]) else: - self.page = await ctx.send(self._pages[0]) + if self.private: + self.page = await ctx.author.send(self._pages[0]) + else: + self.page = await ctx.send(self._pages[0]) self._session_task = ctx.bot.loop.create_task(self._session(ctx)) From a8ffe5c49c3c3cfb266c61a7103a78b83a390799 Mon Sep 17 00:00:00 2001 From: M2tecDev <42443737+M2tecDev@users.noreply.github.com> Date: Sat, 5 Jun 2021 21:34:12 +0200 Subject: [PATCH 2/3] add timestamp support for embed Add Timestamp parameter (bool default = False) for embeds --- discord/ext/buttons/buttons.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/discord/ext/buttons/buttons.py b/discord/ext/buttons/buttons.py index fe768f0..70cb07b 100644 --- a/discord/ext/buttons/buttons.py +++ b/discord/ext/buttons/buttons.py @@ -4,6 +4,7 @@ from discord.ext import commands from functools import partial from typing import Union +from datetime import datetime __all__ = ('Session', 'Paginator', 'button', 'inverse_button',) @@ -223,13 +224,15 @@ class Paginator(Session): Only available when embed=True. The thumbnail URL to set for the embeded pages. private: bool if true send the author PM default is False + timestamp: bool + Only available when embed=True. add timestamp for the embed """ def __init__(self, *, title: str = '', length: int = 10, entries: list = None, extra_pages: list = None, prefix: str = '', suffix: str = '', format: str = '', colour: Union[int, discord.Colour] = discord.Embed.Empty, color: Union[int, discord.Colour] = discord.Embed.Empty, use_defaults: bool = True, embed: bool = True, - joiner: str = '\n', timeout: int = 180, thumbnail: str = None, private: bool = False): + joiner: str = '\n', timeout: int = 180, thumbnail: str = None, private: bool = False, timestamp: bool = False): super().__init__() self._defaults = {(0, '⏮'): Button(emoji='⏮', position=0, callback=partial(self._default_indexer, 'start')), (1, '◀'): Button(emoji='◀', position=1, callback=partial(self._default_indexer, -1)), @@ -259,8 +262,9 @@ def __init__(self, *, title: str = '', length: int = 10, entries: list = None, self.format = format self.joiner = joiner self.use_defaults = use_defaults - self.use_embed = embed self.private = private + self.use_embed = embed + self.timestamp = timestamp def chunker(self): """Create chunks of our entries for pagination.""" @@ -294,7 +298,8 @@ async def _paginate(self, ctx: commands.Context): self._pages.append(self.joiner.join(chunk)) else: embed = discord.Embed(title=self.title, description=self.joiner.join(chunk), colour=self.colour) - + if self.timestamp: + embed.timestamp = datetime.utcnow() if self.thumbnail: embed.set_thumbnail(url=self.thumbnail) @@ -312,7 +317,6 @@ async def _paginate(self, ctx: commands.Context): self.page = await ctx.author.send(self._pages[0]) else: self.page = await ctx.send(self._pages[0]) - self._session_task = ctx.bot.loop.create_task(self._session(ctx)) async def _session(self, ctx): From a785a0434060953649ef6a744230dd0f512a0d84 Mon Sep 17 00:00:00 2001 From: M2tecDev <42443737+M2tecDev@users.noreply.github.com> Date: Thu, 10 Jun 2021 20:03:32 +0200 Subject: [PATCH 3/3] add page_idx page_idx is is a new arg for define the start page --- discord/ext/buttons/buttons.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/discord/ext/buttons/buttons.py b/discord/ext/buttons/buttons.py index 70cb07b..cc39766 100644 --- a/discord/ext/buttons/buttons.py +++ b/discord/ext/buttons/buttons.py @@ -226,13 +226,15 @@ class Paginator(Session): if true send the author PM default is False timestamp: bool Only available when embed=True. add timestamp for the embed + page_idx: int + Default is 0 and its not working on private """ def __init__(self, *, title: str = '', length: int = 10, entries: list = None, extra_pages: list = None, prefix: str = '', suffix: str = '', format: str = '', colour: Union[int, discord.Colour] = discord.Embed.Empty, color: Union[int, discord.Colour] = discord.Embed.Empty, use_defaults: bool = True, embed: bool = True, - joiner: str = '\n', timeout: int = 180, thumbnail: str = None, private: bool = False, timestamp: bool = False): + joiner: str = '\n', timeout: int = 180, thumbnail: str = None, private: bool = False, timestamp: bool = False, page_idx: int = 0): super().__init__() self._defaults = {(0, '⏮'): Button(emoji='⏮', position=0, callback=partial(self._default_indexer, 'start')), (1, '◀'): Button(emoji='◀', position=1, callback=partial(self._default_indexer, -1)), @@ -265,6 +267,7 @@ def __init__(self, *, title: str = '', length: int = 10, entries: list = None, self.private = private self.use_embed = embed self.timestamp = timestamp + self.page_idx = page_idx def chunker(self): """Create chunks of our entries for pagination.""" @@ -307,21 +310,21 @@ async def _paginate(self, ctx: commands.Context): self._pages = self._pages + self.extra_pages - if isinstance(self._pages[0], discord.Embed): + if isinstance(self._pages[self.page_idx], discord.Embed): if self.private: - self.page = await ctx.author.send(embed=self._pages[0]) + self.page = await ctx.author.send(embed=self._pages[self.page_idx]) else: - self.page = await ctx.send(embed=self._pages[0]) + self.page = await ctx.send(embed=self._pages[self.page_idx]) else: if self.private: - self.page = await ctx.author.send(self._pages[0]) + self.page = await ctx.author.send(self._pages[self.page_idx]) else: - self.page = await ctx.send(self._pages[0]) + self.page = await ctx.send(self._pages[self.page_idx]) self._session_task = ctx.bot.loop.create_task(self._session(ctx)) async def _session(self, ctx): if self.use_defaults: - if len(self._pages) == 1: + if len(self._pages) == 1 or self.page_idx > 0: self._buttons = {**self._default_stop, **self._buttons} else: self._buttons = {**self._defaults, **self._buttons}