mirror of
https://github.com/Zippland/Bubbles.git
synced 2026-01-19 01:21:15 +08:00
移除古灵阁妖精馈赠相关功能,更新配置文件和命令处理逻辑,确保代码结构更加简洁,提升可维护性。
This commit is contained in:
@@ -1,102 +0,0 @@
|
||||
import random
|
||||
from typing import TYPE_CHECKING, Callable, Any
|
||||
from wcferry import WxMsg
|
||||
from function.func_duel import DuelRankSystem
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from logging import Logger
|
||||
from wcferry import Wcf
|
||||
from typing import Dict
|
||||
|
||||
class GoblinGiftManager:
|
||||
"""管理古灵阁妖精的馈赠事件"""
|
||||
|
||||
def __init__(self, config: Any, wcf: 'Wcf', log: 'Logger', send_text_msg: Callable):
|
||||
"""初始化馈赠管理器
|
||||
|
||||
Args:
|
||||
config: 配置对象,包含GOBLIN_GIFT配置项
|
||||
wcf: WCF实例,用于获取群聊昵称等信息
|
||||
log: 日志记录器
|
||||
send_text_msg: 发送文本消息的函数
|
||||
"""
|
||||
self.config = config
|
||||
self.wcf = wcf
|
||||
self.LOG = log
|
||||
self.sendTextMsg = send_text_msg
|
||||
|
||||
def try_trigger(self, msg: WxMsg) -> None:
|
||||
"""尝试触发古灵阁妖精的馈赠事件
|
||||
|
||||
Args:
|
||||
msg: 微信消息对象
|
||||
"""
|
||||
# 检查配置是否存在
|
||||
if not hasattr(self.config, 'GOBLIN_GIFT'):
|
||||
return
|
||||
|
||||
# 检查全局开关
|
||||
if not self.config.GOBLIN_GIFT.get('enable', False):
|
||||
return
|
||||
|
||||
# 检查群聊白名单
|
||||
allowed_groups = self.config.GOBLIN_GIFT.get('allowed_groups', [])
|
||||
if not allowed_groups or msg.roomid not in allowed_groups:
|
||||
return
|
||||
|
||||
# 只在群聊中才触发
|
||||
if not msg.from_group():
|
||||
return
|
||||
|
||||
# 获取触发概率,默认1%
|
||||
probability = self.config.GOBLIN_GIFT.get('probability', 0.01)
|
||||
|
||||
# 按概率触发
|
||||
if random.random() < probability:
|
||||
try:
|
||||
# 获取玩家昵称
|
||||
player_name = self.wcf.get_alias_in_chatroom(msg.sender, msg.roomid)
|
||||
if not player_name:
|
||||
player_name = msg.sender # 如果获取不到昵称,用wxid代替
|
||||
|
||||
# 初始化对应群聊的积分系统
|
||||
rank_system = DuelRankSystem(group_id=msg.roomid)
|
||||
|
||||
# 获取配置的积分范围,默认10-100
|
||||
min_points = self.config.GOBLIN_GIFT.get('min_points', 10)
|
||||
max_points = self.config.GOBLIN_GIFT.get('max_points', 100)
|
||||
|
||||
# 随机增加积分
|
||||
points_added = random.randint(min_points, max_points)
|
||||
|
||||
# 更新玩家数据
|
||||
player_data = rank_system.get_player_data(player_name)
|
||||
player_data['score'] += points_added
|
||||
|
||||
# 保存数据
|
||||
rank_system._save_ranks()
|
||||
|
||||
# 准备随机馈赠消息
|
||||
gift_sources = [
|
||||
f"✨ 一只迷路的家养小精灵往 {player_name} 口袋里塞了什么东西!",
|
||||
f"💰 古灵阁的妖精似乎格外青睐 {player_name},留下了一袋金加隆(折合积分)!",
|
||||
f"🦉 一只送信的猫头鹰丢错了包裹,{player_name} 意外发现了一笔“意外之财”!",
|
||||
f"🍀 {player_name} 踩到了一株幸运四叶草,好运带来了额外的积分!",
|
||||
f"🍄 在禁林的边缘,{player_name} 发现了一簇闪闪发光的魔法蘑菇!",
|
||||
f"❓ {player_name} 捡到了一个有求必应屋掉出来的神秘物品!",
|
||||
f"🔮 временами удача улыбается {player_name}!", # 偶尔来点不一样的语言增加神秘感
|
||||
f"🎉 费尔奇打瞌睡时掉了一小袋没收来的积分,刚好被 {player_name} 捡到!",
|
||||
f"📜 一张古老的藏宝图碎片指引 {player_name} 找到了一些失落的积分!",
|
||||
f"🧙♂️ 邓布利多教授对 {player_name} 的行为表示赞赏,特批“为学院加分”!",
|
||||
f"🧪 {player_name} 的魔药课作业获得了斯拉格霍恩教授的额外加分!",
|
||||
f"🌟 一颗流星划过霍格沃茨上空,{player_name} 许下的愿望成真了!"
|
||||
]
|
||||
gift_message = random.choice(gift_sources)
|
||||
final_message = f"{gift_message}\n获得积分: +{points_added} 分!"
|
||||
|
||||
# 发送馈赠通知 (@发送者)
|
||||
self.sendTextMsg(final_message, msg.roomid, msg.sender)
|
||||
self.LOG.info(f"古灵阁馈赠触发: 群 {msg.roomid}, 用户 {player_name}, 获得 {points_added} 积分")
|
||||
|
||||
except Exception as e:
|
||||
self.LOG.error(f"触发古灵阁馈赠时出错: {e}")
|
||||
@@ -102,7 +102,6 @@ def handle_insult_request(
|
||||
logger,
|
||||
bot_wxid: str,
|
||||
send_text_func: Callable[[str, str, Optional[str]], None],
|
||||
trigger_goblin_gift_func: Callable[[object], None],
|
||||
msg,
|
||||
target_mention_name: str
|
||||
) -> bool:
|
||||
@@ -114,7 +113,6 @@ def handle_insult_request(
|
||||
logger: 日志记录器。
|
||||
bot_wxid: 机器人自身的 wxid。
|
||||
send_text_func: 发送文本消息的函数 (content, receiver, at_list=None)。
|
||||
trigger_goblin_gift_func: 触发哥布林馈赠的函数。
|
||||
msg: 原始消息对象 (需要 .roomid 属性)。
|
||||
target_mention_name: 从消息中提取的被@用户的名称。
|
||||
|
||||
@@ -154,9 +152,6 @@ def handle_insult_request(
|
||||
send_text_func(insult_text, msg.roomid)
|
||||
logger.info(f"已发送骂人消息至群 {msg.roomid},目标: {actual_target_name}")
|
||||
|
||||
if trigger_goblin_gift_func:
|
||||
trigger_goblin_gift_func(msg)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"生成或发送骂人消息时出错: {e}")
|
||||
send_text_func("呃,我想骂但出错了...", msg.roomid)
|
||||
|
||||
Reference in New Issue
Block a user