small improvments
This commit is contained in:
@@ -3,12 +3,11 @@ import discord
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from . import MessageLog
|
from . import MessageLog
|
||||||
|
from utils import serialize, FakeMessage
|
||||||
|
|
||||||
CHUNK_SIZE = 2000
|
CHUNK_SIZE = 2000
|
||||||
FORMAT = 3
|
FORMAT = 3
|
||||||
|
|
||||||
NOT_SERIALIZED = ["channel", "guild", "start_date"]
|
|
||||||
|
|
||||||
|
|
||||||
class ChannelLogs:
|
class ChannelLogs:
|
||||||
def __init__(self, channel: Union[discord.TextChannel, dict], guild: Any):
|
def __init__(self, channel: Union[discord.TextChannel, dict], guild: Any):
|
||||||
@@ -82,9 +81,7 @@ class ChannelLogs:
|
|||||||
done = 0
|
done = 0
|
||||||
async for message in channel.history(
|
async for message in channel.history(
|
||||||
limit=CHUNK_SIZE,
|
limit=CHUNK_SIZE,
|
||||||
before=discord.MessageReference(
|
before=FakeMessage(self.first_message_id)
|
||||||
self.first_message_id, self.id, guild_id=self.guild.id
|
|
||||||
)
|
|
||||||
if self.first_message_id is not None
|
if self.first_message_id is not None
|
||||||
else None,
|
else None,
|
||||||
oldest_first=False,
|
oldest_first=False,
|
||||||
@@ -110,9 +107,7 @@ class ChannelLogs:
|
|||||||
tmp_message_id = self.last_message_id
|
tmp_message_id = self.last_message_id
|
||||||
async for message in channel.history(
|
async for message in channel.history(
|
||||||
limit=CHUNK_SIZE,
|
limit=CHUNK_SIZE,
|
||||||
after=discord.MessageReference(
|
after=FakeMessage(self.first_message_id),
|
||||||
self.first_message_id, self.id, guild_id=self.guild.id
|
|
||||||
),
|
|
||||||
oldest_first=True,
|
oldest_first=True,
|
||||||
):
|
):
|
||||||
last_message_date = message.created_at
|
last_message_date = message.created_at
|
||||||
@@ -121,7 +116,7 @@ class ChannelLogs:
|
|||||||
await m.load(message)
|
await m.load(message)
|
||||||
self.messages.insert(0, m)
|
self.messages.insert(0, m)
|
||||||
yield len(self.messages), False
|
yield len(self.messages), False
|
||||||
except discord.errors.HTTPException:
|
except discord.errors.HTTPException as e:
|
||||||
yield -1, True
|
yield -1, True
|
||||||
return # When an exception occurs (like Forbidden)
|
return # When an exception occurs (like Forbidden)
|
||||||
self.start_date = (
|
self.start_date = (
|
||||||
@@ -130,8 +125,6 @@ class ChannelLogs:
|
|||||||
yield len(self.messages), True
|
yield len(self.messages), True
|
||||||
|
|
||||||
def dict(self) -> dict:
|
def dict(self) -> dict:
|
||||||
channel = dict(self.__dict__)
|
channel = serialize(self, not_serialized=["channel", "guild", "start_date"])
|
||||||
for key in NOT_SERIALIZED:
|
|
||||||
channel.pop(key, None)
|
|
||||||
channel["messages"] = [message.dict() for message in self.messages]
|
channel["messages"] = [message.dict() for message in self.messages]
|
||||||
return channel
|
return channel
|
||||||
|
|||||||
+4
-12
@@ -2,13 +2,10 @@ from typing import Union, Any
|
|||||||
import discord
|
import discord
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from utils import is_extension
|
from utils import is_extension, serialize
|
||||||
|
|
||||||
IMAGE_FORMAT = [".gif", ".gifv", ".png", ".jpg", ".jpeg", ".bmp"]
|
IMAGE_FORMAT = [".gif", ".gifv", ".png", ".jpg", ".jpeg", ".bmp"]
|
||||||
EMBED_IMAGES = ["image", "gifv"]
|
EMBED_IMAGES = ["image", "gifv", "gif"]
|
||||||
|
|
||||||
|
|
||||||
NOT_SERIALIZED = ["channel"]
|
|
||||||
|
|
||||||
|
|
||||||
class MessageLog:
|
class MessageLog:
|
||||||
@@ -81,11 +78,6 @@ class MessageLog:
|
|||||||
self.reactions[str(reaction.emoji)] += [user.id]
|
self.reactions[str(reaction.emoji)] += [user.id]
|
||||||
|
|
||||||
def dict(self) -> dict:
|
def dict(self) -> dict:
|
||||||
message = dict(self.__dict__)
|
return serialize(
|
||||||
for key in NOT_SERIALIZED:
|
self, not_serialized=["channel"], dates=["created_at", "edited_at"]
|
||||||
message.pop(key, None)
|
|
||||||
message["created_at"] = self.created_at.isoformat()
|
|
||||||
message["edited_at"] = (
|
|
||||||
self.edited_at.isoformat() if self.edited_at is not None else None
|
|
||||||
)
|
)
|
||||||
return message
|
|
||||||
|
|||||||
+20
-1
@@ -30,7 +30,7 @@ def generate_help(
|
|||||||
replace_args=[],
|
replace_args=[],
|
||||||
):
|
):
|
||||||
arg_list = "* " + "\n* ".join(
|
arg_list = "* " + "\n* ".join(
|
||||||
replace_args + COMMON_HELP_ARGS[len(replace_args) :] + args
|
args + replace_args + COMMON_HELP_ARGS[len(replace_args) :]
|
||||||
)
|
)
|
||||||
return f"""```
|
return f"""```
|
||||||
%{cmd}: {info}
|
%{cmd}: {info}
|
||||||
@@ -84,6 +84,10 @@ def escape_text(text: str) -> str:
|
|||||||
return discord.utils.escape_markdown(discord.utils.escape_mentions(text))
|
return discord.utils.escape_markdown(discord.utils.escape_mentions(text))
|
||||||
|
|
||||||
|
|
||||||
|
class FakeMessage:
|
||||||
|
def __init__(self, id: int):
|
||||||
|
self.id = id
|
||||||
|
|
||||||
# FILE
|
# FILE
|
||||||
|
|
||||||
|
|
||||||
@@ -132,6 +136,21 @@ def val_sum(d: Dict[Any, int]) -> int:
|
|||||||
return sum(d.values())
|
return sum(d.values())
|
||||||
|
|
||||||
|
|
||||||
|
def serialize(
|
||||||
|
obj: Any, *, not_serialized: List[str] = [], dates: List[str] = []
|
||||||
|
) -> Dict:
|
||||||
|
output = dict(obj.__dict__)
|
||||||
|
for key in not_serialized:
|
||||||
|
output.pop(key, None)
|
||||||
|
for key in dates:
|
||||||
|
if output[key]:
|
||||||
|
try:
|
||||||
|
output[key] = getattr(obj, key).isoformat()
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
# MESSAGE FORMATTING
|
# MESSAGE FORMATTING
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user