Skip to content

Commit 194ab78

Browse files
committed
✨ config cache_message
1 parent 0f7dea4 commit 194ab78

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed

src/nonebot_plugin_alconna/builtins/extensions/discord.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
ApplicationCommandInteractionDataOption,
3636
)
3737

38+
from nonebot_plugin_alconna.extension import cache_msg
3839
from nonebot_plugin_alconna.matcher import _M, AlconnaMatcher
3940
from nonebot_plugin_alconna import At, Image, Extension, UniMessage, log
4041

@@ -342,7 +343,7 @@ def validate(self, bot, event: Event) -> bool:
342343
async def message_provider(self, event: Event, state: T_State, bot, use_origin: bool = False):
343344
if not isinstance(event, ApplicationCommandInteractionEvent):
344345
return None
345-
if event.id in self.cache:
346+
if cache_msg and event.id in self.cache:
346347
return self.cache[event.id]
347348
data = event.data
348349
cmd = f"/{data.name}"

src/nonebot_plugin_alconna/builtins/extensions/onebot11.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from nonebot.internal.adapter import Bot, Event
77
from nonebot.adapters.onebot.v11 import Event as OneBot11Event
88

9+
from nonebot_plugin_alconna.extension import cache_msg
910
from nonebot_plugin_alconna import Extension, UniMessage, get_message_id
1011

1112

@@ -42,9 +43,9 @@ async def message_provider(
4243
) -> UniMessage | None:
4344
if event.get_type() == "message_sent" and hasattr(event, "message"):
4445
msg_id = get_message_id(event, bot)
45-
if use_origin and (uni_msg := self.cache.get(msg_id)) is not None:
46+
if use_origin and cache_msg and (uni_msg := self.cache.get(msg_id)) is not None:
4647
return uni_msg
47-
if (uni_msg := self.cache.get(msg_id)) is not None:
48+
if cache_msg and (uni_msg := self.cache.get(msg_id)) is not None:
4849
return uni_msg
4950
msg = Message._validate(event.message) # type: ignore
5051
uni_msg = UniMessage.generate_without_reply(message=msg, bot=bot)

src/nonebot_plugin_alconna/builtins/extensions/reply.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from arclet.alconna import Alconna
55
from nonebot.internal.adapter import Bot, Event
66

7+
from nonebot_plugin_alconna.extension import cache_msg
78
from nonebot_plugin_alconna import Reply, Extension, UniMessage
89
from nonebot_plugin_alconna.uniseg import reply_fetch, get_message_id
910

@@ -94,7 +95,7 @@ async def message_provider(self, event, state, bot, use_origin: bool = False):
9495
except (NotImplementedError, ValueError):
9596
return None
9697
msg_id = get_message_id(event, bot)
97-
if msg_id in self.cache:
98+
if cache_msg and msg_id in self.cache:
9899
return self.cache[msg_id]
99100
uni_msg = UniMessage.generate_sync(message=msg, bot=bot)
100101
self.cache[msg_id] = uni_msg

src/nonebot_plugin_alconna/config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,6 @@ class Config(BaseModel):
4646

4747
alconna_response_self: bool = False
4848
"""是否响应自身发送的消息"""
49+
50+
alconna_cache_message: bool = True
51+
"""是否缓存已解析的消息"""

src/nonebot_plugin_alconna/extension.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111

1212
from tarina import LRU, lang
1313
from nonebot.typing import T_State
14+
from nonebot import get_plugin_config
1415
from arclet.alconna import Alconna, Arparma
1516
from nonebot.compat import PydanticUndefined
1617
from nonebot.adapters import Bot, Event, Message
1718

19+
from .config import Config
1820
from .uniseg import UniMessage, get_message_id
1921

2022
OutputType = Literal["help", "shortcut", "completion", "error"]
@@ -34,6 +36,12 @@ class Interface(Generic[TE]):
3436
default: Any
3537

3638

39+
try:
40+
cache_msg = get_plugin_config(Config).alconna_cache_message
41+
except ValueError:
42+
cache_msg = True
43+
44+
3745
class Extension(metaclass=ABCMeta):
3846
_overrides: dict[str, bool]
3947

@@ -148,9 +156,9 @@ async def message_provider(
148156
raise exc
149157
if event.get_type() == "message":
150158
msg_id = get_message_id(event, bot)
151-
if use_origin and (uni_msg := unimsg_origin_cache.get(msg_id)) is not None:
159+
if use_origin and cache_msg and (uni_msg := unimsg_origin_cache.get(msg_id)) is not None:
152160
return uni_msg
153-
if (uni_msg := unimsg_cache.get(msg_id)) is not None:
161+
if cache_msg and (uni_msg := unimsg_cache.get(msg_id)) is not None:
154162
return uni_msg
155163
msg = event.get_message()
156164
uni_msg = UniMessage.generate_without_reply(message=msg, bot=bot)

0 commit comments

Comments
 (0)