📄 qqclient.java
字号:
*
* @param page
* 页号
*/
public void batchDownloadFriendRemark(int page) {
if(user.isLoggedIn()) {
FriendDataOpPacket packet = new FriendDataOpPacket(user);
packet.setSubCommand(QQ.QQ_SUB_CMD_BATCH_DOWNLOAD_FRIEND_REMARK);
packet.setPage(page);
pool.send(MAIN.name, packet, false);
}
}
/**
* @param page
* @param online
* @param hasCam
* @param provinceIndex
* @param cityIndex
* @param ageIndex
* @param genderIndex
* @return
*/
public char searchUserAdvanced(
int page,
boolean online,
boolean hasCam,
int provinceIndex,
int cityIndex,
int ageIndex,
int genderIndex) {
if(user.isLoggedIn()) {
AdvancedSearchUserPacket packet = new AdvancedSearchUserPacket(user);
packet.setPage((char)page);
packet.setSearchOnline(online);
packet.setHasCam(hasCam);
packet.setProvinceIndex((char)provinceIndex);
packet.setCityIndex((char)cityIndex);
packet.setAgeIndex((byte)ageIndex);
packet.setGenderIndex((byte)genderIndex);
pool.send(MAIN.name, packet, false);
return packet.getSequence();
} else
return 0;
}
/**
* 搜索所有的在线用户
* @param page 页号,从0开始
* @return
* 包序号
*/
public char searchUser(int page) {
if(user.isLoggedIn()) {
SearchUserPacket packet = new SearchUserPacket(user);
packet.setPage(page);
pool.send(MAIN.name, packet, false);
return packet.getSequence();
} else
return 0;
}
/**
* 自定义搜索用户
* @param page 页号
* @param qqNum 要搜索的QQ号字符串形式
* @param nick 要搜索的昵称
* @param email 要搜索的email
* @param matchEntire 字符串是否完全匹配
* @return
* 包序号
*/
public char searchUser(int page, String qqStr, String nick, String email) {
if(user.isLoggedIn()) {
SearchUserPacket packet = new SearchUserPacket(user);
packet.setSearchType(QQ.QQ_SEARCH_CUSTOM);
packet.setPage(page);
packet.setQQStr(qqStr);
packet.setNick(nick);
packet.setEmail(email);
pool.send(MAIN.name, packet, false);
return packet.getSequence();
} else
return 0;
}
/**
* 添加一个好友
* @param qqNum 要添加的人的QQ号
* @return 发送出的包的序号
*/
public char addFriend(int qqNum) {
if(user.isLoggedIn()) {
AddFriendExPacket packet = new AddFriendExPacket(user);
packet.setTo(qqNum);
pool.send(MAIN.name, packet, false);
return packet.getSequence();
}
return 0;
}
/**
* 删除一个好友
* @param qqNum 要删除的好友的QQ号
* @return 如果包发送成功则返回包序号,否则返回0
*/
public char deleteFriend(int qqNum) {
if(user.isLoggedIn()) {
DeleteFriendPacket packet = new DeleteFriendPacket(user);
packet.setTo(qqNum);
pool.send(MAIN.name, packet, true);
return packet.getSequence();
}
return 0;
}
/**
* 把某人的好友列表中的自己删除
* @param qqNum 我想把我自己删除的好友的QQ号
*/
public void removeSelfFrom(int qqNum) {
if(user.isLoggedIn()) {
RemoveSelfPacket packet = new RemoveSelfPacket(user);
packet.setRemoveFrom(qqNum);
pool.send(MAIN.name, packet, true);
}
}
/**
* 把好友从服务器端的好友列表中删除
*
* @param qqNum
* 要删除的好友QQ号
*/
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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, packet, true);
}
}
/**
* 如果我要拒绝一个人加我为好友的请求,用这个方法发送拒绝消息
* @param qqNum 请求加我的人的QQ号
* @param message 附加消息
*/
public void rejectAddMe(int qqNum, String message) {
if(user.isLoggedIn()) {
AddFriendAuthResponsePacket packet = new AddFriendAuthResponsePacket(user);
packet.setTo(qqNum);
packet.setMessage(message);
packet.setAction(QQ.QQ_MY_AUTH_REJECT);
pool.send(MAIN.name, packet, true);
}
}
/**
* 如果我要同意一个人加我为好友的请求,用这个方法发送同意消息
* @param qqNum 请求加我的人的QQ号
*/
public void approveAddMe(int qqNum) {
if(user.isLoggedIn()) {
AddFriendAuthResponsePacket packet = new AddFriendAuthResponsePacket(user);
packet.setTo(qqNum);
packet.setAction(QQ.QQ_MY_AUTH_APPROVE);
pool.send(MAIN.name, packet, true);
}
}
/**
* 下载好友分组
*
* @param beginFrom
* 起始好友号
*/
public void downloadFriend(int beginFrom) {
if(user.isLoggedIn()) {
DownloadGroupFriendPacket packet = new DownloadGroupFriendPacket(user);
packet.setBeginFrom(beginFrom);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, packet, true);
}
}
/**
* 下载分组名称
*/
public void downloadGroup() {
if(user.isLoggedIn()) {
GroupDataOpPacket packet = new GroupDataOpPacket(user);
packet.setType(QQ.QQ_SUB_CMD_DOWNLOAD_GROUP_NAME);
pool.send(MAIN.name, 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);
pool.send(MAIN.name, 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -