summaryrefslogtreecommitdiff
path: root/ATRI/plugins/hitokoto.py
diff options
context:
space:
mode:
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'])