7dd95d8a59
* chore: auto fix by ruff * refactor: 统一修正返回类型注解为 None/bool 以匹配实现 * refactor: 将 _get_next_page 改为异步并移除多余的请求错误抛出 * refactor: 将 get_client 的返回类型改为 object * style: 为 LarkMessageEvent 的相关方法添加返回类型注解 None --------- Co-authored-by: Soulter <37870767+Soulter@users.noreply.github.com>
78 lines
3.3 KiB
Python
78 lines
3.3 KiB
Python
from astrbot.api import star
|
|
from astrbot.api.event import AstrMessageEvent, MessageChain, MessageEventResult
|
|
from astrbot.core.config.default import VERSION
|
|
from astrbot.core.utils.io import download_dashboard
|
|
|
|
|
|
class AdminCommands:
|
|
def __init__(self, context: star.Context) -> None:
|
|
self.context = context
|
|
|
|
async def op(self, event: AstrMessageEvent, admin_id: str = "") -> None:
|
|
"""授权管理员。op <admin_id>"""
|
|
if not admin_id:
|
|
event.set_result(
|
|
MessageEventResult().message(
|
|
"使用方法: /op <id> 授权管理员;/deop <id> 取消管理员。可通过 /sid 获取 ID。",
|
|
),
|
|
)
|
|
return
|
|
self.context.get_config()["admins_id"].append(str(admin_id))
|
|
self.context.get_config().save_config()
|
|
event.set_result(MessageEventResult().message("授权成功。"))
|
|
|
|
async def deop(self, event: AstrMessageEvent, admin_id: str = "") -> None:
|
|
"""取消授权管理员。deop <admin_id>"""
|
|
if not admin_id:
|
|
event.set_result(
|
|
MessageEventResult().message(
|
|
"使用方法: /deop <id> 取消管理员。可通过 /sid 获取 ID。",
|
|
),
|
|
)
|
|
return
|
|
try:
|
|
self.context.get_config()["admins_id"].remove(str(admin_id))
|
|
self.context.get_config().save_config()
|
|
event.set_result(MessageEventResult().message("取消授权成功。"))
|
|
except ValueError:
|
|
event.set_result(
|
|
MessageEventResult().message("此用户 ID 不在管理员名单内。"),
|
|
)
|
|
|
|
async def wl(self, event: AstrMessageEvent, sid: str = "") -> None:
|
|
"""添加白名单。wl <sid>"""
|
|
if not sid:
|
|
event.set_result(
|
|
MessageEventResult().message(
|
|
"使用方法: /wl <id> 添加白名单;/dwl <id> 删除白名单。可通过 /sid 获取 ID。",
|
|
),
|
|
)
|
|
return
|
|
cfg = self.context.get_config(umo=event.unified_msg_origin)
|
|
cfg["platform_settings"]["id_whitelist"].append(str(sid))
|
|
cfg.save_config()
|
|
event.set_result(MessageEventResult().message("添加白名单成功。"))
|
|
|
|
async def dwl(self, event: AstrMessageEvent, sid: str = "") -> None:
|
|
"""删除白名单。dwl <sid>"""
|
|
if not sid:
|
|
event.set_result(
|
|
MessageEventResult().message(
|
|
"使用方法: /dwl <id> 删除白名单。可通过 /sid 获取 ID。",
|
|
),
|
|
)
|
|
return
|
|
try:
|
|
cfg = self.context.get_config(umo=event.unified_msg_origin)
|
|
cfg["platform_settings"]["id_whitelist"].remove(str(sid))
|
|
cfg.save_config()
|
|
event.set_result(MessageEventResult().message("删除白名单成功。"))
|
|
except ValueError:
|
|
event.set_result(MessageEventResult().message("此 SID 不在白名单内。"))
|
|
|
|
async def update_dashboard(self, event: AstrMessageEvent) -> None:
|
|
"""更新管理面板"""
|
|
await event.send(MessageChain().message("正在尝试更新管理面板..."))
|
|
await download_dashboard(version=f"v{VERSION}", latest=False)
|
|
await event.send(MessageChain().message("管理面板更新完成。"))
|