Skip to content

Msg 结构

基础字段

字段类型说明
typeint消息类型
contentString消息正文
talkerString会话 ID(群/好友 wxid)
isSendint消息方向,1=自己发送,0=对方发送
msgIdlong本地消息 ID
createTimelong时间戳(毫秒)
rawContentString原始消息内容
sendTalkerString发送者 wxid
imgPathString图片本地路径
msgSvrIdlong服务端消息 ID
statusint消息状态
lvbufferbyte[]附加数据

增强字段

字段类型说明
atListList<String>艾特用户列表
isAtMeboolean是否艾特我
isAtAllboolean是否艾特全体
isAnnounceboolean是否为群公告

辅助判断方法

方法返回值说明
isGroupChat()boolean是否群聊
isChatRoom()boolean是否群聊(同前)
isPrivateChat()boolean是否单聊
isSend()boolean是否自己发送
isText()boolean是否文本消息
isImage()boolean是否图片消息
isPic()boolean是否图片(同前)
isVoice()boolean是否语音消息
isVideo()boolean是否视频消息
isEmoji()boolean是否表情消息
isGif()boolean是否 GIF 表情
isLocation()boolean是否位置消息
isFile()boolean是否文件消息
isCard()boolean是否名片/卡片消息
isSystem()boolean是否系统消息
isRevoke()boolean是否撤回消息
isTransfer()boolean是否转账
isRedPacket()boolean是否红包
isReply()boolean是否回复消息
isQuote()boolean是否引用回复(同前)
isNotify()boolean是否通知类消息
isAtMe()boolean是否被艾特
isAtAll()boolean是否艾特全体
isAnnounce()boolean是否群公告

使用示例

java
// 完整的消息处理示例
void onMsg(Object msg) {
    // 基础信息
    log("消息类型: " + msg.type);
    log("内容: " + msg.content);
    log("发送者: " + msg.talker);
    log("是否自己: " + msg.isSend());
    log("消息ID: " + msg.msgId);
    log("时间戳: " + msg.createTime);
    
    // 使用判断方法
    if (msg.isText()) {
        log("这是文本消息");
        handleText(msg);
    }
    
    if (msg.isImage()) {
        log("这是图片消息");
        log("图片路径: " + msg.imgPath);
        handleImage(msg);
    }
    
    if (msg.isVoice()) {
        log("这是语音消息");
    }
    
    if (msg.isVideo()) {
        log("这是视频消息");
    }
    
    if (msg.isEmoji()) {
        log("这是表情消息");
    }
    
    if (msg.isFile()) {
        log("这是文件消息");
    }
    
    if (msg.isLocation()) {
        log("这是位置消息");
    }
    
    // 群聊和@判断
    if (msg.isGroupChat() || msg.isChatRoom()) {
        log("来自群聊");
        if (msg.isAtMe()) {
            log("有人@我!");
            sendText(msg.talker, "收到@,请吩咐!");
        }
        if (msg.isAtAll()) {
            log("有人@全体");
        }
        if (msg.isAnnounce()) {
            log("这是群公告");
        }
    }
    
    if (msg.isPrivateChat()) {
        log("来自私聊");
    }
    
    // 其他类型
    if (msg.isSystem()) {
        log("这是系统消息");
    }
    
    if (msg.isRevoke()) {
        log("这是撤回消息");
    }
    
    if (msg.isTransfer()) {
        log("这是转账消息");
    }
    
    if (msg.isRedPacket()) {
        log("这是红包消息");
    }
    
    if (msg.isReply() || msg.isQuote()) {
        log("这是回复/引用消息");
    }
    
    if (msg.isNotify()) {
        log("这是通知类消息");
    }
}

// 处理文本消息
void handleText(Object msg) {
    String content = msg.content;
    String talker = msg.talker;
    
    // 简单的关键词回复
    if (content.equals("你好")) {
        sendText(talker, "你好!");
    }
}

// 处理图片消息
void handleImage(Object msg) {
    // 可以获取图片路径做进一步处理
    log("图片已保存到: " + msg.imgPath);
}

FkWeChat 插件开发文档