mirror of
https://gitlab.com/chicken-riders/RcGcDb.git
synced 2025-02-23 00:54:09 +00:00
simplify stacking messages and add support for discord components
This commit is contained in:
parent
2cd9ea58c6
commit
89236d11ab
|
@ -131,31 +131,25 @@ class DiscordMessage:
|
||||||
def set_name(self, name):
|
def set_name(self, name):
|
||||||
self.webhook_object["username"] = name
|
self.webhook_object["username"] = name
|
||||||
|
|
||||||
def stack_message_list(messages: list) -> list:
|
def stack_message_list(messages: list[DiscordMessage]) -> list:
|
||||||
|
def check_for_components(*messages: DiscordMessage):
|
||||||
|
return any([True for x in messages if "components" in x.webhook_object])
|
||||||
|
|
||||||
if len(messages) > 1:
|
if len(messages) > 1:
|
||||||
if messages[0].message_type() == "embed":
|
if messages[0].message_type() == "embed":
|
||||||
# for i, msg in enumerate(messages):
|
index = 0
|
||||||
# if not isinstance(msg, StackedDiscordMessage):
|
while index+1 < len(messages):
|
||||||
# break
|
if not isinstance(messages[index], StackedDiscordMessage): # Make first message a stack
|
||||||
# else: # all messages in messages are stacked, exit this if
|
messages[index] = StackedDiscordMessage(messages[index])
|
||||||
# i += 1
|
try:
|
||||||
removed_msgs = 0
|
messages[index].add_embed(messages[index+1]) # Add an embed from next message to a stack
|
||||||
# We split messages into groups of 10
|
messages.remove(messages[index+1])
|
||||||
for group_index in range(ceil((len(messages)) / 10)):
|
except EmbedListFull:
|
||||||
message_group_index = group_index * 10 - removed_msgs # this helps us with calculations which messages we need
|
index += 1
|
||||||
stackable = StackedDiscordMessage(messages[message_group_index]) # treat the first message from the group as main
|
|
||||||
for message in messages[message_group_index + 1:message_group_index + 10]: # we grab messages from messages list
|
|
||||||
try:
|
|
||||||
stackable.add_embed(message) # and to our main message we add ones after it that are from same group
|
|
||||||
except EmbedListFull: # if there are too many messages in our group we simply break so another group can be made
|
|
||||||
break
|
|
||||||
messages.remove(message)
|
|
||||||
removed_msgs += 1 # helps with calculating message_group_index
|
|
||||||
messages[message_group_index] = stackable
|
|
||||||
elif messages[0].message_type() == "compact":
|
elif messages[0].message_type() == "compact":
|
||||||
message_index = 0
|
message_index = 0
|
||||||
while len(messages) > message_index+1: # as long as we have messages to stack
|
while len(messages) > message_index+1: # as long as we have messages to stack
|
||||||
if (len(messages[message_index]) + len(messages[message_index+1])) < 2000: # if overall length is lower than 2000
|
if ((len(messages[message_index]) + len(messages[message_index+1])) < 2000) and not check_for_components(messages[message_index], messages[message_index+1]): # if overall length is lower than 2000
|
||||||
messages[message_index].webhook_object["content"] = messages[message_index].webhook_object["content"] + "\n" + messages[message_index + 1].webhook_object["content"]
|
messages[message_index].webhook_object["content"] = messages[message_index].webhook_object["content"] + "\n" + messages[message_index + 1].webhook_object["content"]
|
||||||
messages[message_index].length += (len(messages[message_index + 1]) + 1)
|
messages[message_index].length += (len(messages[message_index + 1]) + 1)
|
||||||
messages.remove(messages[message_index + 1])
|
messages.remove(messages[message_index + 1])
|
||||||
|
@ -176,7 +170,7 @@ class StackedDiscordMessage(DiscordMessage):
|
||||||
self.add_embed(message)
|
self.add_embed(message)
|
||||||
|
|
||||||
def add_embed(self, message):
|
def add_embed(self, message):
|
||||||
if len(self) + len(message) > 6000:
|
if len(self) + len(message) > 6000 or len(self.webhook_object["embeds"]) == 10 or "components" in message.webhook_object:
|
||||||
raise EmbedListFull
|
raise EmbedListFull
|
||||||
self.length += len(message)
|
self.length += len(message)
|
||||||
self._setup_embed()
|
self._setup_embed()
|
||||||
|
|
Loading…
Reference in a new issue