mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2024-11-22 19:24:53 +08:00
添加了新的内联查询功能支持将 twitter 分享链接重新输出为 vxtwitter 分享链接同时去跟踪参数,将 ITelegramQuery 抽象层的要求返回从单个限定类别 queryUnit 改为 list<queryUnit<?>>
- 通过 tgapi.NamedUtils#inlineIds 规范化了 InlineQuery 的 id 定义 - 将 raw text 的 id 重新定义为规范化行为 - 将 my information 的 id 重新定义为规范化行为
This commit is contained in:
parent
e31dd6a0fb
commit
5bb19095c8
@ -1,6 +1,6 @@
|
||||
## Core
|
||||
|
||||
VERSION = 0.8.0.7
|
||||
VERSION = 0.8.0.8
|
||||
|
||||
CODENAME = putian
|
||||
|
||||
|
@ -4,7 +4,7 @@ package cc.sukazyo.cono.morny;
|
||||
* the final field that will be updated by gradle automatically.
|
||||
*/
|
||||
public class GradleProjectConfigures {
|
||||
public static final String VERSION = "0.8.0.7";
|
||||
public static final String VERSION = "0.8.0.8";
|
||||
public static final String CODENAME = "putian";
|
||||
public static final long COMPILE_TIMESTAMP = 1665827278036L;
|
||||
public static final long COMPILE_TIMESTAMP = 1665999835121L;
|
||||
}
|
||||
|
@ -4,11 +4,12 @@ import javax.annotation.Nullable;
|
||||
|
||||
import cc.sukazyo.cono.morny.bot.api.InlineQueryUnit;
|
||||
import com.pengrad.telegrambot.model.Update;
|
||||
import com.pengrad.telegrambot.model.request.InlineQueryResult;
|
||||
|
||||
public interface ITelegramQuery <T extends InlineQueryResult<T>> {
|
||||
import java.util.List;
|
||||
|
||||
public interface ITelegramQuery {
|
||||
|
||||
@Nullable
|
||||
InlineQueryUnit<T> query (Update event);
|
||||
List<InlineQueryUnit<?>> query (Update event);
|
||||
|
||||
}
|
||||
|
@ -9,19 +9,20 @@ import java.util.List;
|
||||
|
||||
public class MornyQueries {
|
||||
|
||||
private final List<ITelegramQuery<?>> queryInstances = new ArrayList<>();
|
||||
private final List<ITelegramQuery> queryInstances = new ArrayList<>();
|
||||
|
||||
public MornyQueries () {
|
||||
queryInstances.add(new RawText());
|
||||
queryInstances.add(new MyInformation());
|
||||
queryInstances.add(new ShareToolTwitter());
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public List<InlineQueryUnit<?>> query (@Nonnull Update event) {
|
||||
final List<InlineQueryUnit<?>> results = new ArrayList<>();
|
||||
for (ITelegramQuery<?> instance : queryInstances) {
|
||||
final InlineQueryUnit<?> r = instance.query(event);
|
||||
if (r!=null) results.add(r);
|
||||
for (ITelegramQuery instance : queryInstances) {
|
||||
final List<InlineQueryUnit<?>> r = instance.query(event);
|
||||
if (r!=null) results.addAll(r);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
@ -10,21 +10,26 @@ import com.pengrad.telegrambot.model.request.ParseMode;
|
||||
|
||||
import cc.sukazyo.cono.morny.util.tgapi.formatting.TelegramUserInformation;
|
||||
|
||||
public class MyInformation implements ITelegramQuery<InlineQueryResultArticle> {
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static cc.sukazyo.cono.morny.util.tgapi.formatting.NamedUtils.inlineIds;
|
||||
|
||||
public class MyInformation implements ITelegramQuery {
|
||||
|
||||
public static final String ID_PREFIX = "[morny/info/me]";
|
||||
public static final String TITLE = "My Account Information";
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public InlineQueryUnit<InlineQueryResultArticle> query(Update event) {
|
||||
public List<InlineQueryUnit<?>> query(Update event) {
|
||||
if (!(event.inlineQuery().query() == null || "".equals(event.inlineQuery().query()))) return null;
|
||||
return new InlineQueryUnit<>(new InlineQueryResultArticle(
|
||||
ID_PREFIX, TITLE,
|
||||
return Collections.singletonList(new InlineQueryUnit<>(new InlineQueryResultArticle(
|
||||
inlineIds(ID_PREFIX), TITLE,
|
||||
new InputTextMessageContent(
|
||||
TelegramUserInformation.informationOutputHTML(event.inlineQuery().from())
|
||||
).parseMode(ParseMode.HTML)
|
||||
)).isPersonal(true).cacheTime(10);
|
||||
)).isPersonal(true).cacheTime(10));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,23 +8,24 @@ import com.pengrad.telegrambot.model.Update;
|
||||
import com.pengrad.telegrambot.model.request.InlineQueryResultArticle;
|
||||
import com.pengrad.telegrambot.model.request.InputTextMessageContent;
|
||||
|
||||
import static cc.sukazyo.cono.morny.util.CommonConvert.byteArrayToHex;
|
||||
import static cc.sukazyo.cono.morny.util.CommonEncrypt.hashMd5;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class RawText implements ITelegramQuery<InlineQueryResultArticle> {
|
||||
import static cc.sukazyo.cono.morny.util.tgapi.formatting.NamedUtils.inlineIds;
|
||||
|
||||
public class RawText implements ITelegramQuery {
|
||||
|
||||
public static final String ID_PREFIX = "[morny/r/text]";
|
||||
public static final String TITLE = "Raw Text";
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public InlineQueryUnit<InlineQueryResultArticle> query (Update event) {
|
||||
public List<InlineQueryUnit<?>> query (Update event) {
|
||||
if (event.inlineQuery().query() == null || "".equals(event.inlineQuery().query())) return null;
|
||||
return new InlineQueryUnit<>(new InlineQueryResultArticle(
|
||||
ID_PREFIX + byteArrayToHex(hashMd5(event.inlineQuery().query())),
|
||||
TITLE,
|
||||
return Collections.singletonList(new InlineQueryUnit<>(new InlineQueryResultArticle(
|
||||
inlineIds(ID_PREFIX, event.inlineQuery().query()), TITLE,
|
||||
new InputTextMessageContent(event.inlineQuery().query())
|
||||
));
|
||||
)));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,50 @@
|
||||
package cc.sukazyo.cono.morny.bot.query;
|
||||
|
||||
import cc.sukazyo.cono.morny.bot.api.InlineQueryUnit;
|
||||
import com.pengrad.telegrambot.model.Update;
|
||||
import com.pengrad.telegrambot.model.request.InlineQueryResultArticle;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static cc.sukazyo.cono.morny.util.tgapi.formatting.NamedUtils.inlineIds;
|
||||
|
||||
public class ShareToolTwitter implements ITelegramQuery {
|
||||
|
||||
public static final String TITLE_VX = "[tweet] Share as VxTwitter";
|
||||
public static final String TITLE_VX_COMBINED = "[tweet] Share as VxTwitter(combination)";
|
||||
public static final String ID_PREFIX_VX = "[morny/share/twitter/vxtwi]";
|
||||
public static final String ID_PREFIX_VX_COMBINED = "[morny/share/twitter/vxtwi_combine]";
|
||||
|
||||
public static final Pattern REGEX_TWEET_LINK = Pattern.compile(
|
||||
"^(?:https?://)?((?:(?:c\\.)?vx|fx|www\\.)?twitter\\.com)/((\\w+)/status/(\\d+)(?:/photo/(\\d+))?)/?(\\?[\\w&=-]+)?$");
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<InlineQueryUnit<?>> query (@Nonnull Update event) {
|
||||
if (event.inlineQuery().query() == null) return null;
|
||||
final Matcher regex = REGEX_TWEET_LINK.matcher(event.inlineQuery().query());
|
||||
if (regex.matches()) {
|
||||
|
||||
List<InlineQueryUnit<?>> result = new ArrayList<>();
|
||||
|
||||
result.add(new InlineQueryUnit<>(new InlineQueryResultArticle(
|
||||
inlineIds(ID_PREFIX_VX+event.inlineQuery().query()), TITLE_VX,
|
||||
String.format("https://vxtwitter.com/%s", regex.group(2))
|
||||
)));
|
||||
result.add(new InlineQueryUnit<>(new InlineQueryResultArticle(
|
||||
inlineIds(ID_PREFIX_VX_COMBINED+event.inlineQuery().query()), TITLE_VX_COMBINED,
|
||||
String.format("https://c.vxtwitter.com/%s", regex.group(2))
|
||||
)));
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package cc.sukazyo.cono.morny.util.tgapi.formatting;
|
||||
|
||||
import cc.sukazyo.cono.morny.util.CommonConvert;
|
||||
import cc.sukazyo.cono.morny.util.CommonEncrypt;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class NamedUtils {
|
||||
|
||||
public static String inlineIds (@Nonnull String tag) {
|
||||
return inlineIds(tag, "");
|
||||
}
|
||||
|
||||
public static String inlineIds (@Nonnull String tag, @Nonnull String taggedData) {
|
||||
return CommonConvert.byteArrayToHex(CommonEncrypt.hashMd5(tag+taggedData));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user