Skip to content

Commit 4e09c70

Browse files
更新设计
1 parent bafc70b commit 4e09c70

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

nonebot_plugin_omikuji/llm_tool.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import random
21
import typing
32

43
from nonebot import get_bot, logger
@@ -12,6 +11,8 @@
1211
ToolFunctionSchema,
1312
)
1413

14+
from nonebot_plugin_omikuji.cache import cache_omikuji, get_cached_omikuji
15+
1516
from .config import get_config
1617
from .models import OMIKUJI_THEMES, OmikujiData
1718
from .utils import generate_omikuji
@@ -40,17 +41,16 @@ def format_omikuji(data: OmikujiData, user_name: str | None = ""):
4041
async def omikuji(ctx: ToolContext):
4142
logger.info("获取御神签")
4243
nb_event: MessageEvent = typing.cast(MessageEvent, ctx.event.get_nonebot_event())
44+
is_group = hasattr(nb_event, "group_id")
4345
bot = get_bot(str(ctx.event._nbevent.self_id))
44-
await bot.send(
45-
ctx.event._nbevent,
46-
"轻轻摇动古老的签筒,竹签哗啦作响... 心中默念所求之事... 一支签缓缓落下。",
47-
)
48-
level = random.choice(LEVEL)
49-
data = await generate_omikuji(
50-
ctx.data["theme"],
51-
level=level,
52-
is_group=hasattr(nb_event, "group_id"),
53-
)
46+
47+
if (data := await get_cached_omikuji(nb_event)) is None:
48+
await bot.send(
49+
ctx.event._nbevent,
50+
"轻轻摇动古老的签筒,竹签哗啦作响... 心中默念所求之事... 一支签缓缓落下。",
51+
)
52+
data = await generate_omikuji(ctx.data["theme"], is_group)
53+
await cache_omikuji(nb_event, data)
5454
if get_config().omikuji_send_by_chat:
5555
return data.model_dump_json()
5656
msg = format_omikuji(data)

nonebot_plugin_omikuji/models.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
from pydantic import BaseModel, Field
1313

1414
LEVEL = ["大吉", "吉", "中吉", "小吉", "末吉", "凶", "大凶"]
15-
# 定义权重,让"吉"类签出现概率更高
16-
LEVEL_WEIGHTS = [10, 30, 20, 15, 10, 5, 2]
1715
OMIKUJI_THEMES = [
1816
"综合运势", # 默认选项
1917
"恋爱姻缘", # 情感
@@ -41,7 +39,7 @@
4139

4240

4341
def random_level() -> str:
44-
return random.choices(LEVEL, weights=LEVEL_WEIGHTS)[0]
42+
return random.choice(LEVEL)
4543

4644

4745
class OmikujiSections(BaseModel):
@@ -76,7 +74,7 @@ class OmikujiData(BaseModel):
7674
),
7775
"sign_number": FunctionPropertySchema(
7876
type="string",
79-
description="御神签编号(中文大写数字)",
77+
description="御神签编号(随机中文大写数字)",
8078
),
8179
"divine_title": FunctionPropertySchema(
8280
type="string",

nonebot_plugin_omikuji/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ async def generate_omikuji(
8080
)
8181
assert data.tool_calls
8282
args = json.loads(data.tool_calls[0].function.arguments)
83+
args["level"] = level
84+
args["theme"] = theme
8385
model = OmikujiData.model_validate(args)
8486
if level:
8587
model.level = level

0 commit comments

Comments
 (0)