73 lines
2.2 KiB
Python
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())
|