Files
konabot/konabot/plugins/markdown/__init__.py
MixBadGun 500053e630
All checks were successful
continuous-integration/drone/push Build is passing
更稳定的 MarkDown 和 LaTeX 生成!
2025-11-10 21:59:45 +08:00

73 lines
2.2 KiB
Python

from loguru import logger
import nonebot
from nonebot.adapters import Event as BaseEvent
from nonebot.adapters.discord.event import MessageEvent as DiscordMessageEvent
from nonebot_plugin_alconna import (
UniMessage,
UniMsg
)
from konabot.plugins.markdown.core import MarkDownCore
def is_markdown_mentioned(msg: UniMsg) -> bool:
txt = msg.extract_plain_text()
if "markdown" not in txt[:8] and "md" not in txt[:2]:
return False
return True
evt = nonebot.on_message(rule=is_markdown_mentioned)
@evt.handle()
async def _(msg: UniMsg, event: BaseEvent):
if isinstance(event, DiscordMessageEvent):
content = msg.extract_plain_text()
else:
content = msg.extract_plain_text()
logger.debug(f"Received markdown command with content: {content}")
if "md" in content[:2]:
message = content.replace("md", "", 1).strip()
else:
message = content.replace("markdown", "", 1).strip()
# 如果回复了消息,则转换回复的内容
if(len(message) == 0):
if event.reply:
message = event.reply.message.extract_plain_text()
else:
return
logger.debug(f"Markdown content to render: {message}")
out = await MarkDownCore.render_markdown(message, theme="dark")
await evt.send(await UniMessage().image(raw=out).export())
def is_latex_mentioned(evt: BaseEvent, msg: UniMsg) -> bool:
txt = msg.extract_plain_text()
if "latex" not in txt[:5]:
return False
return True
evt = nonebot.on_message(rule=is_latex_mentioned)
@evt.handle()
async def _(msg: UniMsg, event: BaseEvent):
if isinstance(event, DiscordMessageEvent):
content = msg.extract_plain_text()
else:
content = msg.extract_plain_text()
logger.debug(f"Received markdown command with content: {content}")
message = content.replace("latex", "", 1).strip()
# 如果回复了消息,则转换回复的内容
if(len(message) == 0):
if event.reply:
message = event.reply.message.extract_plain_text()
else:
return
logger.debug(f"Latex content to render: {message}")
out = await MarkDownCore.render_latex(message, theme="dark")
await evt.send(await UniMessage().image(raw=out).export())