mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2024-11-23 03:27:39 +08:00
Merge tag '0.3.3@mvn' into release
This commit is contained in:
commit
85bc22ea91
17
build.gradle
17
build.gradle
@ -6,7 +6,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'cc.sukazyo'
|
group 'cc.sukazyo'
|
||||||
version '0.3.0'
|
version '0.3.3'
|
||||||
project.ext.archiveBaseName = 'Coeur_Morny_Cono'
|
project.ext.archiveBaseName = 'Coeur_Morny_Cono'
|
||||||
project.ext.artifactId = 'morny-coeur'
|
project.ext.artifactId = 'morny-coeur'
|
||||||
mainClassName = 'cc.sukazyo.cono.morny.MornyCoeur'
|
mainClassName = 'cc.sukazyo.cono.morny.MornyCoeur'
|
||||||
@ -24,6 +24,12 @@ dependencies {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compileJava.doFirst {
|
||||||
|
ant.replaceregexp(match:'VERSION = ["a-zA-Z0-9.\\-_+@]+;', replace:"VERSION = \"$project.version\";", flags:'g', byline:true) {
|
||||||
|
fileset(dir: 'src/main/java/cc/sukazyo/cono/morny', includes: 'MornySystem.java')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
test {
|
test {
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
@ -46,15 +52,6 @@ tasks.test {
|
|||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.github.johnrengelman.shadow'
|
|
||||||
apply plugin: 'application'
|
|
||||||
|
|
||||||
shadowJar {
|
|
||||||
archiveBaseName.set("${project.ext.archiveBaseName}")
|
|
||||||
archiveVersion.set("${project.version}")
|
|
||||||
archiveClassifier.set("fat")
|
|
||||||
}
|
|
||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
archiveBaseName.set("${project.ext.archiveBaseName}")
|
archiveBaseName.set("${project.ext.archiveBaseName}")
|
||||||
archiveVersion.set("${project.version}")
|
archiveVersion.set("${project.version}")
|
||||||
|
@ -15,7 +15,10 @@ public class MornyCoeur {
|
|||||||
|
|
||||||
public static void main (String[] args) {
|
public static void main (String[] args) {
|
||||||
|
|
||||||
logger.info(MornyHello.MORNY_PREVIEW_IMAGE_ASCII);
|
if (!(args.length > 1 && "--no-hello".equals(args[1])))
|
||||||
|
logger.info(MornyHello.MORNY_PREVIEW_IMAGE_ASCII);
|
||||||
|
if (args.length > 1 && "--only-hello".equals(args[1]))
|
||||||
|
return;
|
||||||
logger.info("System Starting");
|
logger.info("System Starting");
|
||||||
|
|
||||||
configureSafeExit();
|
configureSafeExit();
|
||||||
|
@ -6,7 +6,7 @@ import java.net.URISyntaxException;
|
|||||||
|
|
||||||
public class MornySystem {
|
public class MornySystem {
|
||||||
|
|
||||||
public static final String VERSION = "0.3.0";
|
public static final String VERSION = "0.3.3";
|
||||||
|
|
||||||
public static String getJarMd5() {
|
public static String getJarMd5() {
|
||||||
try {
|
try {
|
||||||
|
@ -6,11 +6,13 @@ public class EventListeners {
|
|||||||
|
|
||||||
public static final OnCommandExecute COMMANDS_LISTENER = new OnCommandExecute();
|
public static final OnCommandExecute COMMANDS_LISTENER = new OnCommandExecute();
|
||||||
public static final OnActivityRecord ACTIVITY_RECORDER = new OnActivityRecord();
|
public static final OnActivityRecord ACTIVITY_RECORDER = new OnActivityRecord();
|
||||||
|
public static final OnUserSlashAction USER_SLASH_ACTION = new OnUserSlashAction();
|
||||||
|
|
||||||
public static void registerAllListeners () {
|
public static void registerAllListeners () {
|
||||||
EventListenerManager.addListener(
|
EventListenerManager.addListener(
|
||||||
ACTIVITY_RECORDER,
|
ACTIVITY_RECORDER,
|
||||||
COMMANDS_LISTENER
|
COMMANDS_LISTENER,
|
||||||
|
USER_SLASH_ACTION
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@ import cc.sukazyo.cono.morny.MornyCoeur;
|
|||||||
import cc.sukazyo.cono.morny.MornySystem;
|
import cc.sukazyo.cono.morny.MornySystem;
|
||||||
import cc.sukazyo.cono.morny.MornyTrusted;
|
import cc.sukazyo.cono.morny.MornyTrusted;
|
||||||
import cc.sukazyo.cono.morny.bot.api.EventListener;
|
import cc.sukazyo.cono.morny.bot.api.EventListener;
|
||||||
|
import cc.sukazyo.cono.morny.bot.event.on_commands.GetUsernameAndId;
|
||||||
|
import cc.sukazyo.cono.morny.util.StringUtils;
|
||||||
import com.pengrad.telegrambot.model.Update;
|
import com.pengrad.telegrambot.model.Update;
|
||||||
import com.pengrad.telegrambot.model.request.ParseMode;
|
import com.pengrad.telegrambot.model.request.ParseMode;
|
||||||
import com.pengrad.telegrambot.request.SendMessage;
|
import com.pengrad.telegrambot.request.SendMessage;
|
||||||
@ -23,7 +25,13 @@ public class OnCommandExecute extends EventListener {
|
|||||||
if (event.message().text() == null) {
|
if (event.message().text() == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
switch (event.message().text()) {
|
String[] command = StringUtils.formatCommand(event.message().text());
|
||||||
|
if (command.length == 0) return false;
|
||||||
|
switch (command[0]) {
|
||||||
|
case "/user":
|
||||||
|
case "/user@" + MornyCoeur.USERNAME:
|
||||||
|
GetUsernameAndId.exec(command, event);
|
||||||
|
break;
|
||||||
case "/o":
|
case "/o":
|
||||||
case "/o@" + MornyCoeur.USERNAME:
|
case "/o@" + MornyCoeur.USERNAME:
|
||||||
onCommandOnExec(event);
|
onCommandOnExec(event);
|
||||||
@ -94,7 +102,7 @@ public class OnCommandExecute extends EventListener {
|
|||||||
MornySystem.VERSION,
|
MornySystem.VERSION,
|
||||||
MornySystem.getJarMd5()
|
MornySystem.getJarMd5()
|
||||||
)
|
)
|
||||||
).parseMode(ParseMode.HTML));
|
).replyToMessageId(event.message().messageId()).parseMode(ParseMode.HTML));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
package cc.sukazyo.cono.morny.bot.event;
|
||||||
|
|
||||||
|
import cc.sukazyo.cono.morny.MornyCoeur;
|
||||||
|
import cc.sukazyo.cono.morny.bot.api.EventListener;
|
||||||
|
import cc.sukazyo.cono.morny.util.StringUtils;
|
||||||
|
import com.pengrad.telegrambot.model.Update;
|
||||||
|
import com.pengrad.telegrambot.model.User;
|
||||||
|
import com.pengrad.telegrambot.model.request.ParseMode;
|
||||||
|
import com.pengrad.telegrambot.request.SendMessage;
|
||||||
|
|
||||||
|
public class OnUserSlashAction extends EventListener {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMessage (Update event) {
|
||||||
|
String text = event.message().text();
|
||||||
|
if (text == null) return false;
|
||||||
|
|
||||||
|
if (text.startsWith("/")) {
|
||||||
|
int prefixLength = 1;
|
||||||
|
boolean useVerbSuffix = true;
|
||||||
|
boolean useObjectPrefix = true;
|
||||||
|
if (text.startsWith("//#") || text.startsWith("///")) {
|
||||||
|
useVerbSuffix = false;
|
||||||
|
useObjectPrefix = false;
|
||||||
|
prefixLength = 3;
|
||||||
|
} else if (text.startsWith("/#")) {
|
||||||
|
useObjectPrefix = false;
|
||||||
|
prefixLength = 2;
|
||||||
|
} else if (text.startsWith("//")) {
|
||||||
|
useVerbSuffix = false;
|
||||||
|
prefixLength = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] action = StringUtils.formatCommand(text.substring(prefixLength));
|
||||||
|
String verb = action[0];
|
||||||
|
boolean hasObject = action.length != 1;
|
||||||
|
String object = StringUtils.connectStringArray(action, " ", 1, action.length-1);
|
||||||
|
User origin = event.message().from();
|
||||||
|
User target = (event.message().replyToMessage() == null ? (
|
||||||
|
origin
|
||||||
|
): (
|
||||||
|
event.message().replyToMessage().from()
|
||||||
|
));
|
||||||
|
|
||||||
|
MornyCoeur.getAccount().execute(new SendMessage(
|
||||||
|
event.message().chat().id(),
|
||||||
|
String.format(
|
||||||
|
"<a href='tg://user?id=%d'>%s</a> %s%s <a href='tg://user?id=%d'>%s</a>%s%s",
|
||||||
|
origin.id(), origin.firstName(),
|
||||||
|
verb, (useVerbSuffix?"了":""),
|
||||||
|
target.id(), (origin==target ? "自己" : target.firstName()),
|
||||||
|
(hasObject ? (useObjectPrefix ?" 的": " ") : ""),
|
||||||
|
(hasObject ? object : "")
|
||||||
|
)
|
||||||
|
).parseMode(ParseMode.HTML));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,100 @@
|
|||||||
|
package cc.sukazyo.cono.morny.bot.event.on_commands;
|
||||||
|
|
||||||
|
import cc.sukazyo.cono.morny.MornyCoeur;
|
||||||
|
import com.pengrad.telegrambot.model.Update;
|
||||||
|
import com.pengrad.telegrambot.model.User;
|
||||||
|
import com.pengrad.telegrambot.model.request.ParseMode;
|
||||||
|
import com.pengrad.telegrambot.request.GetChatMember;
|
||||||
|
import com.pengrad.telegrambot.request.SendMessage;
|
||||||
|
import com.pengrad.telegrambot.response.GetChatMemberResponse;
|
||||||
|
|
||||||
|
public class GetUsernameAndId {
|
||||||
|
|
||||||
|
public static void exec (String[] command, Update event) {
|
||||||
|
|
||||||
|
if (command.length > 2) { MornyCoeur.getAccount().execute(new SendMessage(
|
||||||
|
event.message().chat().id(),
|
||||||
|
"[Unavailable] Too much arguments."
|
||||||
|
).replyToMessageId(event.message().messageId())); return; }
|
||||||
|
|
||||||
|
long userId = 0;
|
||||||
|
|
||||||
|
if ( event.message().replyToMessage()!= null) {
|
||||||
|
userId = event.message().replyToMessage().from().id();
|
||||||
|
}
|
||||||
|
if (command.length > 1) {
|
||||||
|
try {
|
||||||
|
userId = Long.parseLong(command[1]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
MornyCoeur.getAccount().execute(new SendMessage(
|
||||||
|
event.message().chat().id(),
|
||||||
|
"[Unavailable] " + e.getMessage()
|
||||||
|
).replyToMessageId(event.message().messageId()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userId == 0) {
|
||||||
|
MornyCoeur.getAccount().execute(new SendMessage(
|
||||||
|
event.message().chat().id(),
|
||||||
|
"[Unavailable] no userid given."
|
||||||
|
).replyToMessageId(event.message().messageId()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetChatMemberResponse response = MornyCoeur.getAccount().execute(
|
||||||
|
new GetChatMember(event.message().chat().id(), userId)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (response.chatMember() == null) {
|
||||||
|
MornyCoeur.getAccount().execute(new SendMessage(
|
||||||
|
event.message().chat().id(),
|
||||||
|
"[Unavailable] user not found."
|
||||||
|
).replyToMessageId(event.message().messageId()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
User user = response.chatMember().user();
|
||||||
|
|
||||||
|
StringBuilder userInformation = new StringBuilder();
|
||||||
|
userInformation.append(String.format(
|
||||||
|
"userid :\n" +
|
||||||
|
"- <code>%d</code>\n" +
|
||||||
|
"username :\n" +
|
||||||
|
"- <code>%s</code>",
|
||||||
|
userId, user.username()
|
||||||
|
));
|
||||||
|
if (user.firstName() == null) {
|
||||||
|
userInformation.append("\nfirstname : <u>null</u>");
|
||||||
|
} else {
|
||||||
|
userInformation.append(String.format(
|
||||||
|
"\nfirstname :\n" +
|
||||||
|
"- <code>%s</code>",
|
||||||
|
user.firstName()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
if (user.lastName() == null) {
|
||||||
|
userInformation.append("\nlastname : <u>null</u>");
|
||||||
|
} else {
|
||||||
|
userInformation.append(String.format(
|
||||||
|
"\nlastname :\n" +
|
||||||
|
"- <code>%s</code>",
|
||||||
|
user.lastName()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
if (user.languageCode() != null) {
|
||||||
|
userInformation.append(String.format(
|
||||||
|
"\nlanguage-code :\n" +
|
||||||
|
"- <code>%s</code>",
|
||||||
|
user.languageCode()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
MornyCoeur.getAccount().execute(new SendMessage(
|
||||||
|
event.message().chat().id(),
|
||||||
|
userInformation.toString()
|
||||||
|
).replyToMessageId(event.message().messageId()).parseMode(ParseMode.HTML));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package cc.sukazyo.cono.morny.util;
|
package cc.sukazyo.cono.morny.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class StringUtils {
|
public class StringUtils {
|
||||||
@ -10,4 +11,52 @@ public class StringUtils {
|
|||||||
return new String(chars);
|
return new String(chars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String[] formatCommand (String com) {
|
||||||
|
|
||||||
|
ArrayList<String> arr = new ArrayList<>();
|
||||||
|
|
||||||
|
StringBuilder tmp = new StringBuilder();
|
||||||
|
char[] coma = com.toCharArray();
|
||||||
|
for (int i = 0; i < coma.length; i++) {
|
||||||
|
if (coma[i] == ' ') {
|
||||||
|
if (!tmp.toString().equals("")) { arr.add(tmp.toString()); }
|
||||||
|
tmp.setLength(0);
|
||||||
|
} else if (coma[i] == '"') {
|
||||||
|
while (true) {
|
||||||
|
i++;
|
||||||
|
if (coma[i] == '"') {
|
||||||
|
break;
|
||||||
|
} else if (coma[i] == '\\' && (coma[i+1] == '"' || coma[i+1] == '\\')) {
|
||||||
|
i++;
|
||||||
|
tmp.append(coma[i]);
|
||||||
|
} else {
|
||||||
|
tmp.append(coma[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (coma[i] == '\\' && (coma[i+1] == ' ' || coma[i+1] == '"' || coma[i+1] == '\\')) {
|
||||||
|
i++;
|
||||||
|
tmp.append(coma[i]);
|
||||||
|
} else {
|
||||||
|
tmp.append(coma[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!tmp.toString().equals("")) { arr.add(tmp.toString()); }
|
||||||
|
tmp.setLength(0);
|
||||||
|
|
||||||
|
String[] out = new String[arr.size()];
|
||||||
|
arr.toArray(out);
|
||||||
|
return out;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String connectStringArray (String[] array, String connector, int startIndex, int stopIndex) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = startIndex; i < stopIndex; i++) {
|
||||||
|
builder.append(array[i]);
|
||||||
|
builder.append(connector);
|
||||||
|
}
|
||||||
|
builder.append(array[stopIndex]);
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user