diff --git a/modules/core/discord/discord_command_handler.py b/modules/core/discord/discord_command_handler.py index 7d1d7d1..0e13bf1 100644 --- a/modules/core/discord/discord_command_handler.py +++ b/modules/core/discord/discord_command_handler.py @@ -57,7 +57,7 @@ class DiscordCommandHandler(BaseModule): def send_response(self, ctx: Message, reply): rsp = "" - embeds = [] + embeds: Embed = None if type(reply) == str: reply = self.discord.text.format_message(reply) rsp = f"> {self.parseDiscord(reply)}" @@ -68,22 +68,34 @@ class DiscordCommandHandler(BaseModule): reply, reply) if type(reply) == ChatBlob: if reply.embed: - embeds.append(Embed(title=self.parseDiscord(f"{reply.page_prefix} {reply.title} {reply.page_postfix}"), + embeds = Embed(title=self.parseDiscord(f"{reply.page_prefix} {reply.title} {reply.page_postfix}"), color=0x00FF00, - description=self.parseDiscord(reply.msg).replace("\n> ", '\n'))) + description=self.parseDiscord(reply.msg, blob=True)) else: reply: ChatBlob rsp = self.parseDiscord(reply.page_prefix) + "\n" if not (self.discord.text.strip_html_tags(reply.msg) or reply.msg).startswith(reply.title): rsp += f"**__{reply.title}__**\n" - rsp += "> " + self.parseDiscord(reply.msg) + rsp += self.parseDiscord(reply.msg, blob=True) rsp += f"\n {self.parseDiscord(reply.page_postfix)}" self.discord.relay_hub_service.send_message(f"Discord_({ctx.channel.name})", DictObject({'char_id': 0, 'name': ctx.author.name, 'discord_handle': f'{ctx.author.name}#{ctx.author.discriminator}'}), reply, reply) + if embeds: + if len(embeds.description) > 4000: + body = self.discord.text.split_by_separators(embeds.description, 4000, 10) + tmp1 = embeds + embeds = [] + for x in enumerate(body): + tmp = tmp1.copy() + tmp.description = body[x] + tmp.title += f"*Page ({x}/{len(body)}*" + embeds.append(tmp) + else: + embeds = [embeds] if len(rsp) > 2000: rsp = self.discord.text.split_by_separators(rsp, 2000) for page in rsp: @@ -91,7 +103,7 @@ class DiscordCommandHandler(BaseModule): else: self.discord.client.loop.create_task(ctx.reply(rsp, embeds=embeds)) - def parseDiscord(self, ctx: str): + def parseDiscord(self, ctx: str, blob=False): proficon = {1: "sold", 2: "ma", 3: "eng", 4: "fixer", 5: "agent", 6: "adv", 7: "trad", 8: "crat", 9: "enf", 10: "doc", 11: "nt", 12: "mp", 14: "keep", 15: "shade"} m = re.findall(r"", ctx) @@ -101,7 +113,7 @@ class DiscordCommandHandler(BaseModule): for x in ["`", ' *', ' _', ' |']: ctx = ctx.replace(x, f' \\{x.strip()}') - for pattern, sub in [(r"(
|\n|
)", r"\n> "), + for pattern, sub in [(r"(
|\n|
)", r"\n"), (r"(.*?)", r"**\1**"), (r"(.*?)", r"**__\1__**"), (r"
(.*?)
", r"**__\1__**"), @@ -110,22 +122,24 @@ class DiscordCommandHandler(BaseModule): (r"(.*?)", r'\2'), (r"", self.bot.get_char_name()), (r"", self.discord.setting_service.get_value("symbol")), - (r"(.+?)<\/a>", r"`\2`"), + # (r"(.+?)<\/a>", r"`\2`"), + (r"(.+?)<\/a>", r"[\4](https://aoitems.com/item\/\2\/\3/)" if blob else r"`\4`"), + (r"(.+?)<\/a>", r"[\4](https://aoitems.com/item\/\2\/\3/)" if blob else r"`\4`"), (r"<(.+?)>\s*?<\1>", ''), (r"", ''), (r"(.*?)", r'`\1`'), (r"(.*?)", r":yellow_circle: \1"), (r"(.*?)", r":blue_circle: \1"), + (r"(.*?)", r":red_circle: \1"), (r"(.*?)", r":white_circle: \1"), (r"", "\t"), - (r"", ''), + (r"\n\n", ''), (r"(.+?)", r'\1'), ('#', ''), ('<', '<'), ('>', '>'), ('', '')]: ctx = re.sub(pattern, sub, ctx) - cnt = 1 while cnt > 0: ctx, cnt = re.subn(r"<(black|white|yellow|blue|green|red|orange|grey|cyan|violet)>(.*?|\d+?)", r"\2", diff --git a/modules/core/discord/discord_controller.py b/modules/core/discord/discord_controller.py index 9d77671..410d579 100644 --- a/modules/core/discord/discord_controller.py +++ b/modules/core/discord/discord_controller.py @@ -185,7 +185,7 @@ class DiscordController: if msg.embed: msg: ChatBlob blob = Embed(title=self.cmd.parseDiscord(f"{msg.page_prefix} {msg.title} {msg.page_postfix}"), - color=0x00FF00, description=self.cmd.parseDiscord(msg.msg).replace("\n> ", '\n')) + color=0x00FF00, description=self.cmd.parseDiscord(msg.msg, blob=True).replace("\n> ", '\n')) asyncio.run_coroutine_threadsafe(ch.send("", delete_after=del_after, embed=blob), self.loop) return rsp = self.cmd.parseDiscord(ctx.formatted_message.page_prefix) + "\n" diff --git a/modules/standard/tower/contract_controller.py b/modules/standard/tower/contract_controller.py index 43a7b15..be6db4f 100644 --- a/modules/standard/tower/contract_controller.py +++ b/modules/standard/tower/contract_controller.py @@ -64,4 +64,4 @@ class ContractController(BaseModule): def row_formatter(self, entry, index, data): return f"{self.text.zfill(index, len(data))}. " \ f"{self.text.zfill(entry.contracts, data[0].contracts)} " \ - f"<{entry.faction.lower()}>{entry.org_name}\n" + f"<{(entry.faction or 'unknown').lower()}>{entry.org_name}\n"