完成签到功能与对应的提示功能

This commit is contained in:
2025-11-07 22:15:18 +08:00
parent 989f06f08f
commit b44871d9a9
4 changed files with 50 additions and 13 deletions

1
.gitmodules vendored
View File

@@ -1,3 +1,4 @@
[submodule "PWF"] [submodule "PWF"]
path = PWF path = PWF
url = http://www.liubai.site:3000/ninemine/PWF.git url = http://www.liubai.site:3000/ninemine/PWF.git
branch = main

View File

@@ -50,4 +50,10 @@ Yolo模式: Off
- 更改: 放弃ES, 重新转向数据库持久化 - 更改: 放弃ES, 重新转向数据库持久化
- 原因: 统一接口并实时读写 - 原因: 统一接口并实时读写
- 阻碍因素: 无 - 阻碍因素: 无
- 状态: 未确认 - 状态: 成功
[2025-11-07_22:11:00]
- 已修改: Plugins/WPSDailyAPI
- 更改: 完成签到功能与对应的提示功能
- 阻碍因素: 无
- 状态: 成功

2
PWF

Submodule PWF updated: 477fbf1876...c49f55808e

View File

@@ -3,13 +3,14 @@ from __future__ import annotations
from PWF.Convention.Runtime.Config import * from PWF.Convention.Runtime.Config import *
from PWF.Convention.Runtime.Architecture import Architecture from PWF.Convention.Runtime.Architecture import Architecture
from PWF.Convention.Runtime.GlobalConfig import ProjectConfig from PWF.Convention.Runtime.GlobalConfig import ProjectConfig
from datetime import datetime
from PWF.CoreModules.plugin_interface import DatabaseModel, get_db from PWF.CoreModules.plugin_interface import DatabaseModel, get_db
from .WPSAPI import WPSAPI from .WPSAPI import WPSAPI
config = ProjectConfig() config = ProjectConfig()
CHECKIN_POINTS = config.FindItem("checkin_points", 100)
class WPSConfigAPI(WPSAPI): class WPSConfigAPI(WPSAPI):
@override @override
@@ -203,16 +204,42 @@ class WPSDailyAPI(WPSAPI):
config.Log("Info", f"{ConsoleFrontColor.GREEN}WPSDailyAPI 插件已加载{ConsoleFrontColor.RESET}") config.Log("Info", f"{ConsoleFrontColor.GREEN}WPSDailyAPI 插件已加载{ConsoleFrontColor.RESET}")
self.register_plugin("daily") self.register_plugin("daily")
@override
def register_db_model(self) -> DatabaseModel:
return DatabaseModel(
table_name="daily_checkin",
column_defs={
"user_id": "INTEGER PRIMARY KEY",
"checkin_date": "TEXT",
}
)
def _get_today_checkin_status(self, user_id: int) -> bool: def _get_today_checkin_status(self, user_id: int) -> bool:
# TODO: 获取今日签到状态 cursor = get_db().conn.cursor()
return False cursor.execute("SELECT checkin_date FROM daily_checkin WHERE user_id = ?", (user_id,))
row = cursor.fetchone()
return row is not None and row[0] == datetime.now().strftime("%Y-%m-%d")
def _set_today_checkin_status(self, user_id: int) -> None:
cursor = get_db().conn.cursor()
cursor.execute("INSERT INTO daily_checkin (user_id, checkin_date) VALUES (?, ?)", (user_id, datetime.now().strftime("%Y-%m-%d")))
get_db().conn.commit()
async def do_callback(self, message: str, chat_id: int, user_id: int) -> Optional[str]: async def do_callback(self, message: str, chat_id: int, user_id: int) -> Optional[str]:
# 不匹配时默认返回当前的分数信息 tokens = [token.strip() for token in message.strip().split() if token.strip()]
return f'''# 积分信息 if not tokens:
- 当前分数: {Architecture.Get(WPSConfigAPI).get_user_points(chat_id, user_id)} return self._help_message(chat_id, user_id)
- 今日签到状态: {"已签到" if self._get_today_checkin_status(user_id) else "未签到"} action = tokens[0].lower()
''' if action == "checkin":
return await self._handle_checkin(chat_id, user_id)
return self._help_message()
async def _handle_checkin(self, chat_id: int, user_id: int) -> str:
wps_config_api: "WPSConfigAPI" = Architecture.Get(WPSConfigAPI)
if self._get_today_checkin_status(user_id):
return "今日已签到"
self._set_today_checkin_status(user_id)
return f"签到成功, 当前分数: {await wps_config_api.adjust_user_points(chat_id, user_id, CHECKIN_POINTS, "每日签到")}"
@override @override
async def callback(self, message: str, chat_id: int, user_id: int) -> Optional[str]: async def callback(self, message: str, chat_id: int, user_id: int) -> Optional[str]:
@@ -220,10 +247,13 @@ class WPSDailyAPI(WPSAPI):
message = await self.do_callback(message, chat_id, user_id) message = await self.do_callback(message, chat_id, user_id)
return await self.send_markdown_message(message, chat_id, user_id) return await self.send_markdown_message(message, chat_id, user_id)
def _help_message(self) -> str: def _help_message(self, chat_id: int, user_id: int) -> str:
return '''# 📅 Daily 命令帮助 wps_config_api: "WPSConfigAPI" = Architecture.Get(WPSConfigAPI)
return f'''# 📅 Daily 命令帮助
- daily checkin: 签到 - daily checkin: 签到
- daily get: 获取今日签到状态 ---
- 当前分数: {wps_config_api.get_user_points(chat_id, user_id)}
- 今日签到状态: {"已签到" if self._get_today_checkin_status(user_id) else "未签到"}
''' '''
config.SaveProperties() config.SaveProperties()