Skip to content
10 changes: 6 additions & 4 deletions astrbot/builtin_stars/astrbot/long_term_memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@


class LongTermMemory:
def __init__(self, acm: AstrBotConfigManager, context: star.Context):
def __init__(self, acm: AstrBotConfigManager, context: star.Context) -> None:
self.acm = acm
self.context = context
self.session_chats = defaultdict(list)
Expand Down Expand Up @@ -111,7 +111,7 @@ async def need_active_reply(self, event: AstrMessageEvent) -> bool:

return False

async def handle_message(self, event: AstrMessageEvent):
async def handle_message(self, event: AstrMessageEvent) -> None:
"""仅支持群聊"""
if event.get_message_type() == MessageType.GROUP_MESSAGE:
datetime_str = datetime.datetime.now().strftime("%H:%M:%S")
Expand Down Expand Up @@ -148,7 +148,7 @@ async def handle_message(self, event: AstrMessageEvent):
if len(self.session_chats[event.unified_msg_origin]) > cfg["max_cnt"]:
self.session_chats[event.unified_msg_origin].pop(0)

async def on_req_llm(self, event: AstrMessageEvent, req: ProviderRequest):
async def on_req_llm(self, event: AstrMessageEvent, req: ProviderRequest) -> None:
"""当触发 LLM 请求前,调用此方法修改 req"""
if event.unified_msg_origin not in self.session_chats:
return
Expand All @@ -171,7 +171,9 @@ async def on_req_llm(self, event: AstrMessageEvent, req: ProviderRequest):
)
req.system_prompt += chats_str

async def after_req_llm(self, event: AstrMessageEvent, llm_resp: LLMResponse):
async def after_req_llm(
self, event: AstrMessageEvent, llm_resp: LLMResponse
) -> None:
if event.unified_msg_origin not in self.session_chats:
return

Expand Down
10 changes: 7 additions & 3 deletions astrbot/builtin_stars/astrbot/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,9 @@ async def on_message(self, event: AstrMessageEvent):
logger.error(f"主动回复失败: {e}")

@filter.on_llm_request()
async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest):
async def decorate_llm_req(
self, event: AstrMessageEvent, req: ProviderRequest
) -> None:
"""在请求 LLM 前注入人格信息、Identifier、时间、回复内容等 System Prompt"""
if self.ltm and self.ltm_enabled(event):
try:
Expand All @@ -94,7 +96,9 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest):
logger.error(f"ltm: {e}")

