#30 使 SlashAction 的回执支持频道身份的名称

- 但由于API限制,链接无法导向至频道
This commit is contained in:
A.C.Sukazyo Eyre 2022-05-06 11:27:34 +08:00
parent b252b3de51
commit b5941494f6
Signed by: Eyre_S
GPG Key ID: EFB47D98FE082FAD
4 changed files with 41 additions and 10 deletions

View File

@ -1,6 +1,6 @@
## Core ## Core
VERSION = 0.6.3.1 VERSION = 0.6.3.2
# dependencies # dependencies

View File

@ -4,6 +4,6 @@ package cc.sukazyo.cono.morny;
* the final field that will be updated by gradle automatically. * the final field that will be updated by gradle automatically.
*/ */
public class GradleProjectConfigures { public class GradleProjectConfigures {
public static final String VERSION = "0.6.3.0"; public static final String VERSION = "0.6.3.2";
public static final long COMPILE_TIMESTAMP = 1651804975121L; public static final long COMPILE_TIMESTAMP = 1651806802187L;
} }

View File

@ -2,12 +2,13 @@ package cc.sukazyo.cono.morny.bot.event;
import cc.sukazyo.cono.morny.MornyCoeur; import cc.sukazyo.cono.morny.MornyCoeur;
import cc.sukazyo.cono.morny.bot.api.EventListener; import cc.sukazyo.cono.morny.bot.api.EventListener;
import cc.sukazyo.cono.morny.util.tgapi.TGToStringFromMessage;
import cc.sukazyo.untitled.telegram.api.formatting.TGToString; import cc.sukazyo.untitled.telegram.api.formatting.TGToString;
import cc.sukazyo.untitled.util.command.CommonCommand; import cc.sukazyo.untitled.util.command.CommonCommand;
import cc.sukazyo.untitled.util.string.StringArrays; import cc.sukazyo.untitled.util.string.StringArrays;
import com.pengrad.telegrambot.model.Message;
import com.pengrad.telegrambot.model.Update; import com.pengrad.telegrambot.model.Update;
import com.pengrad.telegrambot.model.User;
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;
@ -55,22 +56,22 @@ public class OnUserSlashAction extends EventListener {
hasObject ? hasObject ?
StringArrays.connectStringArray(action, " ", isHardParse?2:1, action.length-1) : StringArrays.connectStringArray(action, " ", isHardParse?2:1, action.length-1) :
""; "";
final User origin = event.message().from(); final Message origin = event.message();
final User target = (event.message().replyToMessage() == null ? ( final Message target = (event.message().replyToMessage() == null ? (
origin origin
): ( ): (
event.message().replyToMessage().from() event.message().replyToMessage()
)); ));
MornyCoeur.extra().exec(new SendMessage( MornyCoeur.extra().exec(new SendMessage(
event.message().chat().id(), event.message().chat().id(),
String.format( String.format(
"%s %s%s %s %s!", "%s %s%s %s %s!",
TGToString.as(origin).firstnameRefHtml(), TGToStringFromMessage.as(origin).getSenderFirstNameRefHtml(),
escapeHtml(verb), escapeHtml((hasObject?"":"")), escapeHtml(verb), escapeHtml((hasObject?"":"")),
origin==target ? origin==target ?
"<a href='tg://user?id="+target.id()+"'>自己</a>" : "<a href='tg://user?id="+TGToStringFromMessage.as(target).getSenderId()+"'>自己</a>" :
TGToString.as(target).firstnameRefHtml(), TGToStringFromMessage.as(target).getSenderFirstNameRefHtml(),
escapeHtml(hasObject ? object+" " : "") escapeHtml(hasObject ? object+" " : "")
) )
).parseMode(ParseMode.HTML).replyToMessageId(event.message().messageId())); ).parseMode(ParseMode.HTML).replyToMessageId(event.message().messageId()));

View File

@ -0,0 +1,30 @@
package cc.sukazyo.cono.morny.util.tgapi;
import cc.sukazyo.untitled.telegram.api.formatting.TGToString;
import cc.sukazyo.untitled.util.telegram.formatting.MsgEscape;
import com.pengrad.telegrambot.model.Message;
import javax.annotation.Nonnull;
public class TGToStringFromMessage extends TGToString {
@Nonnull
private final Message message;
public TGToStringFromMessage (@Nonnull Message message) { this.message = message; }
public static TGToStringFromMessage as (@Nonnull Message message) { return new TGToStringFromMessage(message); }
@Nonnull
public String getSenderFirstNameRefHtml () {
return message.senderChat()==null ? TGToString.as(message.from()).firstnameRefHtml() : String.format(
"<a href='tg://user?id=%d'>%s</a>",
message.senderChat().id(),
MsgEscape.escapeHtml(message.senderChat().title())
);
}
public long getSenderId () {
return message.senderChat()==null ? message.from().id() : message.senderChat().id();
}
}