Merge branch 'master' of ssh://gitea.service.jazzwhom.top:2221/mttu-developers/konabot
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@ -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)
|
||||
|
||||
|
||||
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