summaryrefslogtreecommitdiff
path: root/ATRI/plugins/hitokoto.py
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-04-24 16:20:19 +0800
committerKyomotoi <[email protected]>2021-04-24 16:20:19 +0800
commite01b1ed882a01d03b763e9b06b8b5d0608fc5f21 (patch)
treea2226a4c1c505f66d5226a1ddae02038ad92a046 /ATRI/plugins/hitokoto.py
parent0678347859176671d5ff11852f339336a595e2f5 (diff)
downloadATRI-e01b1ed882a01d03b763e9b06b8b5d0608fc5f21.tar.gz
ATRI-e01b1ed882a01d03b763e9b06b8b5d0608fc5f21.tar.bz2
ATRI-e01b1ed882a01d03b763e9b06b8b5d0608fc5f21.zip
✨🔥🎨🐛♻️📝 更新
新增:开发工具中ub paste,再也不怕长消息了。 新增:错误处理两项`ReadFileError`、`FormatError` 修复:bot退群显示被自己踢出群 删除:Service部分内容 删除:hitokoto本地库,改用请求 优化:b站小程序抓取 重构:bot管理部分,对命令进行简化
Diffstat (limited to 'ATRI/plugins/hitokoto.py')
-rw-r--r--ATRI/plugins/hitokoto.py35
1 files changed, 14 insertions, 21 deletions
diff --git a/ATRI/plugins/hitokoto.py b/ATRI/plugins/hitokoto.py
index 83469be..2b8d81f 100644
--- a/ATRI/plugins/hitokoto.py
+++ b/ATRI/plugins/hitokoto.py
@@ -1,16 +1,18 @@
-import os
import json
-from pathlib import Path
from random import choice, randint
from nonebot.adapters.cqhttp import Bot, MessageEvent
from ATRI.rule import is_in_service, to_bot
from ATRI.service import Service as sv
-from ATRI.exceptions import LoadingError
+from ATRI.exceptions import RequestTimeOut
from ATRI.utils.list import count_list, del_list_aim
+from ATRI.utils.request import get_bytes
-
-HITOKOTO_DIR = Path('.') / 'ATRI' / 'data' / 'database' / 'hitokoto'
+URL = [
+ "https://cdn.jsdelivr.net/gh/hitokoto-osc/[email protected]/sentences/a.json",
+ "https://cdn.jsdelivr.net/gh/hitokoto-osc/[email protected]/sentences/b.json",
+ "https://cdn.jsdelivr.net/gh/hitokoto-osc/[email protected]/sentences/c.json"
+]
sick_list = []
@@ -18,17 +20,14 @@ __doc__ = """
抑郁一下
权限组:所有人
用法:
- @一言
- @抑郁一下
- @网抑云
-补充:
- @:at Bot
+ @ 一言
"""
hitokoto = sv.on_command(
cmd='一言',
+ aliases={'抑郁一下', '网抑云'},
docs=__doc__,
- rule=is_in_service('一言')
+ rule=is_in_service('一言') & to_bot()
)
@hitokoto.handle()
@@ -36,10 +35,6 @@ async def _hitokoto(bot: Bot, event: MessageEvent) -> None:
global sick_list
msg = str(event.message)
user = event.get_user_id()
- hito_key = ['一言', '抑郁一下', '网抑云']
-
- if msg not in hito_key:
- return
if count_list(sick_list, user) == 3:
sick_list.append(user)
@@ -53,11 +48,9 @@ async def _hitokoto(bot: Bot, event: MessageEvent) -> None:
await hitokoto.finish(msg)
else:
sick_list.append(user)
- rd = choice(os.listdir(HITOKOTO_DIR))
- path = HITOKOTO_DIR / rd
- data = {}
+ url = choice(URL)
try:
- data = json.loads(path.read_bytes())
- except LoadingError:
- raise LoadingError("Loading error!")
+ data = json.loads(await get_bytes(url))
+ except RequestTimeOut:
+ raise RequestTimeOut("Request failed!")
await hitokoto.finish(data[randint(1, len(data) - 1)]['hitokoto'])