Skip to content

Commit

Permalink
Add Auto Leave Group. fixes #313 @1h
Browse files Browse the repository at this point in the history
  • Loading branch information
みぞ@CrazyBeatCoder committed Feb 5, 2018
1 parent edc9d4f commit df6eb5a
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 19 deletions.
41 changes: 24 additions & 17 deletions src/main/java/com/mizo0203/shiki/domain/UseCase.java
Expand Up @@ -2,6 +2,7 @@

import com.linecorp.bot.model.event.*;
import com.linecorp.bot.model.event.message.*;
import com.linecorp.bot.model.event.source.GroupSource;
import com.linecorp.bot.model.message.TextMessage;
import com.mizo0203.shiki.domain.model.Pieces;
import com.mizo0203.shiki.domain.model.ReversiModel;
Expand Down Expand Up @@ -44,7 +45,7 @@ public void onLineJoin(JoinEvent event) {
try (ReversiRepository reversiRepository = new ReversiRepository(config)) {
ReversiModel reversiModel = reversiRepository.getReversiModel();
String messageText =
mTranslator.parseLineMessageText(reversiModel, reversiRepository.getPieces());
mTranslator.parseLineMessageText(reversiModel, reversiRepository.getNextPieces());
mRepository.replyMessage(event.getReplyToken(), new TextMessage(messageText));
}
}
Expand All @@ -55,26 +56,32 @@ public void onLineTextMessage(MessageEvent event, TextMessageContent message) {
try (ConfigRepository configRepository =
new ConfigRepository(event.getSource().getSenderId())) {
LineTalkRoomConfig config = configRepository.getLineTalkRoomConfig();
String messageText = play(config, message.getText());
mRepository.replyMessage(event.getReplyToken(), new TextMessage(messageText));
try (ReversiRepository reversiRepository = new ReversiRepository(config)) {
String messageText = play(reversiRepository, message.getText());
mRepository.replyMessage(event.getReplyToken(), new TextMessage(messageText));
if (reversiRepository.getNextPieces() == null) {
if (event.getSource() instanceof GroupSource) {
mRepository.leaveGroup(event.getSource().getSenderId());
configRepository.deleteLineTalkRoomConfig();
}
}
}
}
}

private String play(LineTalkRoomConfig config, String message) {
try (ReversiRepository reversiRepository = new ReversiRepository(config)) {
ReversiModel reversiModel = reversiRepository.getReversiModel();
Pieces oneself = reversiRepository.getPieces();
if (oneself == null) {
reversiRepository.reset();
return mTranslator.parseLineMessageText(reversiModel, reversiRepository.getPieces());
}
boolean played = mTranslator.play(reversiModel, message, oneself);
if (played) {
Pieces nextPieces = reversiModel.nextPieces(oneself);
reversiRepository.setNextPieces(nextPieces);
}
return mTranslator.parseLineMessageText(reversiModel, reversiRepository.getPieces());
private String play(ReversiRepository reversiRepository, String message) {
ReversiModel reversiModel = reversiRepository.getReversiModel();
Pieces oneself = reversiRepository.getNextPieces();
if (oneself == null) {
reversiRepository.reset();
return mTranslator.parseLineMessageText(reversiModel, reversiRepository.getNextPieces());
}
boolean played = mTranslator.play(reversiModel, message, oneself);
if (played) {
Pieces nextPieces = reversiModel.nextPieces(oneself);
reversiRepository.setNextPieces(nextPieces);
}
return mTranslator.parseLineMessageText(reversiModel, reversiRepository.getNextPieces());
}

public void parseWebhookEvent(
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/com/mizo0203/shiki/repo/LineRepository.java
Expand Up @@ -32,8 +32,9 @@
"https://api.line.me/v2/bot/message/push";
private static final String MESSAGING_API_IDS_MEMBERS_GROUP_URL_STR =
"https://api.line.me/v2/bot/group/%s/members/ids";
private static final String MESSAGING_API_LEAVE_GROUP_URL_STR =
"https://api.line.me/v2/bot/group/%s/leave";
private final LineBotCallbackRequestParser mLineBotCallbackRequestParser;

private final String mChannelAccessToken;

LineRepository(String channelSecret, String channelAccessToken) {
Expand Down Expand Up @@ -121,6 +122,17 @@ public void idsMembersGroup(final String groupId) {
}
}

public void leaveGroup(String groupId) {
try {
final URL url = new URL(String.format(MESSAGING_API_LEAVE_GROUP_URL_STR, groupId));
final Map<String, String> reqProp = new HashMap<>();
reqProp.put("Authorization", "Bearer " + mChannelAccessToken);
HttpUtil.post(url, reqProp, "", null);
} catch (final IOException e) {
e.printStackTrace();
}
}

@Nullable
public List<Event> getCallbackEventList(HttpServletRequest req) {
try {
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/mizo0203/shiki/repo/Repository.java
Expand Up @@ -62,4 +62,8 @@ public void idsMembersGroup(String groupId) {
public List<Event> getCallbackEventList(HttpServletRequest req) {
return mLineRepository.getCallbackEventList(req);
}

public void leaveGroup(String groupId) {
mLineRepository.leaveGroup(groupId);
}
}
Expand Up @@ -52,7 +52,7 @@ private String parseReversiBoard() {
return reversiBoard.toString();
}

public Pieces getPieces() {
public Pieces getNextPieces() {
int pieces = config.getPieces();
if (pieces < 0) {
return null;
Expand Down

0 comments on commit df6eb5a

Please sign in to comment.