package com.yaohun.mcbot;


import com.yaohun.mcbot.data.BotFriend;
import com.yaohun.mcbot.data.BotGroup;
import com.yaohun.mcbot.event.BotFriendMessageEvent;
import com.yaohun.mcbot.event.BotGroupMessageEvent;
import net.md_5.bungee.api.ProxyServer;
import org.json.JSONArray;
import org.json.JSONObject;

public class MessageForwarder {

    public static void friendsAnalyze(String json){
        try {
            JSONObject obj = new JSONObject(json);
            // 检测类型是否是 “好友消息” 若不是则拦截返回
            if (!"private".equals(obj.optString("message_type"))) return;
            // 获取机器人的QQ号
            long botId = obj.optLong("self_id");
            // 获取聊天信息内容 若没有消息则返回
            JSONArray messageArray = obj.optJSONArray("message");
            if (messageArray == null) return;
            // 将聊天信息内容 builder
            StringBuilder finalMessage = new StringBuilder();
            for (int i = 0; i < messageArray.length(); i++) {
                JSONObject segment = messageArray.getJSONObject(i);
                String type = segment.optString("type");
                if ("text".equals(type)) {
                    String text = segment.getJSONObject("data").optString("text");
                    finalMessage.append(text);
                }
                // 可以在这里加对 image、face 等其他类型的支持
            }
            String message = finalMessage.toString();
            if(message.isEmpty()) return;
            // 解析发送信息的人
            JSONObject sender = obj.optJSONObject("sender");
            if (sender == null) return;
            // 获取信息
            long senderId = sender.optLong("user_id"); // QQ号
            String nickname = sender.optString("nickname"); // QQ昵称
            BotFriendMessageEvent event = new BotFriendMessageEvent(botId,senderId,nickname,message,new BotFriend(senderId));
            ProxyServer.getInstance().getPluginManager().callEvent(event);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void groupAnalyze(String json) {
        try {
            JSONObject obj = new JSONObject(json);
            // 检测类型是否是 “群消息” 若不是则拦截返回
            if (!"group".equals(obj.optString("message_type"))) return;
            // 获取机器人的QQ号
            long botId = obj.optLong("self_id");
            long groupId = obj.optLong("group_id");
            // 获取聊天信息内容 若没有消息则返回
            JSONArray messageArray = obj.optJSONArray("message");
            if (messageArray == null) return;
            // 将聊天信息内容 builder
            StringBuilder finalMessage = new StringBuilder();
            for (int i = 0; i < messageArray.length(); i++) {
                JSONObject segment = messageArray.getJSONObject(i);
                String type = segment.optString("type");
                if ("text".equals(type)) {
                    String text = segment.getJSONObject("data").optString("text");
                    finalMessage.append(text);
                }
                // 可以在这里加对 image、face 等其他类型的支持
            }
            String message = finalMessage.toString();
            if(message.isEmpty()) return;
            // 解析发送信息的人
            JSONObject sender = obj.optJSONObject("sender");
            if (sender == null) return;
            // 获取信息
            long senderId = sender.optLong("user_id"); // QQ号
            String nickname = sender.optString("nickname"); // QQ昵称
            String card = sender.optString("card");  // 群名片
            String role = sender.optString("role"); // 群中职务
            // 优先显示群名片（如果存在），否则用昵称
            String displayName = (card != null && !card.isEmpty()) ? card : nickname;

            BotGroupMessageEvent event = new BotGroupMessageEvent(botId,groupId,senderId,displayName,message,new BotGroup(groupId));
            ProxyServer.getInstance().getPluginManager().callEvent(event);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