@filter.on_llm_response()
async def record_llm_resp_to_ltm(self, event: AstrMessageEvent, resp: LLMResponse):
async def record_llm_resp_to_ltm(
self, event: AstrMessageEvent, resp: LLMResponse
) -> None:
"""在 LLM 响应后记录对话"""
if self.ltm and self.ltm_enabled(event):
try:
Expand All @@ -103,7 +107,7 @@ async def record_llm_resp_to_ltm(self, event: AstrMessageEvent, resp: LLMRespons
logger.error(f"ltm: {e}")

@filter.after_message_sent()
async def after_message_sent(self, event: AstrMessageEvent):
async def after_message_sent(self, event: AstrMessageEvent) -> None:
"""消息发送后处理"""
if self.ltm and self.ltm_enabled(event):
try:
Expand Down
12 changes: 6 additions & 6 deletions astrbot/builtin_stars/builtin_commands/commands/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@


class AdminCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def op(self, event: AstrMessageEvent, admin_id: str = ""):
async def op(self, event: AstrMessageEvent, admin_id: str = "") -> None:
"""授权管理员。op <admin_id>"""
if not admin_id:
event.set_result(
Expand All @@ -21,7 +21,7 @@ async def op(self, event: AstrMessageEvent, admin_id: str = ""):
self.context.get_config().save_config()
event.set_result(MessageEventResult().message("授权成功。"))

async def deop(self, event: AstrMessageEvent, admin_id: str = ""):
async def deop(self, event: AstrMessageEvent, admin_id: str = "") -> None:
"""取消授权管理员。deop <admin_id>"""
if not admin_id:
event.set_result(
Expand All @@ -39,7 +39,7 @@ async def deop(self, event: AstrMessageEvent, admin_id: str = ""):
MessageEventResult().message("此用户 ID 不在管理员名单内。"),
)

async def wl(self, event: AstrMessageEvent, sid: str = ""):
async def wl(self, event: AstrMessageEvent, sid: str = "") -> None:
"""添加白名单。wl <sid>"""
if not sid:
event.set_result(
Expand All @@ -53,7 +53,7 @@ async def wl(self, event: AstrMessageEvent, sid: str = ""):
cfg.save_config()
event.set_result(MessageEventResult().message("添加白名单成功。"))

async def dwl(self, event: AstrMessageEvent, sid: str = ""):
async def dwl(self, event: AstrMessageEvent, sid: str = "") -> None:
"""删除白名单。dwl <sid>"""
if not sid:
event.set_result(
Expand All @@ -70,7 +70,7 @@ async def dwl(self, event: AstrMessageEvent, sid: str = ""):
except ValueError:
event.set_result(MessageEventResult().message("此 SID 不在白名单内。"))

async def update_dashboard(self, event: AstrMessageEvent):
async def update_dashboard(self, event: AstrMessageEvent) -> None:
"""更新管理面板"""
await event.send(MessageChain().message("正在尝试更新管理面板..."))
await download_dashboard(version=f"v{VERSION}", latest=False)
Expand Down
6 changes: 3 additions & 3 deletions astrbot/builtin_stars/builtin_commands/commands/alter_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@


class AlterCmdCommands(CommandParserMixin):
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def update_reset_permission(self, scene_key: str, perm_type: str):
async def update_reset_permission(self, scene_key: str, perm_type: str) -> None:
"""更新reset命令在特定场景下的权限设置"""
from astrbot.api import sp

Expand All @@ -26,7 +26,7 @@ async def update_reset_permission(self, scene_key: str, perm_type: str):
alter_cmd_cfg["astrbot"] = plugin_cfg
await sp.global_put("alter_cmd", alter_cmd_cfg)

async def alter_cmd(self, event: AstrMessageEvent):
async def alter_cmd(self, event: AstrMessageEvent) -> None:
token = self.parse_commands(event.message_str)
if token.len < 3:
await event.send(
Expand Down
18 changes: 9 additions & 9 deletions astrbot/builtin_stars/builtin_commands/commands/conversation.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


class ConversationCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def _get_current_persona_id(self, session_id):
Expand All @@ -33,7 +33,7 @@ async def _get_current_persona_id(self, session_id):
return None
return conv.persona_id

async def reset(self, message: AstrMessageEvent):
async def reset(self, message: AstrMessageEvent) -> None:
"""重置 LLM 会话"""
umo = message.unified_msg_origin
cfg = self.context.get_config(umo=message.unified_msg_origin)
Expand Down Expand Up @@ -98,7 +98,7 @@ async def reset(self, message: AstrMessageEvent):

message.set_result(MessageEventResult().message(ret))

async def his(self, message: AstrMessageEvent, page: int = 1):
async def his(self, message: AstrMessageEvent, page: int = 1) -> None:
"""查看对话记录"""
if not self.context.get_using_provider(message.unified_msg_origin):
message.set_result(
Expand Down Expand Up @@ -141,7 +141,7 @@ async def his(self, message: AstrMessageEvent, page: int = 1):

message.set_result(MessageEventResult().message(ret).use_t2i(False))

async def convs(self, message: AstrMessageEvent, page: int = 1):
async def convs(self, message: AstrMessageEvent, page: int = 1) -> None:
"""查看对话列表"""
cfg = self.context.get_config(umo=message.unified_msg_origin)
agent_runner_type = cfg["provider_settings"]["agent_runner_type"]
Expand Down Expand Up @@ -216,7 +216,7 @@ async def convs(self, message: AstrMessageEvent, page: int = 1):
message.set_result(MessageEventResult().message(ret).use_t2i(False))
return

async def new_conv(self, message: AstrMessageEvent):
async def new_conv(self, message: AstrMessageEvent) -> None:
"""创建新对话"""
cfg = self.context.get_config(umo=message.unified_msg_origin)
agent_runner_type = cfg["provider_settings"]["agent_runner_type"]
Expand All @@ -242,7 +242,7 @@ async def new_conv(self, message: AstrMessageEvent):
MessageEventResult().message(f"切换到新对话: 新对话({cid[:4]})。"),
)

async def groupnew_conv(self, message: AstrMessageEvent, sid: str = ""):
async def groupnew_conv(self, message: AstrMessageEvent, sid: str = "") -> None:
"""创建新群聊对话"""
if sid:
session = str(
Expand Down Expand Up @@ -273,7 +273,7 @@ async def switch_conv(
self,
message: AstrMessageEvent,
index: int | None = None,
):
) -> None:
"""通过 /ls 前面的序号切换对话"""
if not isinstance(index, int):
message.set_result(
Expand Down Expand Up @@ -308,7 +308,7 @@ async def switch_conv(
),
)

async def rename_conv(self, message: AstrMessageEvent, new_name: str = ""):
async def rename_conv(self, message: AstrMessageEvent, new_name: str = "") -> None:
"""重命名对话"""
if not new_name:
message.set_result(MessageEventResult().message("请输入新的对话名称。"))
Expand All @@ -319,7 +319,7 @@ async def rename_conv(self, message: AstrMessageEvent, new_name: str = ""):
)
message.set_result(MessageEventResult().message("重命名对话成功。"))

async def del_conv(self, message: AstrMessageEvent):
async def del_conv(self, message: AstrMessageEvent) -> None:
"""删除当前对话"""
cfg = self.context.get_config(umo=message.unified_msg_origin)
is_unique_session = cfg["platform_settings"]["unique_session"]
Expand Down
6 changes: 3 additions & 3 deletions astrbot/builtin_stars/builtin_commands/commands/help.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@


class HelpCommand:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def _query_astrbot_notice(self):
Expand All @@ -34,7 +34,7 @@ async def _build_reserved_command_lines(self) -> list[str]:
lines: list[str] = []
hidden_commands = {"set", "unset", "websearch"}

def walk(items: list[dict], indent: int = 0):
def walk(items: list[dict], indent: int = 0) -> None:
for item in items:
if not item.get("reserved") or not item.get("enabled"):
continue
Expand Down Expand Up @@ -62,7 +62,7 @@ def walk(items: list[dict], indent: int = 0):
walk(commands)
return lines

async def help(self, event: AstrMessageEvent):
async def help(self, event: AstrMessageEvent) -> None:
"""查看帮助"""
notice = ""
try:
Expand Down
4 changes: 2 additions & 2 deletions astrbot/builtin_stars/builtin_commands/commands/llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@


class LLMCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def llm(self, event: AstrMessageEvent):
async def llm(self, event: AstrMessageEvent) -> None:
"""开启/关闭 LLM"""
cfg = self.context.get_config(umo=event.unified_msg_origin)
enable = cfg["provider_settings"].get("enable", True)
Expand Down
4 changes: 2 additions & 2 deletions astrbot/builtin_stars/builtin_commands/commands/persona.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


class PersonaCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

def _build_tree_output(
Expand Down Expand Up @@ -50,7 +50,7 @@ def _build_tree_output(

return lines

async def persona(self, message: AstrMessageEvent):
async def persona(self, message: AstrMessageEvent) -> None:
l = message.message_str.split(" ") # noqa: E741
umo = message.unified_msg_origin

Expand Down
12 changes: 6 additions & 6 deletions astrbot/builtin_stars/builtin_commands/commands/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@


class PluginCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def plugin_ls(self, event: AstrMessageEvent):
async def plugin_ls(self, event: AstrMessageEvent) -> None:
"""获取已经安装的插件列表。"""
parts = ["已加载的插件:\n"]
for plugin in self.context.get_all_stars():
Expand All @@ -30,7 +30,7 @@ async def plugin_ls(self, event: AstrMessageEvent):
MessageEventResult().message(f"{plugin_list_info}").use_t2i(False),
)

async def plugin_off(self, event: AstrMessageEvent, plugin_name: str = ""):
async def plugin_off(self, event: AstrMessageEvent, plugin_name: str = "") -> None:
"""禁用插件"""
if DEMO_MODE:
event.set_result(MessageEventResult().message("演示模式下无法禁用插件。"))
Expand All @@ -43,7 +43,7 @@ async def plugin_off(self, event: AstrMessageEvent, plugin_name: str = ""):
await self.context._star_manager.turn_off_plugin(plugin_name) # type: ignore
event.set_result(MessageEventResult().message(f"插件 {plugin_name} 已禁用。"))

async def plugin_on(self, event: AstrMessageEvent, plugin_name: str = ""):
async def plugin_on(self, event: AstrMessageEvent, plugin_name: str = "") -> None:
"""启用插件"""
if DEMO_MODE:
event.set_result(MessageEventResult().message("演示模式下无法启用插件。"))
Expand All @@ -56,7 +56,7 @@ async def plugin_on(self, event: AstrMessageEvent, plugin_name: str = ""):
await self.context._star_manager.turn_on_plugin(plugin_name) # type: ignore
event.set_result(MessageEventResult().message(f"插件 {plugin_name} 已启用。"))

async def plugin_get(self, event: AstrMessageEvent, plugin_repo: str = ""):
async def plugin_get(self, event: AstrMessageEvent, plugin_repo: str = "") -> None:
"""安装插件"""
if DEMO_MODE:
event.set_result(MessageEventResult().message("演示模式下无法安装插件。"))
Expand All @@ -77,7 +77,7 @@ async def plugin_get(self, event: AstrMessageEvent, plugin_repo: str = ""):
event.set_result(MessageEventResult().message(f"安装插件失败: {e}"))
return

async def plugin_help(self, event: AstrMessageEvent, plugin_name: str = ""):
async def plugin_help(self, event: AstrMessageEvent, plugin_name: str = "") -> None:
"""获取插件帮助"""
if not plugin_name:
event.set_result(
Expand Down
10 changes: 5 additions & 5 deletions astrbot/builtin_stars/builtin_commands/commands/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@


class ProviderCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

def _log_reachability_failure(
Expand All @@ -17,7 +17,7 @@ def _log_reachability_failure(
provider_capability_type: ProviderType | None,
err_code: str,
err_reason: str,
):
) -> None:
"""记录不可达原因到日志。"""
meta = provider.meta()
logger.warning(
Expand Down Expand Up @@ -49,7 +49,7 @@ async def provider(
event: AstrMessageEvent,
idx: str | int | None = None,
idx2: int | None = None,
):
) -> None:
"""查看或者切换 LLM Provider"""
umo = event.unified_msg_origin
cfg = self.context.get_config(umo).get("provider_settings", {})
Expand Down Expand Up @@ -228,7 +228,7 @@ async def model_ls(
self,
message: AstrMessageEvent,
idx_or_name: int | str | None = None,
):
) -> None:
"""查看或者切换模型"""
prov = self.context.get_using_provider(message.unified_msg_origin)
if not prov:
Expand Down Expand Up @@ -293,7 +293,7 @@ async def model_ls(
MessageEventResult().message(f"切换模型到 {prov.get_model()}。"),
)

async def key(self, message: AstrMessageEvent, index: int | None = None):
async def key(self, message: AstrMessageEvent, index: int | None = None) -> None:
prov = self.context.get_using_provider(message.unified_msg_origin)
if not prov:
message.set_result(
Expand Down
6 changes: 3 additions & 3 deletions astrbot/builtin_stars/builtin_commands/commands/setunset.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@


class SetUnsetCommands:
def __init__(self, context: star.Context):
def __init__(self, context: star.Context) -> None:
self.context = context

async def set_variable(self, event: AstrMessageEvent, key: str, value: str):
async def set_variable(self, event: AstrMessageEvent, key: str, value: str) -> None:
"""设置会话变量"""
uid = event.unified_msg_origin
session_var = await sp.session_get(uid, "session_variables", {})
Expand All @@ -19,7 +19,7 @@ async def set_variable(self, event: AstrMessageEvent, key: str, value: str):
),
)

async def unset_variable(self, event: AstrMessageEvent, key: str):
async def unset_variable(self, event: AstrMessageEvent, key: str) -> None:
"""移除会话变量"""
uid = event.unified_msg_origin
session_var = await sp.session_get(uid, "session_variables", {})
Expand Down
Loading