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

📄 qqclient.java

📁 MilyQQ是一个使用控制台的QQ客户端,基于LumaQQ的核心JQL包开发,只有一个可执行的jar包(MilyQQ.jar),携带方便,由于是Java程序,因此理论上应该可以运行于所有平台,不过基于
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    	if(user.isLoggedIn()) {
    		ClusterExitTempPacket packet = new ClusterExitTempPacket(user);
    		packet.setType(type);
    		packet.setParentClusterId(parentClusterId);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }
*/
    /**
     * 根据外部ID搜索群
     *
     * @param externalId 群的外部ID
     * @return
     * 		包序号
     */
    public char searchClusterById(int externalId) {
    	if(user.isLoggedIn()) {
    		ClusterSearchPacket packet = new ClusterSearchPacket(user);
    		packet.setExternalId(externalId);
    		packet.setSearchType(QQ.QQ_CLUSTER_SEARCH_BY_ID);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	} else
    	    return 0;
    }

    /**
     * 搜索示范群
     *
     * @return
     * 		包序号
     */
    public char searchDemoCluster() {
    	if(user.isLoggedIn()) {
    		ClusterSearchPacket packet = new ClusterSearchPacket(user);
    		packet.setSearchType(QQ.QQ_CLUSTER_SEARCH_DEMO);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	} else
    	    return 0;
    }

    /**
     * 加入群
     * @param clusterId
     * @return
     * 		包序号
     */
    public char joinCluster(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterJoinPacket packet = new ClusterJoinPacket(user);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	}
    	return 0;
    }

    /**
     * 请求加入群
     * @param clusterId 群内部ID
     * @param message 请求的附加信息
     * @return
     * 		包序号
     */
    public char requestJoinCluster(int clusterId, String message) {
    	if(user.isLoggedIn()) {
    		ClusterAuthPacket packet = new ClusterAuthPacket(user);
    		packet.setType(QQ.QQ_CLUSTER_AUTH_REQUEST);
    		packet.setClusterId(clusterId);
    		packet.setMessage(message);
    		gate.send(MAIN_PORT, packet, true);
    		return packet.getSequence();
    	}
    	return 0;
    }

    /**
     * 同意加入群
     * @param clusterId
     */
    public void approveJoinCluster(int clusterId, int receiver) {
    	if(user.isLoggedIn()) {
    		ClusterAuthPacket packet = new ClusterAuthPacket(user);
    		packet.setType(QQ.QQ_CLUSTER_AUTH_APPROVE);
    		packet.setClusterId(clusterId);
    		packet.setReceiver(receiver);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 拒绝加入群
     * @param clusterId
     * @param message
     */
    public void rejectJoinCluster(int clusterId, int receiver, String message) {
    	if(user.isLoggedIn()) {
    		ClusterAuthPacket packet = new ClusterAuthPacket(user);
    		packet.setType(QQ.QQ_CLUSTER_AUTH_REJECT);
    		packet.setClusterId(clusterId);
    		packet.setReceiver(receiver);
    		packet.setMessage(message);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 修改用户的个人信息
     * @param oldPassword 老密码,如果不修改密码,设成null
     * @param newPassword 新密码,如果不修改密码,设成null
     * @param contactInfo 其他信息
     */
    public void modifyInfo(String oldPassword, String newPassword, ContactInfo contactInfo) {
    	if(user.isLoggedIn()) {
	        ModifyInfoPacket packet = new ModifyInfoPacket(user);
	        packet.setOldPassword(oldPassword);
	        packet.setNewPassword(newPassword);
	        String[] infos = contactInfo.getInfoArray();
	        for(int i = 1; i < QQ.QQ_COUNT_MODIFY_USER_INFO_FIELD; i++) {
	            if(infos[i].equals("-"))
	                infos[i] = "";
	        }
	        packet.setContactInfo(contactInfo);
    		gate.send(MAIN_PORT, packet, true);
    	}
    }

    /**
     * 修改个性签名
     *
     * @param sig
     * 		个性签名
     */
    public char modifySignature(String sig) {
    	if(user.isLoggedIn()) {
    		SignatureOpPacket packet = new SignatureOpPacket(user);
    		packet.setSubCommand(QQ.QQ_SUB_CMD_MODIFY_SIGNATURE);
    		packet.setSignature(sig);
    		gate.send(MAIN_PORT, packet, false);
    		return packet.getSequence();
    	}
    	return 0;
    }

    /**
     * 删除个性签名
     */
    public char deleteSignature() {
    	if(user.isLoggedIn()) {
    		SignatureOpPacket packet = new SignatureOpPacket(user);
    		packet.setSubCommand(QQ.QQ_SUB_CMD_DELETE_SIGNATURE);
    		gate.send(MAIN_PORT, packet, false);
    		return packet.getSequence();
    	}
    	return 0;
    }

    /**
     * 得到个性签名
     *
     * @param sigs
     */
    public void getSignature(List<Signature> sigs) {
    	if(user.isLoggedIn()) {
    		SignatureOpPacket packet = new SignatureOpPacket(user);
    		packet.setSubCommand(QQ.QQ_SUB_CMD_GET_SIGNATURE);
    		packet.setSignatures(sigs);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 得到好友等级
     *
     * @param friends
     */
    public void getFriendLevel(List<Integer> friends) {
    	if(user.isLoggedIn()) {
    		FriendLevelOpPacket packet = new FriendLevelOpPacket(user);
    		packet.setFriends(friends);
    		packet.setSubCommand(QQ.QQ_SUB_CMD_GET_FRIEND_LEVEL);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 得到一个用户的详细信息
     * @param qqNum 想要得到的用户QQ号
     */
    public void getUserInfo(int qqNum) {
    	if(user.isLoggedIn()) {
	        GetUserInfoPacket packet = new GetUserInfoPacket(user);
	        packet.setQQ(qqNum);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

	/**
	 * 请求取得好友名单,如果成功,将会触发get friend list success和
	 * get friend list end事件,用户需要监听这两个事件来得到所有的
	 * 好友信息
	 */
	public void getFriendList() {
	    if(gate.hasPort(MAIN_PORT)) {
			// 请求取得好友名单
			GetFriendListPacket packet = new GetFriendListPacket(user);
    		gate.send(MAIN_PORT, packet, false);
	    }
	}

	/**
	 * 请求取得好友名单,position指定了名单开始的偏移,建议初级用户不要使用此API
	 * @param position
	 */
	public void getFriendList(char position) {
	    if(gate.hasPort(MAIN_PORT)) {
			// 请求取得好友名单
			GetFriendListPacket packet = new GetFriendListPacket(user);
			packet.setStartPosition(position);
    		gate.send(MAIN_PORT, packet, false);
	    }
	}

    /**
     * 请求取得当前在线好友列表
     */
    public void getFriendOnline() {
    	if(gate.hasPort(MAIN_PORT)) {
	        GetOnlineOpPacket packet = new GetOnlineOpPacket(user);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 请求取得当前在线好友列表
     */
    public void getFriendOnline(int startPosition) {
    	if(gate.hasPort(MAIN_PORT)) {
	        GetOnlineOpPacket packet = new GetOnlineOpPacket(user);
	        packet.setStartPosition(startPosition);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 得到用户属性
     *
     * @param startPosition
     */
    public void getUserProperty(char startPosition) {
    	if(gate.hasPort(MAIN_PORT)) {
    		UserPropertyOpPacket packet = new UserPropertyOpPacket(user);
    		packet.setStartPosition(startPosition);
    		packet.setSubCommand(QQ.QQ_SUB_CMD_GET_USER_PROPERTY);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 使我的状态改变成在线
     */
    public void makeMeOnline() {
    	if(user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
	        user.setStatus(QQ.QQ_STATUS_ONLINE);
	    	ChangeStatusPacket packet = new ChangeStatusPacket(user);
	    	packet.setShowFakeCam(user.isShowFakeCam());
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 使我的状态改变成离开
     */
    public void makeMeAway() {
    	if(user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
	        user.setStatus(QQ.QQ_STATUS_AWAY);
	    	ChangeStatusPacket packet = new ChangeStatusPacket(user);
	    	packet.setShowFakeCam(user.isShowFakeCam());
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 使我的状态改变为隐身
     */
    public void makeMeHidden() {
    	if(user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
	        user.setStatus(QQ.QQ_STATUS_HIDDEN);
	    	ChangeStatusPacket packet = new ChangeStatusPacket(user);
	    	packet.setShowFakeCam(user.isShowFakeCam());
    		gate.send(MAIN_PORT, packet, false);
    	}
    }

    /**
     * 请求密钥
     * @param request
     */
/*    public void requestKey(byte request) {
        if(gate != null && user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
			RequestKeyPacket packet = new RequestKeyPacket(user);
			packet.setRequest(request);
    		gate.send(MAIN_PORT, packet, true);
        }
    }
*/
    /**
     * 请求得到多人对话列表
     */
/*    public void getDialogList() {
    	if(user.isLoggedIn()) {
    		ClusterSubClusterOpPacket packet = new ClusterSubClusterOpPacket(user);
    		packet.setOpByte(QQ.QQ_CLUSTER_SUB_CMD_GET_DIALOG_LIST);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }
*/
    /**
     * 请求得到讨论组列表
     *
     * @param clusterId
     * 		群id
     */
/*    public void getSubjectList(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterSubClusterOpPacket packet = new ClusterSubClusterOpPacket(user);
    		packet.setOpByte(QQ.QQ_CLUSTER_SUB_CMD_GET_SUBJECT_LIST);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, false);
    	}
    }
*/
    /**
     * 通用方法,发送一个packet
     * 这个方法用在一些包构造比较复杂的情况下,比如上传分组信息这种包,
     * 包中数据的来源是无法知道的也不是用几个参数就能概括的,可能也和实现有关。
     *
     * @param packet OutPacket子类
     */
    public void sendPacket(OutPacket packet) {
    	if(user.isLoggedIn())
    		gate.send(MAIN_PORT, packet, true);
    }

    /**
     * 通过指定port发送一个包
     *
     * @param packet
     * @param port
     */
    public void sendPacket(OutPacket packet, String port) {
        sendPacket(packet, port, true);
    }

    /**
     * 通过指定port发送一个包
     *
     * @param packet
     * 		输出包对象
     * @param port
     * 		port名称
     * @param monitor
     * 		true表示加入到包监视缓冲
     */
    public void sendPacket(OutPacket packet, String port, boolean monitor) {
        if(user.isLoggedIn())
            gate.send(port, packet, monitor);
    }

    /**
     * 不管有没有登录,都把包发出去
     *
     * @param packet
     * @param port
     */
    public void sendPacketAnyway(OutPacket packet, String port) {
        gate.send(port, packet, true);
    }

    /**
     * 执行一些退出会话的清楚工作
     *
     * @param pg
     * @param p
     */
    private void clean(PortGate pg, Porter p) {
        CleanRunnable cleanRunnable = new CleanRunnable(pg, p);
        new Thread(cleanRunnable).start();
    }

    /**
     * @return 登陆服务器IP
     */
    public String getLoginServer() {
        return loginServer;
    }

    /**
     * @return Returns the user.
     */
    public QQUser getUser() {
        return user;
    }

    /**
     * 添加一个QQ事件监听器
     *
     * @param listener
     * 		QQListener
     */
    public void addQQListener(IQQListener listener) {
    	if(!qqListeners.contains(listener)) {
	    	qqListeners.add(listener);
	    	setListenerChanged(true);
    	}
    }

    /**
     * 移去一个QQ事件监听器
     * @param listener QQListener
     */
    public void removeQQListener(IQQListener listener) {
    	if(qqListeners.contains(listener)) {
	    	qqListeners.remove(listener);
	    	setListenerChanged(true);
    	}
    }

    /**
     * 设置listener changed标志
     *
     * @param b
     */

⌨️ 快捷键说明

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