add member type
This commit is contained in:
@@ -25,7 +25,12 @@ public class Main {
|
||||
@Override
|
||||
public void onMessage(Message msg) {
|
||||
if (msg.getType() != 1) return; // 1이 그냥 채팅, 그냥 채팅만 받기
|
||||
if (msg.getMessage().equals("!send")) {
|
||||
if (msg.getMessage().equals("!pcheck")) {
|
||||
int type = msg.getChatRoom().getMember(getTalkClient().getUserId()).getMemberType();
|
||||
getTalkClient().sendMessage(msg.getChatRoom().getChatId(), "현재 봇계정의 멤버 타입 : " + type);
|
||||
getTalkClient().sendMessage(msg.getChatRoom().getChatId(), "현재 님계정의 멤버 타입 : " + msg.getAuthor().getMemberType());
|
||||
}
|
||||
else if (msg.getMessage().equals("!send")) {
|
||||
getTalkClient().sendMessage(msg.getChatRoom().getChatId(), "방 : " + msg.getChatRoom().getName() + "\n보낸사람 : " + msg.getAuthor().getName());
|
||||
}
|
||||
else if (msg.getMessage().equals("!reply")) { // 답장
|
||||
|
||||
@@ -5,18 +5,17 @@ import com.github.netricecake.kakao.structs.Member;
|
||||
import com.github.netricecake.kakao.structs.Message;
|
||||
import com.github.netricecake.loco.LocoPacket;
|
||||
import com.github.netricecake.loco.LocoSocektHandler;
|
||||
import com.github.netricecake.loco.packet.inbound.member.DelMemIn;
|
||||
import com.github.netricecake.loco.packet.inbound.member.MemberIn;
|
||||
import com.github.netricecake.loco.packet.inbound.member.NewMemIn;
|
||||
import com.github.netricecake.loco.packet.inbound.member.SyncLinkPfIn;
|
||||
import com.github.netricecake.loco.packet.inbound.member.*;
|
||||
import com.github.netricecake.loco.packet.inbound.message.MessageIn;
|
||||
import com.github.netricecake.loco.packet.inbound.room.ChatInfoIn;
|
||||
import com.github.netricecake.loco.packet.inbound.room.InfoLinkIn;
|
||||
import com.github.netricecake.loco.packet.outbound.member.MemberOut;
|
||||
import com.github.netricecake.loco.packet.outbound.room.ChatInfoOut;
|
||||
import com.github.netricecake.loco.packet.outbound.member.GetMemberOut;
|
||||
import com.github.netricecake.loco.packet.outbound.room.InfoLinkOut;
|
||||
import com.github.netricecake.loco.packet.outbound.message.MessageOut;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.Getter;
|
||||
|
||||
public class LocoSocketHandlerImpl extends LocoSocektHandler {
|
||||
@@ -59,14 +58,14 @@ public class LocoSocketHandlerImpl extends LocoSocektHandler {
|
||||
|
||||
ChatRoom room = client.getChatRooms().get(in.getChatId());
|
||||
if (!room.getType().equals("OM")) return;
|
||||
client.getTalkHandler().onDelMember(room, new Member(in.getUserId(), in.getNickname()));
|
||||
client.getTalkHandler().onDelMember(room, new Member(in.getUserId(), in.getNickname(), 2));
|
||||
room.getMembers().remove(in.getUserId());
|
||||
} else if (packet.getMethod().equals("SYNCLINKPF")) {
|
||||
SyncLinkPfIn si = new SyncLinkPfIn();
|
||||
si.fromBson(packet.getBody());
|
||||
ChatRoom room = client.getChatRooms().get(si.getChatId());
|
||||
room.getMembers().remove(si.getUserId());
|
||||
Member member = new Member(si.getUserId(), si.getNickName());
|
||||
Member member = new Member(si.getUserId(), si.getNickName(), 2);
|
||||
room.getMembers().put(si.getUserId(), member);
|
||||
}
|
||||
}
|
||||
@@ -80,6 +79,16 @@ public class LocoSocketHandlerImpl extends LocoSocektHandler {
|
||||
room.setChatId(chatId);
|
||||
room.setType(ci.getType());
|
||||
room.setLinkId(ci.getLinkId());
|
||||
GetMemberOut gmo = new GetMemberOut(chatId);
|
||||
GetMemberIn gmi = new GetMemberIn();
|
||||
gmi.fromBson(client.getSocket().writeAndRead(new LocoPacket("GETMEM", gmo.toBson())).getBody());
|
||||
for (int i = 0; i < gmi.getMembers().size(); i++) {
|
||||
JsonObject json = gmi.getMembers().get(i).getAsJsonObject();
|
||||
int type = json.get("mt") != null ? json.get("mt").getAsInt() : 2;
|
||||
Member member = new Member(json.get("userId").getAsLong(), json.get("nickName").getAsString(), type);
|
||||
room.getMembers().put(member.getId(), member);
|
||||
}
|
||||
|
||||
if (ci.getType().equals("OM")) {
|
||||
InfoLinkOut lo = new InfoLinkOut(ci.getLinkId());
|
||||
InfoLinkIn li = new InfoLinkIn();
|
||||
@@ -110,7 +119,7 @@ public class LocoSocketHandlerImpl extends LocoSocektHandler {
|
||||
MemberOut mo = new MemberOut(chatId, memberId);
|
||||
MemberIn mi = new MemberIn();
|
||||
mi.fromBson(client.getSocket().writeAndRead(new LocoPacket("MEMBER", mo.toBson())).getBody());
|
||||
room.getMembers().put(memberId, new Member(memberId, mi.getNickName()));
|
||||
room.getMembers().put(memberId, new Member(memberId, mi.getNickName(), mi.getMemberType()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -214,9 +214,13 @@ public class TalkClient {
|
||||
return status == 0;
|
||||
} catch (Exception e) {
|
||||
} finally {
|
||||
//if (postSocket != null) postSocket.close();
|
||||
if (postSocket != null) postSocket.close();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public long getUserId() {
|
||||
return loginData.userId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,4 +20,12 @@ public class ChatRoom {
|
||||
|
||||
private Map<Long, Member> members = new HashMap<>();
|
||||
|
||||
public int getMemberCount() {
|
||||
return members.size();
|
||||
}
|
||||
|
||||
public Member getMember(long id) {
|
||||
return members.get(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,9 +9,12 @@ public class Member {
|
||||
|
||||
private String name;
|
||||
|
||||
public Member(long id, String name) {
|
||||
private int memberType;
|
||||
|
||||
public Member(long id, String name, int memberType) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.memberType = memberType;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -59,6 +59,8 @@ public class LocoCodec extends MessageToMessageCodec<byte[], LocoPacket> {
|
||||
}
|
||||
if (currentLocoPacket.getBodyLength() > buffer.length) break;
|
||||
byte[] body = ByteUtil.sliceBytes(buffer, 0, currentLocoPacket.getBodyLength());
|
||||
System.out.println(currentLocoPacket.getMethod());
|
||||
System.out.println(BsonUtil.bsonToJson(body));
|
||||
buffer = ByteUtil.sliceBytes(buffer, currentLocoPacket.getBodyLength(), buffer.length - currentLocoPacket.getBodyLength());
|
||||
currentLocoPacket.setBody(body);
|
||||
if (locoSocket.getWaitList().containsKey(currentLocoPacket.getPacketId())) {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.github.netricecake.loco.packet.inbound.member;
|
||||
|
||||
import com.github.netricecake.loco.packet.InboundPacket;
|
||||
import com.github.netricecake.loco.util.BsonUtil;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class GetMemberIn extends InboundPacket {
|
||||
|
||||
private int status;
|
||||
|
||||
private JsonArray members;
|
||||
|
||||
public void fromBson(byte[] bson) {
|
||||
JsonObject json = BsonUtil.bsonToJsonObject(bson);
|
||||
status = json.get("status").getAsInt();
|
||||
if (status == 0) members = json.get("members").getAsJsonArray();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,11 +8,19 @@ import lombok.Getter;
|
||||
@Getter
|
||||
public class MemberIn extends InboundPacket {
|
||||
|
||||
private long userId;
|
||||
|
||||
private String nickName;
|
||||
|
||||
private int memberType = 2;
|
||||
|
||||
public void fromBson(byte[] bson) {
|
||||
JsonObject jsonObject = BsonUtil.bsonToJsonObject(bson);
|
||||
userId = jsonObject.get("members").getAsJsonArray().get(0).getAsJsonObject().get("userId").getAsLong();
|
||||
this.nickName = jsonObject.get("members").getAsJsonArray().get(0).getAsJsonObject().get("nickName").getAsString();
|
||||
try {
|
||||
memberType = jsonObject.get("members").getAsJsonArray().get(0).getAsJsonObject().get("mt").getAsInt();
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.github.netricecake.loco.packet.outbound.member;
|
||||
|
||||
import com.github.netricecake.loco.util.BsonUtil;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
public class GetMemberOut {
|
||||
|
||||
private long chatId;
|
||||
|
||||
public GetMemberOut(long chatId) {
|
||||
this.chatId = chatId;
|
||||
}
|
||||
|
||||
public byte[] toBson() {
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
jsonObject.addProperty("chatId", chatId);
|
||||
return BsonUtil.jsonObjectToBson(jsonObject);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user