[Change] ConsoleMessageEvent, ConsoleMessageSender 将消息传递给Sender发送, 设置消息前缀格式;

[Change] ConsoleMain 调整私聊模式下的前缀;
[Change] MessageSource 规范化命名;
This commit is contained in:
LamGC 2020-06-12 20:13:36 +08:00
parent abcd26f21b
commit ebb3dea99e
10 changed files with 44 additions and 27 deletions

View File

@ -270,7 +270,7 @@ public class BotAdminCommandProcess {
}
AutoSender sender = new RandomRankingArtworksSender(
MessageSenderBuilder.getMessageSender(MessageSource.Group, id),
MessageSenderBuilder.getMessageSender(MessageSource.GROUP, id),
id,
rankingStart,
rankingEnd,

View File

@ -31,7 +31,7 @@ public class ConsoleMain {
long groupId = Long.parseLong(lineReader.readLine("会话群组号:"));
boolean isGroup = false;
do {
String input = lineReader.readLine("App " + qqId + (isGroup ? "@" + groupId : "$private") + " >");
String input = lineReader.readLine("App " + qqId + (isGroup ? "@" + groupId : "#private") + " >");
if(input.equalsIgnoreCase("#exit")) {
System.out.println("退出应用...");
break;

View File

@ -1,8 +1,8 @@
package net.lamgc.cgj.bot.framework.cli.message;
import net.lamgc.cgj.bot.event.MessageEvent;
import java.util.Date;
import net.lamgc.cgj.bot.message.MessageSenderBuilder;
import net.lamgc.cgj.bot.message.MessageSource;
public class ConsoleMessageEvent extends MessageEvent {
@ -11,9 +11,15 @@ public class ConsoleMessageEvent extends MessageEvent {
}
@Override
public int sendMessage(String message) {
System.out.println(new Date() + " Bot: " + message);
return 0;
public int sendMessage(String message) throws Exception {
if(getFromGroup() <= 0) {
return MessageSenderBuilder
.getMessageSender(MessageSource.PRIVATE, getFromQQ()).sendMessage(message);
} else {
return MessageSenderBuilder
.getMessageSender(MessageSource.GROUP, getFromQQ()).sendMessage(message);
}
}
@Override

View File

@ -1,13 +1,26 @@
package net.lamgc.cgj.bot.framework.cli.message;
import net.lamgc.cgj.bot.message.MessageSender;
import net.lamgc.cgj.bot.message.MessageSource;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ConsoleMessageSender implements MessageSender {
private final static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
private final MessageSource source;
private final long id;
ConsoleMessageSender(MessageSource source, long id) {
this.source = source;
this.id = id;
}
@Override
public synchronized int sendMessage(String message) {
System.out.println(new Date() + " Bot: " + message);
System.out.println(dateFormat.format(new Date()) + " Bot -> " +
(source == MessageSource.PRIVATE ? "#" : "@") + id + ": " + message);
return 0;
}
}

View File

@ -6,10 +6,8 @@ import net.lamgc.cgj.bot.message.MessageSource;
public class ConsoleMessageSenderFactory implements MessageSenderFactory {
private final static ConsoleMessageSender sender = new ConsoleMessageSender();
@Override
public MessageSender createMessageSender(MessageSource source, long id) {
return sender;
return new ConsoleMessageSender(source, id);
}
}

View File

@ -26,13 +26,13 @@ public class SpringCQMessageEvent extends MessageEvent {
this.cq = Objects.requireNonNull(cq);
MessageSource source;
if(messageEvent instanceof CQGroupMessageEvent) {
source = MessageSource.Group;
source = MessageSource.GROUP;
} else if (messageEvent instanceof CQDiscussMessageEvent) {
source = MessageSource.Discuss;
source = MessageSource.DISCUSS;
} else {
source = MessageSource.Private;
source = MessageSource.PRIVATE;
}
messageSender = new SpringCQMessageSender(cq, source, source == MessageSource.Private ? getFromQQ() : getFromGroup());
messageSender = new SpringCQMessageSender(cq, source, source == MessageSource.PRIVATE ? getFromQQ() : getFromGroup());
}
@Override

View File

@ -19,11 +19,11 @@ public class SpringCQMessageSender implements MessageSender {
@Override
public int sendMessage(String message) {
switch (source) {
case Private:
case PRIVATE:
return coolQ.sendPrivateMsg(target, message, false).getData().getMessageId();
case Group:
case GROUP:
return coolQ.sendGroupMsg(target, message, false).getData().getMessageId();
case Discuss:
case DISCUSS:
return coolQ.sendDiscussMsg(target, message, false).getData().getMessageId();
default:
return -1;

View File

@ -28,9 +28,9 @@ public class MiraiMessageEvent extends net.lamgc.cgj.bot.event.MessageEvent {
message.getSender().getId(), getMessageBodyWithoutSource(message.getMessage().toString()));
this.messageObject = Objects.requireNonNull(message);
if(message instanceof GroupMessageEvent) {
messageSender = new MiraiMessageSender(((GroupMessageEvent) message).getGroup(), MessageSource.Group);
messageSender = new MiraiMessageSender(((GroupMessageEvent) message).getGroup(), MessageSource.GROUP);
} else {
messageSender = new MiraiMessageSender(message.getSender(), MessageSource.Private);
messageSender = new MiraiMessageSender(message.getSender(), MessageSource.PRIVATE);
}
}
@ -45,9 +45,9 @@ public class MiraiMessageEvent extends net.lamgc.cgj.bot.event.MessageEvent {
super(groupId, qqId, getMessageBodyWithoutSource(message.toString()));
this.messageObject = Objects.requireNonNull(messageObject, "messageObject is null");
if(groupId != 0) {
this.messageSender = new MiraiMessageSender(((GroupMessageEvent) messageObject).getGroup(), MessageSource.Group);
this.messageSender = new MiraiMessageSender(((GroupMessageEvent) messageObject).getGroup(), MessageSource.GROUP);
} else {
this.messageSender = new MiraiMessageSender(messageObject.getSender(), MessageSource.Group);
this.messageSender = new MiraiMessageSender(messageObject.getSender(), MessageSource.GROUP);
}
}

View File

@ -40,7 +40,7 @@ public class MiraiMessageSender implements MessageSender {
* @throws NoSuchElementException 当在机器人好友列表或群列表里没有这个好友或群的时候抛出
*/
public MiraiMessageSender(Bot bot, MessageSource source, long id) {
this(source == MessageSource.Private ? bot.getFriend(id) : bot.getGroup(id), source);
this(source == MessageSource.PRIVATE ? bot.getFriend(id) : bot.getGroup(id), source);
}
/**

View File

@ -7,17 +7,17 @@ public enum MessageSource {
/**
* 私聊消息
*/
Private,
PRIVATE,
/**
* 群组消息
*/
Group,
GROUP,
/**
* 讨论组消息
*/
Discuss,
DISCUSS,
/**
* 未知来源
*/
Unknown
UNKNOWN
}