feat: 抽卡签到功能 - 首次抽卡/三连自动签到获随机积分
- data_manager: 新增 daily_sign_in 表、has_signed_in_today、record_sign_in 方法 - utils: 新增 get_luck_description、format_sign_in_message 函数 - __init__: 新增 try_handle_daily_sign_in 签到入口 - handle_gacha/handle_triple_gacha 成功路径 finish()→send()+签到+return - 签到失败不影响抽卡主流程,UNIQUE约束防并发重复
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import os
|
||||
from typing import Union, Optional
|
||||
from typing import Optional
|
||||
from pathlib import Path
|
||||
|
||||
def get_image_path(file_path: str) -> str:
|
||||
@@ -9,4 +9,34 @@ def get_image_path(file_path: str) -> str:
|
||||
def format_user_mention(user_id: str, user_name: Optional[str] = None) -> str:
|
||||
"""格式化用户@信息"""
|
||||
display_name = user_name if user_name else f"用户{user_id}"
|
||||
return f"@{display_name}"
|
||||
return f"@{display_name}"
|
||||
|
||||
|
||||
def get_luck_description(points: int) -> tuple[str, str]:
|
||||
"""根据积分返回运气描述与emoji"""
|
||||
if points <= 10:
|
||||
return "非酋", "😭"
|
||||
if points <= 30:
|
||||
return "一般", "😐"
|
||||
if points <= 60:
|
||||
return "小欧", "😊"
|
||||
if points <= 90:
|
||||
return "大欧", "🎉"
|
||||
return "欧皇", "👑"
|
||||
|
||||
|
||||
def format_sign_in_message(
|
||||
user_id: str,
|
||||
user_name: str,
|
||||
points: int,
|
||||
balance: int,
|
||||
) -> str:
|
||||
"""格式化签到成功消息"""
|
||||
luck_text, luck_emoji = get_luck_description(points)
|
||||
mention = format_user_mention(user_id, user_name)
|
||||
return (
|
||||
f"{mention} 📅 每日签到成功!\n"
|
||||
f"🎁 获得积分:{points}\n"
|
||||
f"{luck_emoji} 今日运气:{luck_text}\n"
|
||||
f"💰 当前积分:{balance}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user