⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qqclient.java

📁 MilyQQ是一个使用控制台的QQ客户端,基于LumaQQ的核心JQL包开发,只有一个可执行的jar包(MilyQQ.jar),携带方便,由于是Java程序,因此理论上应该可以运行于所有平台,不过基于
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    public void removeFriendFromList(int qqNum) {
        if(user.isLoggedIn()) {
            FriendDataOpPacket packet = new FriendDataOpPacket(user);
            packet.setSubCommand(QQ.QQ_SUB_CMD_REMOVE_FRIEND_FROM_LIST);
            packet.setQQ(qqNum);
    		gate.send(MAIN_PORT, packet, true);
        }
    }

    /**
     * 添加好友到服务器端的好友列表中
     *
     * @param group
     * 		好友的组号,我的好友组是0,然后是1,2,...
     * @param qqNum
     * 		要添加的好友QQ号
     */
    public void addFriendToList(int group, int qqNum) {
        if(user.isLoggedIn()) {
            UploadGroupFriendPacket packet = new UploadGroupFriendPacket(user);
            packet.addFriend(group, qqNum);
    		gate.send(MAIN_PORT, packet, false);
        }
    }

    /**
     * 如果要加的人需要认证,用这个方法发送验证请求
     * @param qqNum 要加的人的QQ号
     * @param message 附加的请求消息内容
     * @return
     * 		包序号
     */
    public char sendAddFriendAuth(int qqNum, String message) {
    	if(user.isLoggedIn()) {
    		AuthorizePacket packet = new AuthorizePacket(user);
	        packet.setTo(qqNum);
	        packet.setMessage(message);
    		gate.send(MAIN_PORT, packet, true);
	        return packet.getSequence();
    	}
    	return 0;
    }

    /**
     * 探测对方是否隐身,如来神掌,万无一失
     */
    public void detectHidden(int receiver) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_TYPE_UDP_REQUEST);
            packet.setReceiver(receiver);
            packet.setTransferType(QQ.QQ_TRANSFER_FACE);
            packet.setFileName("");
            packet.setFileSize(0);
            packet.setFakeIp(true);
    		gate.send(MAIN_PORT, packet, true);
        }
    }

    /**
     * 发送传送文件请求包,我们把包序号用作会话序号返回
     * @param filePath 文件名,不包含路径
     * @param fileSize 文件大小
     * @param directPort 直接端口
     * @param udp true表示UDP方式
     * @return 文件传输会话序号
     */
    public char requestSendFile(int receiver, String filePath, int fileSize, int directPort, boolean udp) {
    	if(user.isLoggedIn()) {
    		SendIMPacket packet = new SendIMPacket(user);
    		packet.setMessageType(udp ? QQ.QQ_IM_TYPE_UDP_REQUEST : QQ.QQ_IM_TYPE_TCP_REQUEST);
    		packet.setReceiver(receiver);
    		packet.setFileName(filePath);
    		packet.setFileSize(fileSize);
    		packet.setDirectPort(directPort);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	} else
    	    return 0;
    }

    /**
     * 取消发送文件
     * @param receiver
     * @param sequence
     */
    public void cancelSendFile(int receiver, char sequence) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_TYPE_REQUEST_CANCELED);
            packet.setReceiver(receiver);
            packet.setSessionId(sequence);
    		gate.send(MAIN_PORT, packet, true);
        }
    }

    /**
     * 发送同意接收文件包
     * @param receiver 接收者
     * @param directPort 我的直接端口
     * @param sequence 会话序号
     * @param udp true表示UDP方式
     */
    public void acceptSendFile(int receiver, int directPort, char sequence, boolean udp) {
    	if(user.isLoggedIn()) {
    		SendIMPacket packet = new SendIMPacket(user);
    		packet.setMessageType(udp ? QQ.QQ_IM_TYPE_ACCEPT_UDP_REQUEST : QQ.QQ_IM_TYPE_ACCEPT_TCP_REQUEST);
    		packet.setReceiver(receiver);
    		packet.setDirectPort(directPort);
    		packet.setSessionId(sequence);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 发送拒绝接收文件包
     * @param receiver 接收者
     * @param sequence 会话序号
     * @param udp true表示是UDP请求,false表示TCP请求
     */
    public void rejectSendFile(int receiver, char sequence, boolean udp) {
    	if(user.isLoggedIn()) {
    		SendIMPacket packet = new SendIMPacket(user);
    		packet.setMessageType(udp ? QQ.QQ_IM_TYPE_REJECT_UDP_REQUEST : QQ.QQ_IM_TYPE_REJECT_TCP_REQUEST);
    		packet.setReceiver(receiver);
    		packet.setSessionId(sequence);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 发送通知端口信息包
     * @param receiver
     * @param directPort
     * @param localIp
     * @param localPort
     * @param sequence
     */
    public void notifyFilePort(int receiver, int directPort, byte[] localIp, int localPort, char sequence) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_TYPE_NOTIFY_IP);
            packet.setReceiver(receiver);
            packet.setSessionId(sequence);
            packet.setDirectPort(directPort);
            packet.setLocalIp(localIp);
            packet.setLocalPort(localPort);
    		gate.send(MAIN_PORT, packet, true);
        }
    }

    /**
     * 请求对方连接我
     * @param receiver
     * @param directPort
     * @param sequence
     */
    public void pleaseConnectMe(int receiver, int directPort, char sequence) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_TYPE_ARE_YOU_BEHIND_FIREWALL);
            packet.setReceiver(receiver);
            packet.setSessionId(sequence);
            packet.setDirectPort(directPort);
    		gate.send(MAIN_PORT, packet, true);
        }
    }

    /**
     * 如果我要拒绝一个人加我为好友的请求,用这个方法发送拒绝消息
     * @param qqNum 请求加我的人的QQ号
     * @param message 附加消息
     */
    public void rejectAddMe(int qqNum, String message) {
    	if(user.isLoggedIn()) {
	        AddFriendAuthPacket packet = new AddFriendAuthPacket(user);
	        packet.setTo(qqNum);
	        packet.setMessage(message);
	        packet.setAction(QQ.QQ_MY_AUTH_REJECT);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 如果我要同意一个人加我为好友的请求,用这个方法发送同意消息
     * @param qqNum 请求加我的人的QQ号
     */
    public void approveAddMe(int qqNum) {
    	if(user.isLoggedIn()) {
	        AddFriendAuthPacket packet = new AddFriendAuthPacket(user);
	        packet.setTo(qqNum);
	        packet.setAction(QQ.QQ_MY_AUTH_APPROVE);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 下载好友分组
     *
     * @param beginFrom
     * 		起始好友号
     */
    public void downloadFriend(int beginFrom) {
    	if(user.isLoggedIn()) {
    		DownloadGroupFriendPacket packet = new DownloadGroupFriendPacket(user);
    		packet.setBeginFrom(beginFrom);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 上传分组名称
     *
     * @param groups
     */
    public void uploadGroup(List<String> groups) {
    	if(user.isLoggedIn()) {
    		GroupDataOpPacket packet = new GroupDataOpPacket(user);
    		packet.setType(QQ.QQ_SUB_CMD_UPLOAD_GROUP_NAME);
    		packet.setGroups(groups);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 下载分组名称
     */
    public void downloadGroup() {
    	if(user.isLoggedIn()) {
    		GroupDataOpPacket packet = new GroupDataOpPacket(user);
    		packet.setType(QQ.QQ_SUB_CMD_DOWNLOAD_GROUP_NAME);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 创建一个临时群
     *
     * @param name
     * 		群名称
     * @param type
     * 		临时群类型
     * @param parentClusterId
     * 		父群内部ID
     * @param members
     * 		成员QQ号数组
     * @return
     * 		包序号
     */
/*    public char createTemporaryCluster(String name, byte type, int parentClusterId, List<Integer> members) {
    	if(user.isLoggedIn()) {
    		ClusterCreateTempPacket packet = new ClusterCreateTempPacket(user);
    		packet.setType(type);
    		packet.setName(name);
    		packet.setMembers(members);
    		packet.setParentClusterId(parentClusterId);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	}
    	return 0;
    }
*/
    /**
     * 创建一个固定群
     * @param name 群名称
     * @param notice 群声明
     * @param description 群描述
     * @param members 群成员
     * @param authType 群认证类型
     * @param category 群的分类
     */
/*    public void createPermanentCluster(String name, String notice, String description, List<Integer> members, int category, byte authType) {
    	if(user.isLoggedIn()) {
    		ClusterCreatePacket packet = new ClusterCreatePacket(user);
    		packet.setType(QQ.QQ_CLUSTER_TYPE_PERMANENT);
    		packet.setAuthType(authType);
    		packet.setCategory(category);
    		packet.setName(name);
    		packet.setNotice(notice);
    		packet.setDescription(description);
    		packet.setMembers(members);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }
 */
    /**
     * 请求群的信息
     *
     * @param clusterId
     * 		群内部ID
     */
    public void getClusterInfo(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterGetInfoPacket packet = new ClusterGetInfoPacket(user);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 设置群成员角色
     *
     * @param clusterId
     * 		群内部id
     * @param qq
     * 		需要设置的成员
     * @param opCode
     * 		操作码
     */
/*    public void setMemberRole(int clusterId, int qq, byte opCode) {
    	if(user.isLoggedIn()) {
    		ClusterSetRolePacket packet = new ClusterSetRolePacket(user);
    		packet.setClusterId(clusterId);
    		packet.setQq(qq);
    		packet.setOpCode(opCode);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }
*/
    /**
     * 转让身份
     *
     * @param clusterId
     * 		群内部id
     * @param qq
     * 		转让到的qq号
     */
/*    public void transferRole(int clusterId, int qq) {
    	if(user.isLoggedIn()) {
    		ClusterTransferRolePacket packet = new ClusterTransferRolePacket(user);
    		packet.setClusterId(clusterId);
    		packet.setQq(qq);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }
*/
    /**
     * 批量得到群名片
     *
     * @param clusterId
     * @param start
     */
    public void getCardBatch(int clusterId, int start) {
    	if(user.isLoggedIn()) {
    		ClusterGetCardBatchPacket packet = new ClusterGetCardBatchPacket(user);
    		packet.setClusterId(clusterId);
    		packet.setStart(start);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 得到某个成员的群名片
     *
     * @param clusterId
     * @param qq
     */
    public void getCard(int clusterId, int qq) {
    	if(user.isLoggedIn()) {
    		ClusterGetCardPacket packet = new ClusterGetCardPacket(user);
    		packet.setClusterId(clusterId);
    		packet.setQQ(qq);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 修改群名片
     *
     * @param clusterId
     * @param card
     */
    public void modifyCard(int clusterId, Card card) {
    	if(user.isLoggedIn()) {
    		ClusterModifyCardPacket packet = new ClusterModifyCardPacket(user);
    		packet.setClusterId(clusterId);
    		packet.setCard(card);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 更新组织架构
     *
     * @param clusterId
     * 		群内部ID
     */
/*    public void updateOrganization(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterUpdateOrganizationPacket packet = new ClusterUpdateOrganizationPacket(user);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }
*/
    /**
     * 提交组织架构
     *
     * @param clusterId
     * @param organizations
     */
/*    public char commitOrganization(int clusterId, List<QQOrganization> organizations) {
    	if(user.isLoggedIn()) {
    		ClusterCommitOrganizationPacket packet = new ClusterCommitOrganizationPacket(user);
    		packet.setClusterId(clusterId);
    		packet.setOrganizations(organizations);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	}
    	return 0;
    }
 */
    /**
     * 提交成员组织
     *
     * @param clusterId
     * @param members
     * @return
     * 		包序号
     */
/*    public char commitMemberOrganization(int clusterId, List<Member> members) {
    	if(user.isLoggedIn()) {
    		ClusterCommitMemberOrganizationPacket packet = new ClusterCommitMemberOrganizationPacket(user);
    		packet.setClusterId(clusterId);
    		packet.setMembers(members);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	}
    	return 0;
    }
*/
    /**
     * 请求临时群信息
     *
     * @param type

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -