feat(telegram): candidate list/delete/clear commands
私聊新增 /candidate [页码](待决策列表)、/candi_del(标题按钮逐条删除,删后原地重建键盘、可翻页连续删)、/candi_clear(全部/待决策/取消)。重构 handle_callback 为前缀分派(cdel/cpage/cclr,保留 add/ign/blk/fav);repository 加 list_pending_candidates/delete_all_candidates;LibraryService 加 pending_candidates/delete_candidate/clear_candidates 并刷看板缓存。
This commit is contained in:
1 parent
c6790f0ba1
commit
4a9c37f2f3
9 files changed
+473
-23
No files matched your search
@@ -302,6 +302,32 @@ class LibraryService:
|
||||
message=f"已拉黑 UP,并忽略该 UP 的 {rejected} 条待决策候选",
|
||||
)
|
||||
|
||||
# ------------------------------------------------------------ candidate admin
|
||||
|
||||
def pending_candidates(self) -> list[dict[str, Any]]:
|
||||
return self.repo.list_pending_candidates()
|
||||
|
||||
def delete_candidate(self, aid: int) -> dict[str, Any] | None:
|
||||
"""删除单条候选;返回被删记录(不存在则 None)。"""
|
||||
aid = int(aid)
|
||||
candidate = self.repo.get_candidate(aid)
|
||||
if candidate is None:
|
||||
return None
|
||||
self.repo.delete_candidate(aid)
|
||||
self.repo.bump_cache_version("videos")
|
||||
self._log("info", "candidate.delete", aid=aid)
|
||||
return candidate
|
||||
|
||||
def clear_candidates(self, *, pending_only: bool = False) -> int:
|
||||
"""删除候选(``pending_only=True`` 只删待决策);返回删除数。"""
|
||||
removed = self.repo.delete_all_candidates(pending_only=pending_only)
|
||||
if removed:
|
||||
self.repo.bump_cache_version("videos")
|
||||
self._log(
|
||||
"info", "candidate.clear", pending_only=pending_only, removed=removed,
|
||||
)
|
||||
return removed
|
||||
|
||||
# ------------------------------------------------------------ internals
|
||||
|
||||
def _result_from_outcome(self, outcome, *, title: str, up_name: str) -> IngestResult:
|
||||
|
||||
Reference in new issue
Block a user