Новый тип контента - комментарии в обсуждениях
This commit is contained in:
parent
74d0299342
commit
6cc5daefce
4
pom.xml
4
pom.xml
@ -23,9 +23,9 @@
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<bot.core.ver>0.6.1-SNAPSHOT</bot.core.ver>
|
||||
<bot.core.ver>0.6.2-SNAPSHOT</bot.core.ver>
|
||||
|
||||
<vksdk.ver>1.0.2</vksdk.ver>
|
||||
<vksdk.ver>0.5.13-SNAPSHOT</vksdk.ver>
|
||||
<log4j.ver>1.2.17</log4j.ver>
|
||||
</properties>
|
||||
|
||||
|
@ -4,76 +4,36 @@ import java.util.Objects;
|
||||
|
||||
public class VkConfig {
|
||||
|
||||
private String groupToken;
|
||||
private Integer groupId;
|
||||
private String serviceToken;
|
||||
private Integer appId;
|
||||
private String groupSecretKey;
|
||||
private String groupPublicKey;
|
||||
private VkConfigGroup configGroup;
|
||||
private VkConfigUser configUser;
|
||||
|
||||
public String getGroupToken() {
|
||||
return groupToken;
|
||||
public VkConfigGroup getConfigGroup() {
|
||||
return configGroup;
|
||||
}
|
||||
|
||||
public void setGroupToken(String groupToken) {
|
||||
this.groupToken = groupToken;
|
||||
public void setConfigGroup(VkConfigGroup configGroup) {
|
||||
this.configGroup = configGroup;
|
||||
}
|
||||
|
||||
public Integer getGroupId() {
|
||||
return groupId;
|
||||
public VkConfigUser getConfigUser() {
|
||||
return configUser;
|
||||
}
|
||||
|
||||
public void setGroupId(Integer groupId) {
|
||||
this.groupId = groupId;
|
||||
}
|
||||
|
||||
public String getServiceToken() {
|
||||
return serviceToken;
|
||||
}
|
||||
|
||||
public void setServiceToken(String serviceToken) {
|
||||
this.serviceToken = serviceToken;
|
||||
}
|
||||
|
||||
public Integer getAppId() {
|
||||
return appId;
|
||||
}
|
||||
|
||||
public void setAppId(Integer appId) {
|
||||
this.appId = appId;
|
||||
}
|
||||
|
||||
public String getGroupSecretKey() {
|
||||
return groupSecretKey;
|
||||
}
|
||||
|
||||
public void setGroupSecretKey(String groupSecretKey) {
|
||||
this.groupSecretKey = groupSecretKey;
|
||||
}
|
||||
|
||||
public String getGroupPublicKey() {
|
||||
return groupPublicKey;
|
||||
}
|
||||
|
||||
public void setGroupPublicKey(String groupPublicKey) {
|
||||
this.groupPublicKey = groupPublicKey;
|
||||
public void setConfigUser(VkConfigUser configUser) {
|
||||
this.configUser = configUser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!(o instanceof VkConfig)) return false;
|
||||
VkConfig vkConfig = (VkConfig) o;
|
||||
return Objects.equals(groupToken, vkConfig.groupToken) &&
|
||||
Objects.equals(groupId, vkConfig.groupId) &&
|
||||
Objects.equals(serviceToken, vkConfig.serviceToken) &&
|
||||
Objects.equals(appId, vkConfig.appId) &&
|
||||
Objects.equals(groupSecretKey, vkConfig.groupSecretKey) &&
|
||||
Objects.equals(groupPublicKey, vkConfig.groupPublicKey);
|
||||
return Objects.equals(configGroup, vkConfig.configGroup) &&
|
||||
Objects.equals(configUser, vkConfig.configUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(groupToken, groupId, serviceToken, appId, groupSecretKey, groupPublicKey);
|
||||
return Objects.hash(configGroup, configUser);
|
||||
}
|
||||
}
|
||||
|
79
src/main/java/org/sadtech/vkbot/core/VkConfigGroup.java
Normal file
79
src/main/java/org/sadtech/vkbot/core/VkConfigGroup.java
Normal file
@ -0,0 +1,79 @@
|
||||
package org.sadtech.vkbot.core;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class VkConfigGroup {
|
||||
|
||||
private String groupToken;
|
||||
private Integer groupId;
|
||||
private String serviceToken;
|
||||
private Integer appId;
|
||||
private String groupSecretKey;
|
||||
private String groupPublicKey;
|
||||
|
||||
public String getGroupToken() {
|
||||
return groupToken;
|
||||
}
|
||||
|
||||
public void setGroupToken(String groupToken) {
|
||||
this.groupToken = groupToken;
|
||||
}
|
||||
|
||||
public Integer getGroupId() {
|
||||
return groupId;
|
||||
}
|
||||
|
||||
public void setGroupId(Integer groupId) {
|
||||
this.groupId = groupId;
|
||||
}
|
||||
|
||||
public String getServiceToken() {
|
||||
return serviceToken;
|
||||
}
|
||||
|
||||
public void setServiceToken(String serviceToken) {
|
||||
this.serviceToken = serviceToken;
|
||||
}
|
||||
|
||||
public Integer getAppId() {
|
||||
return appId;
|
||||
}
|
||||
|
||||
public void setAppId(Integer appId) {
|
||||
this.appId = appId;
|
||||
}
|
||||
|
||||
public String getGroupSecretKey() {
|
||||
return groupSecretKey;
|
||||
}
|
||||
|
||||
public void setGroupSecretKey(String groupSecretKey) {
|
||||
this.groupSecretKey = groupSecretKey;
|
||||
}
|
||||
|
||||
public String getGroupPublicKey() {
|
||||
return groupPublicKey;
|
||||
}
|
||||
|
||||
public void setGroupPublicKey(String groupPublicKey) {
|
||||
this.groupPublicKey = groupPublicKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof VkConfigGroup)) return false;
|
||||
VkConfigGroup that = (VkConfigGroup) o;
|
||||
return Objects.equals(groupToken, that.groupToken) &&
|
||||
Objects.equals(groupId, that.groupId) &&
|
||||
Objects.equals(serviceToken, that.serviceToken) &&
|
||||
Objects.equals(appId, that.appId) &&
|
||||
Objects.equals(groupSecretKey, that.groupSecretKey) &&
|
||||
Objects.equals(groupPublicKey, that.groupPublicKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(groupToken, groupId, serviceToken, appId, groupSecretKey, groupPublicKey);
|
||||
}
|
||||
}
|
39
src/main/java/org/sadtech/vkbot/core/VkConfigUser.java
Normal file
39
src/main/java/org/sadtech/vkbot/core/VkConfigUser.java
Normal file
@ -0,0 +1,39 @@
|
||||
package org.sadtech.vkbot.core;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class VkConfigUser {
|
||||
|
||||
private Integer userId;
|
||||
private String token;
|
||||
|
||||
public Integer getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(Integer userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
public void setToken(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof VkConfigUser)) return false;
|
||||
VkConfigUser that = (VkConfigUser) o;
|
||||
return Objects.equals(userId, that.userId) &&
|
||||
Objects.equals(token, that.token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(userId, token);
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package org.sadtech.vkbot.core;
|
||||
import com.vk.api.sdk.client.VkApiClient;
|
||||
import com.vk.api.sdk.client.actors.GroupActor;
|
||||
import com.vk.api.sdk.client.actors.ServiceActor;
|
||||
import com.vk.api.sdk.client.actors.UserActor;
|
||||
import com.vk.api.sdk.httpclient.HttpTransportClient;
|
||||
|
||||
public class VkConnect {
|
||||
@ -12,6 +13,7 @@ public class VkConnect {
|
||||
private VkApiClient vkApiClient;
|
||||
private GroupActor groupActor;
|
||||
private ServiceActor serviceActor;
|
||||
private UserActor userActor;
|
||||
|
||||
public VkConnect(VkConfig vkConfig) {
|
||||
this.vkConfig = vkConfig;
|
||||
@ -35,6 +37,19 @@ public class VkConnect {
|
||||
}
|
||||
}
|
||||
|
||||
public UserActor getUserActor() {
|
||||
if (userActor != null) {
|
||||
return userActor;
|
||||
} else {
|
||||
initUserActor();
|
||||
return userActor;
|
||||
}
|
||||
}
|
||||
|
||||
private void initUserActor() {
|
||||
userActor = new UserActor(vkConfig.getConfigUser().getUserId(), vkConfig.getConfigUser().getToken());
|
||||
}
|
||||
|
||||
public ServiceActor getServiceActor() {
|
||||
if (serviceActor != null) {
|
||||
return serviceActor;
|
||||
@ -49,10 +64,10 @@ public class VkConnect {
|
||||
}
|
||||
|
||||
private void initGroupActor() {
|
||||
groupActor = new GroupActor(vkConfig.getGroupId(), vkConfig.getGroupToken());
|
||||
groupActor = new GroupActor(vkConfig.getConfigGroup().getGroupId(), vkConfig.getConfigGroup().getGroupToken());
|
||||
}
|
||||
|
||||
private void initServiceActor() {
|
||||
serviceActor = new ServiceActor(vkConfig.getAppId(), vkConfig.getServiceToken());
|
||||
serviceActor = new ServiceActor(vkConfig.getConfigGroup().getAppId(), vkConfig.getConfigGroup().getServiceToken());
|
||||
}
|
||||
}
|
||||
|
@ -2,10 +2,10 @@ package org.sadtech.vkbot.core.convert;
|
||||
|
||||
import com.vk.api.sdk.objects.messages.Message;
|
||||
import com.vk.api.sdk.objects.messages.MessageAttachment;
|
||||
import org.sadtech.bot.core.domain.attachment.Attachment;
|
||||
import org.sadtech.bot.core.domain.attachment.AudioMessage;
|
||||
import org.sadtech.bot.core.domain.attachment.Geo;
|
||||
import org.sadtech.bot.core.domain.content.Mail;
|
||||
import org.sadtech.bot.core.domain.content.attachment.Attachment;
|
||||
import org.sadtech.bot.core.domain.content.attachment.AudioMessage;
|
||||
import org.sadtech.bot.core.domain.content.attachment.Geo;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
@ -18,14 +18,16 @@ public class MessageMailConvert implements Convert<Message, Mail> {
|
||||
public Mail converting(Message message) {
|
||||
Mail mail = new Mail();
|
||||
mail.setMessage(message.getText());
|
||||
mail.setDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(message.getDate()), TimeZone.getDefault().toZoneId()));
|
||||
mail.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(message.getDate()), TimeZone.getDefault().toZoneId()));
|
||||
mail.setId(message.getId());
|
||||
mail.setPersonId(message.getPeerId());
|
||||
mail.setAttachments(message.getAttachments()
|
||||
.stream()
|
||||
.map(this::convertAttachment)
|
||||
.collect(Collectors.toList()));
|
||||
mail.getAttachments().add(convertGeo(message.getGeo()));
|
||||
if (message.getGeo()!=null) {
|
||||
mail.getAttachments().add(convertGeo(message.getGeo()));
|
||||
}
|
||||
return mail;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,23 @@
|
||||
package org.sadtech.vkbot.core.convert;
|
||||
|
||||
import com.vk.api.sdk.objects.board.TopicComment;
|
||||
import org.sadtech.bot.core.domain.content.BoardComment;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class TopicCommentToBoardComment implements Convert<TopicComment, BoardComment> {
|
||||
@Override
|
||||
public BoardComment converting(TopicComment target) {
|
||||
BoardComment boardComment = new BoardComment();
|
||||
boardComment.setTopicId(target.getTopicId());
|
||||
boardComment.setCreateDate(LocalDateTime.ofInstant(Instant.ofEpochSecond(target.getDate()), TimeZone.getDefault().toZoneId()));
|
||||
boardComment.setMessage(target.getText());
|
||||
boardComment.setPersonId(target.getFromId());
|
||||
|
||||
|
||||
System.out.println(target);
|
||||
return boardComment;
|
||||
}
|
||||
}
|
@ -15,7 +15,6 @@ public class AccountSubscribe extends AbstractBasketSubscribe<Message, Message>
|
||||
private final AccountService accountService;
|
||||
private final Sent sent;
|
||||
private BoxAnswer answerSuccessfulPayment;
|
||||
private BoxAnswer answerFailPayment;
|
||||
|
||||
public AccountSubscribe(AccountService accountService, Sent sent) {
|
||||
this.accountService = accountService;
|
||||
@ -30,14 +29,6 @@ public class AccountSubscribe extends AbstractBasketSubscribe<Message, Message>
|
||||
this.answerSuccessfulPayment = answerSuccessfulPayment;
|
||||
}
|
||||
|
||||
public BoxAnswer getAnswerFailPayment() {
|
||||
return answerFailPayment;
|
||||
}
|
||||
|
||||
public void setAnswerFailPayment(BoxAnswer answerFailPayment) {
|
||||
this.answerFailPayment = answerFailPayment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean check(Message userMessage) {
|
||||
return userMessage.getAttachments().size() > 0 && "Денежный перевод".equals(userMessage.getAttachments().get(0).getLink().getCaption());
|
||||
@ -47,10 +38,12 @@ public class AccountSubscribe extends AbstractBasketSubscribe<Message, Message>
|
||||
public void processing(Message message) {
|
||||
if (message.getText() != null) {
|
||||
try {
|
||||
if (accountService.pay(Integer.valueOf(message.getText()), message.getPeerId(), Double.valueOf(message.getAttachments().get(0).getLink().getTitle().split(" ")[0]))) {
|
||||
Double valueSum = Double.valueOf(message.getAttachments().get(0).getLink().getTitle().split(" ")[0]);
|
||||
if (accountService.pay(Integer.valueOf(message.getText()), message.getPeerId(), valueSum) && answerSuccessfulPayment != null) {
|
||||
sent.send(message.getPeerId(), answerSuccessfulPayment);
|
||||
}
|
||||
} catch (PaymentException e) {
|
||||
log.error(e.getMessage());
|
||||
sent.send(message.getPeerId(), BoxAnswer.builder().message(e.getDescription()).build());
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,96 @@
|
||||
package org.sadtech.vkbot.core.distribution;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.vk.api.sdk.objects.board.TopicComment;
|
||||
import org.sadtech.bot.core.domain.content.BoardComment;
|
||||
import org.sadtech.bot.core.service.BoardCommentService;
|
||||
import org.sadtech.vkbot.core.convert.Convert;
|
||||
import org.sadtech.vkbot.core.convert.TopicCommentToBoardComment;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class BoardCommentSubscribe extends AbstractBasketSubscribe<JsonObject, TopicComment> {
|
||||
|
||||
private final BoardCommentService boardCommentService;
|
||||
private final Convert<TopicComment, BoardComment> topicConvert = new TopicCommentToBoardComment();
|
||||
private Set<Integer> answerTopicsId;
|
||||
private Set<Integer> noAnswerPersonId;
|
||||
private Boolean respondAppeal = true;
|
||||
|
||||
public BoardCommentSubscribe(BoardCommentService boardCommentService) {
|
||||
this.boardCommentService = boardCommentService;
|
||||
this.convert = (object) -> {
|
||||
Gson gson = new Gson();
|
||||
return gson.fromJson(object.getAsJsonObject("object"), TopicComment.class);
|
||||
};
|
||||
}
|
||||
|
||||
public Set<Integer> getAnswerTopicsId() {
|
||||
return answerTopicsId;
|
||||
}
|
||||
|
||||
public void setAnswerTopicsId(Set<Integer> answerTopicsId) {
|
||||
this.answerTopicsId = answerTopicsId;
|
||||
}
|
||||
|
||||
public Set<Integer> getNoAnswerPersonId() {
|
||||
return noAnswerPersonId;
|
||||
}
|
||||
|
||||
public void setNoAnswerPersonId(Set<Integer> noAnswerPersonId) {
|
||||
this.noAnswerPersonId = noAnswerPersonId;
|
||||
}
|
||||
|
||||
public Boolean getRespondAppeal() {
|
||||
return respondAppeal;
|
||||
}
|
||||
|
||||
public void setRespondAppeal(Boolean respondAppeal) {
|
||||
this.respondAppeal = respondAppeal;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean check(JsonObject object) {
|
||||
String type = object.get("type").getAsString();
|
||||
String message = object.getAsJsonObject("object").get("text").getAsString();
|
||||
Integer groupId = object.get("group_id").getAsInt();
|
||||
return "board_post_new".equals(type) && checkRespondAppeal(message, groupId);
|
||||
}
|
||||
|
||||
private boolean checkRespondAppeal(String message, Integer groupId) {
|
||||
if (respondAppeal) {
|
||||
Pattern pattern = Pattern.compile("\\[club" + groupId);
|
||||
Matcher m = pattern.matcher(message);
|
||||
return m.find();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkTopic(Integer topicId) {
|
||||
if (answerTopicsId == null) {
|
||||
return true;
|
||||
} else {
|
||||
return answerTopicsId.contains(topicId);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkPerson(Integer personId) {
|
||||
if (noAnswerPersonId == null) {
|
||||
return true;
|
||||
} else {
|
||||
return !noAnswerPersonId.contains(personId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void processing(TopicComment object) {
|
||||
if (checkPerson(object.getFromId()) && checkTopic(object.getTopicId())) {
|
||||
boardCommentService.add(topicConvert.converting(object));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package org.sadtech.vkbot.core.sender;
|
||||
|
||||
import com.vk.api.sdk.client.VkApiClient;
|
||||
import com.vk.api.sdk.client.actors.GroupActor;
|
||||
import com.vk.api.sdk.client.actors.UserActor;
|
||||
import com.vk.api.sdk.exceptions.ApiException;
|
||||
import com.vk.api.sdk.exceptions.ClientException;
|
||||
import org.sadtech.bot.core.domain.BoxAnswer;
|
||||
import org.sadtech.bot.core.exception.MailSendException;
|
||||
import org.sadtech.bot.core.service.sender.Sent;
|
||||
import org.sadtech.vkbot.core.VkConnect;
|
||||
import org.sadtech.vkbot.core.VkInsertData;
|
||||
|
||||
public class BoardCommentSenderVk implements Sent {
|
||||
|
||||
private final VkApiClient vkApiClient;
|
||||
private final GroupActor groupActor;
|
||||
private final UserActor userActor;
|
||||
private final VkInsertData vkInsertData;
|
||||
|
||||
public BoardCommentSenderVk(VkConnect vkConnect) {
|
||||
this.vkApiClient = vkConnect.getVkApiClient();
|
||||
this.groupActor = vkConnect.getGroupActor();
|
||||
this.vkInsertData = new VkInsertData(vkConnect);
|
||||
this.userActor = vkConnect.getUserActor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Integer integer, BoxAnswer boxAnswer) {
|
||||
throw new MailSendException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Integer contentId, Integer personId, BoxAnswer boxAnswer) {
|
||||
try {
|
||||
vkApiClient.board().createComment(userActor, groupActor.getGroupId(), contentId).message(vkInsertData.insertWords(boxAnswer.getMessage(), personId)).fromGroup(true).execute();
|
||||
} catch (ApiException | ClientException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -34,14 +34,14 @@ public class MailSenderVk implements Sent {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Integer idPerson, String message) {
|
||||
sendMessage(vkApiClient.messages().send(groupActor).peerId(idPerson).message(message).randomId(ThreadLocalRandom.current().nextInt(0, Integer.MAX_VALUE)));
|
||||
public void send(Integer personId, BoxAnswer boxAnswer) {
|
||||
MessagesSendQuery messagesSendQuery = createMessage(boxAnswer, personId);
|
||||
sendMessage(messagesSendQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Integer idPerson, BoxAnswer boxAnswer) {
|
||||
MessagesSendQuery messagesSendQuery = createMessage(boxAnswer, idPerson);
|
||||
sendMessage(messagesSendQuery);
|
||||
public void send(Integer integer, Integer integer1, BoxAnswer boxAnswer) {
|
||||
|
||||
}
|
||||
|
||||
private MessagesSendQuery createMessage(BoxAnswer boxAnswer, Integer peerId) {
|
||||
@ -55,7 +55,7 @@ public class MailSenderVk implements Sent {
|
||||
messages.keyboard(keyboard);
|
||||
}
|
||||
if (boxAnswer.getCoordinates() != null) {
|
||||
messages.lat(boxAnswer.getCoordinates().getLat()).lng(boxAnswer.getCoordinates().getaLong());
|
||||
messages.lat(boxAnswer.getCoordinates().getLatitude()).lng(boxAnswer.getCoordinates().getLongitude());
|
||||
}
|
||||
if (boxAnswer.getStickerId() != null) {
|
||||
try {
|
||||
|
Reference in New Issue
Block a user