118 lines
3.7 KiB
Python
118 lines
3.7 KiB
Python
from typing import Optional
|
||
from nonebot_plugin_alconna import Alconna, Args, UniMessage, UniMsg, on_alconna
|
||
from konabot.common.web_render import WebRenderer
|
||
from nonebot.adapters import Event as BaseEvent
|
||
from playwright.async_api import Page
|
||
|
||
async def continue_handle(page: Page, content: str) -> None:
|
||
# 这里可以添加一些预处理逻辑
|
||
# 找到 id 为 input 的 textarea 元素
|
||
textarea = await page.query_selector("#input")
|
||
if textarea:
|
||
# 在 textarea 中输入内容
|
||
await textarea.fill(content)
|
||
# 找到 id 为 submit-btn 的按钮元素
|
||
submit_button = await page.query_selector("#submit-btn")
|
||
if submit_button:
|
||
# 点击按钮提交
|
||
await submit_button.click()
|
||
|
||
evt = on_alconna(
|
||
Alconna(
|
||
f"生成喜报",
|
||
Args["content?", str]
|
||
),
|
||
use_cmd_start=True,
|
||
use_cmd_sep=False,
|
||
skip_for_unmatch=True,
|
||
)
|
||
@evt.handle()
|
||
async def _(msg: UniMsg, event: BaseEvent, content: Optional[str] = ""):
|
||
|
||
screenshot = await WebRenderer.render(
|
||
url="https://witnessbot.mxowl.com/services/congratulations/",
|
||
target="#main-canvas",
|
||
other_function=lambda page: continue_handle(page, content),
|
||
timeout=30
|
||
)
|
||
await evt.send(
|
||
await UniMessage().image(raw=screenshot).export()
|
||
)
|
||
|
||
async def beibao_continue_handle(page: Page, content: str) -> None:
|
||
# 这里可以添加一些预处理逻辑
|
||
# 找到 id 为 input 的 textarea 元素
|
||
textarea = await page.query_selector("#input")
|
||
if textarea:
|
||
# 在 textarea 中输入内容
|
||
await textarea.fill(content)
|
||
# 找到 class 为 btn btn-outline-primary,for属性为 mode-2 的标签元素
|
||
mode_radio = await page.query_selector("label.btn.btn-outline-primary[for='mode-2']")
|
||
if mode_radio:
|
||
# 点击选择悲报模式
|
||
await mode_radio.click()
|
||
# 找到 id 为 submit-btn 的按钮元素
|
||
submit_button = await page.query_selector("#submit-btn")
|
||
if submit_button:
|
||
# 点击按钮提交
|
||
await submit_button.click()
|
||
|
||
evt = on_alconna(
|
||
Alconna(
|
||
f"生成悲报",
|
||
Args["content?", str]
|
||
),
|
||
use_cmd_start=True,
|
||
use_cmd_sep=False,
|
||
skip_for_unmatch=True,
|
||
)
|
||
@evt.handle()
|
||
async def _(msg: UniMsg, event: BaseEvent, content: Optional[str] = ""):
|
||
|
||
screenshot = await WebRenderer.render(
|
||
url="https://witnessbot.mxowl.com/services/congratulations/",
|
||
target="#main-canvas",
|
||
other_function=lambda page: beibao_continue_handle(page, content),
|
||
timeout=30
|
||
)
|
||
await evt.send(
|
||
await UniMessage().image(raw=screenshot).export()
|
||
)
|
||
|
||
async def continue_handle_3(page: Page, arg1: str, arg2: str) -> None:
|
||
# 这里可以添加一些预处理逻辑
|
||
# 找到 id 为 textL 的 input,id 为 textR 的 input
|
||
input1 = await page.query_selector("#textL")
|
||
input2 = await page.query_selector("#textR")
|
||
if input1:
|
||
await input1.fill(arg1)
|
||
if input2:
|
||
await input2.fill(arg2)
|
||
# 等待 0.3 秒钟
|
||
await page.wait_for_timeout(300)
|
||
# 等待 id 为 loading 的元素不可见
|
||
loading = await page.query_selector("#loading")
|
||
if loading:
|
||
await loading.wait_for_element_state("hidden")
|
||
|
||
evt = on_alconna(
|
||
Alconna(
|
||
f"BA生成",
|
||
Args["arg1", str],
|
||
Args["arg2", str]
|
||
),
|
||
use_cmd_start=True,
|
||
use_cmd_sep=False,
|
||
skip_for_unmatch=True,
|
||
)
|
||
@evt.handle()
|
||
async def _(msg: UniMsg, event: BaseEvent, arg1: str, arg2: str):
|
||
screenshot = await WebRenderer.render(
|
||
url="https://tmp.nulla.top/ba-logo/",
|
||
target="#canvas",
|
||
other_function=lambda page: continue_handle_3(page, arg1, arg2),
|
||
timeout=30
|
||
)
|
||
await evt.send(
|
||
await UniMessage().image(raw=screenshot).export()
|
||
) |