Compare commits
3 Commits
ec1f9627f3
...
feature/sl
| Author | SHA1 | Date | |
|---|---|---|---|
|
f0601acbe9
|
|||
|
39c7c043ca
|
|||
|
39accb16e0
|
@ -113,6 +113,22 @@ def register_default_allow_permission(key: str):
|
||||
|
||||
|
||||
def require_permission(perm: str) -> Rule: # pragma: no cover
|
||||
"""
|
||||
`require_permission` 是一个 Nonebot 规则,可以用来要求一个 Nonebot 的指令需
|
||||
要拥有一定的权限。
|
||||
|
||||
```python
|
||||
from konabot.common.permsys import require_permission
|
||||
from nonebot import on_command
|
||||
|
||||
cmd = on_command("kz", rule=require_permission("kagami.kz"))
|
||||
|
||||
@cmd.handle()
|
||||
async def _():
|
||||
await cmd.finish("你抓到了普通pt")
|
||||
```
|
||||
"""
|
||||
|
||||
async def check_permission(event: Event, pm: DepPermManager) -> bool:
|
||||
return await pm.check_has_permission(event, perm)
|
||||
|
||||
|
||||
44
konabot/plugins/guihuasay.py
Normal file
44
konabot/plugins/guihuasay.py
Normal file
@ -0,0 +1,44 @@
|
||||
import re
|
||||
from typing import Any
|
||||
from nonebot import on_message
|
||||
from nonebot.adapters import Event
|
||||
from nonebot_plugin_alconna import UniMessage, UniMsg
|
||||
from playwright.async_api import Page
|
||||
|
||||
from konabot.common.nb import match_keyword
|
||||
from konabot.common.web_render import WebRenderer, konaweb
|
||||
|
||||
|
||||
async def render_image(message: str) -> UniMessage[Any]:
|
||||
"""
|
||||
渲染文本为图片
|
||||
"""
|
||||
|
||||
async def page_function(page: Page):
|
||||
await page.wait_for_function("typeof setContent === 'function'")
|
||||
await page.evaluate(
|
||||
"([ message ]) => { return setContent(message); }",
|
||||
[ message ],
|
||||
)
|
||||
|
||||
img_data = await WebRenderer.render(
|
||||
url=konaweb("guihuasay"),
|
||||
target="#main",
|
||||
other_function=page_function,
|
||||
)
|
||||
return UniMessage.image(raw=img_data)
|
||||
|
||||
|
||||
cmd = on_message(
|
||||
rule=match_keyword.match_keyword(
|
||||
re.compile(r"^(桂花[说想])\s.+", re.I),
|
||||
),
|
||||
)
|
||||
|
||||
@cmd.handle()
|
||||
async def _(event: Event, msg: UniMsg):
|
||||
text = msg.extract_plain_text().lstrip()
|
||||
_, content = text.split(maxsplit=1)
|
||||
msg = await render_image(content)
|
||||
await msg.send(event)
|
||||
|
||||
62
konabot/plugins/oyasumi/__init__.py
Normal file
62
konabot/plugins/oyasumi/__init__.py
Normal file
@ -0,0 +1,62 @@
|
||||
import random
|
||||
from nonebot import on_command
|
||||
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent
|
||||
from nonebot.rule import to_me
|
||||
from nonebot_plugin_alconna import UniMessage
|
||||
from konabot.common.permsys import require_permission
|
||||
|
||||
|
||||
async def make_sleep(event: GroupMessageEvent, bot: Bot, duration: int):
|
||||
"""
|
||||
让人睡着
|
||||
"""
|
||||
|
||||
await bot.set_group_ban(
|
||||
group_id=event.group_id,
|
||||
user_id=event.user_id,
|
||||
duration=duration,
|
||||
)
|
||||
|
||||
seconds = duration % 60
|
||||
minutes = (duration // 60) % 60
|
||||
hours = duration // 3600
|
||||
|
||||
message = f" 晚安!已获得 {hours} 小时 {minutes} 分钟 {seconds} 秒的睡眠💤"
|
||||
message = UniMessage.at(str(event.user_id)).text(message)
|
||||
|
||||
await message.send(target=event, bot=bot)
|
||||
|
||||
|
||||
cmd_sleep_night = on_command(
|
||||
"此方晚安",
|
||||
rule=require_permission("oyasumi") & to_me(),
|
||||
aliases={"晚安"},
|
||||
)
|
||||
|
||||
|
||||
@cmd_sleep_night.handle()
|
||||
async def oyasumi(event: GroupMessageEvent, bot: Bot):
|
||||
"""
|
||||
限定只能用 GroupMessageEvent,因为它只能在 QQ 群中使用
|
||||
"""
|
||||
|
||||
# 考虑到有人是熬夜很久,所以这里就给一个 3 到 5 小时睡眠的随机数。这个时间内
|
||||
# 要睡不着我觉得是个小概率事件了!
|
||||
|
||||
duration = random.randint(3 * 3600, 5 * 3600)
|
||||
await make_sleep(event, bot, duration)
|
||||
await cmd_sleep_night.finish()
|
||||
|
||||
|
||||
cmd_sleep_noon = on_command(
|
||||
"此方午安",
|
||||
rule=require_permission("oyasumi") & to_me(),
|
||||
aliases={"午安"},
|
||||
)
|
||||
|
||||
|
||||
@cmd_sleep_noon.handle()
|
||||
async def sleep_noon(event: GroupMessageEvent, bot: Bot):
|
||||
duration = random.randint(60 * 15, 60 * 30)
|
||||
await make_sleep(event, bot, duration)
|
||||
await cmd_sleep_night.finish()
|
||||
Reference in New Issue
Block a user