78 lines
2.2 KiB
Python
78 lines
2.2 KiB
Python
from app.chain import ChainBase
|
|
from app.db.site_oper import SiteOper
|
|
|
|
|
|
class SiteManageChain(ChainBase):
|
|
"""
|
|
站点远程管理处理链
|
|
"""
|
|
|
|
_sites: SiteOper = None
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self._siteoper = SiteOper()
|
|
|
|
def process(self):
|
|
"""
|
|
查询所有站点,发送消息
|
|
"""
|
|
site_list = self._siteoper.list()
|
|
if not site_list:
|
|
self.post_message(title="没有维护任何站点信息!")
|
|
title = f"共有 {len(site_list)} 个站点,回复 `/site_disable` `[id]` 禁用站点,回复 `/site_enable` `[id]` 启用站点:"
|
|
messages = []
|
|
for site in site_list:
|
|
if site.render:
|
|
render_str = "🧭"
|
|
else:
|
|
render_str = ""
|
|
if site.is_active:
|
|
messages.append(f"{site.id}. [{site.name}]({site.url}){render_str}")
|
|
else:
|
|
messages.append(f"{site.id}. {site.name} 🈲️")
|
|
# 发送列表
|
|
self.post_message(title=title, text="\n".join(messages))
|
|
|
|
def disable(self, arg_str):
|
|
"""
|
|
禁用站点
|
|
"""
|
|
if not arg_str:
|
|
return
|
|
arg_str = arg_str.strip()
|
|
if not arg_str.isdigit():
|
|
return
|
|
site_id = int(arg_str)
|
|
site = self._siteoper.get(site_id)
|
|
if not site:
|
|
self.post_message(title=f"站点编号 {site_id} 不存在!")
|
|
return
|
|
# 禁用站点
|
|
self._siteoper.update(site_id, {
|
|
"is_active": False
|
|
})
|
|
# 重新发送消息
|
|
self.process()
|
|
|
|
def enable(self, arg_str):
|
|
"""
|
|
启用站点
|
|
"""
|
|
if not arg_str:
|
|
return
|
|
arg_str = arg_str.strip()
|
|
if not arg_str.isdigit():
|
|
return
|
|
site_id = int(arg_str)
|
|
site = self._siteoper.get(site_id)
|
|
if not site:
|
|
self.post_message(title=f"站点编号 {site_id} 不存在!")
|
|
return
|
|
# 禁用站点
|
|
self._siteoper.update(site_id, {
|
|
"is_active": True
|
|
})
|
|
# 重新发送消息
|
|
self.process()
|