mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2024-11-22 11:14:55 +08:00
bug fix for scala port
This commit is contained in:
parent
a8b7562b51
commit
6e82227447
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@
|
|||||||
#build
|
#build
|
||||||
/build/
|
/build/
|
||||||
/bin/
|
/bin/
|
||||||
|
/out/
|
||||||
.metals/
|
.metals/
|
||||||
.bloop/
|
.bloop/
|
||||||
.project
|
.project
|
||||||
|
@ -5,7 +5,7 @@ MORNY_ARCHIVE_NAME = morny-coeur
|
|||||||
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
|
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
|
||||||
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s
|
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s
|
||||||
|
|
||||||
VERSION = 1.0.0-RC4
|
VERSION = 1.0.0-RC5
|
||||||
|
|
||||||
USE_DELTA = true
|
USE_DELTA = true
|
||||||
VERSION_DELTA = scalaport4
|
VERSION_DELTA = scalaport4
|
||||||
|
@ -17,6 +17,7 @@ object MornySystem {
|
|||||||
@BuildConfigField val VERSION_DELTA: String = BuildConfig.VERSION_DELTA
|
@BuildConfigField val VERSION_DELTA: String = BuildConfig.VERSION_DELTA
|
||||||
@BuildConfigField val CODENAME: String = BuildConfig.CODENAME
|
@BuildConfigField val CODENAME: String = BuildConfig.CODENAME
|
||||||
@BuildConfigField val CODE_STORE: String = BuildConfig.CODE_STORE
|
@BuildConfigField val CODE_STORE: String = BuildConfig.CODE_STORE
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
@BuildConfigField val COMMIT_PATH: String = BuildConfig.COMMIT_PATH
|
@BuildConfigField val COMMIT_PATH: String = BuildConfig.COMMIT_PATH
|
||||||
|
|
||||||
@BuildConfigField
|
@BuildConfigField
|
||||||
|
@ -25,6 +25,10 @@ object DirectMsgClear extends ISimpleCommand {
|
|||||||
logger trace "message is not outdated(48 hrs ago)"
|
logger trace "message is not outdated(48 hrs ago)"
|
||||||
|
|
||||||
val isTrusted = MornyCoeur.trusted isTrusted event.message.from.id
|
val isTrusted = MornyCoeur.trusted isTrusted event.message.from.id
|
||||||
|
// todo:
|
||||||
|
// it does not work. due to the Telegram Bot API doesn't provide
|
||||||
|
// nested replyToMessage, so currently the trusted check by
|
||||||
|
// replyToMessage.replyToMessage will not work!
|
||||||
def _isReplyTrusted: Boolean =
|
def _isReplyTrusted: Boolean =
|
||||||
if (event.message.replyToMessage.replyToMessage == null) false
|
if (event.message.replyToMessage.replyToMessage == null) false
|
||||||
else if (event.message.replyToMessage.replyToMessage.from.id == event.message.from.id) true
|
else if (event.message.replyToMessage.replyToMessage.from.id == event.message.from.id) true
|
||||||
|
@ -14,6 +14,7 @@ import java.net.InetAddress
|
|||||||
import java.rmi.UnknownHostException
|
import java.rmi.UnknownHostException
|
||||||
import scala.language.postfixOps
|
import scala.language.postfixOps
|
||||||
|
|
||||||
|
// todo: maybe move some utils method outside
|
||||||
object MornyInformation extends ITelegramCommand {
|
object MornyInformation extends ITelegramCommand {
|
||||||
|
|
||||||
private case object Subs {
|
private case object Subs {
|
||||||
@ -46,6 +47,7 @@ object MornyInformation extends ITelegramCommand {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def getVersionGitTagHTML: String = {
|
def getVersionGitTagHTML: String = {
|
||||||
if (!MornySystem.isGitBuild) return ""
|
if (!MornySystem.isGitBuild) return ""
|
||||||
val g = StringBuilder()
|
val g = StringBuilder()
|
||||||
@ -61,11 +63,12 @@ object MornyInformation extends ITelegramCommand {
|
|||||||
val v = StringBuilder()
|
val v = StringBuilder()
|
||||||
v ++= s"<code>${MornySystem VERSION_BASE}</code>"
|
v ++= s"<code>${MornySystem VERSION_BASE}</code>"
|
||||||
if (MornySystem isUseDelta) v++=s"-δ<code>${MornySystem VERSION_DELTA}</code>"
|
if (MornySystem isUseDelta) v++=s"-δ<code>${MornySystem VERSION_DELTA}</code>"
|
||||||
if (MornySystem isGitBuild) v++="+"++=getVersionGitTagHTML
|
if (MornySystem isGitBuild) v++="+git."++=getVersionGitTagHTML
|
||||||
v ++= s"*<code>${MornySystem.CODENAME toUpperCase}</code>"
|
v ++= s"*<code>${MornySystem.CODENAME toUpperCase}</code>"
|
||||||
v toString
|
v toString
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def getRuntimeHostname: String|Null = {
|
def getRuntimeHostname: String|Null = {
|
||||||
try InetAddress.getLocalHost.getHostName
|
try InetAddress.getLocalHost.getHostName
|
||||||
catch case _:UnknownHostException => null
|
catch case _:UnknownHostException => null
|
||||||
@ -154,13 +157,13 @@ object MornyInformation extends ITelegramCommand {
|
|||||||
event.message.chat.id,
|
event.message.chat.id,
|
||||||
/* language=html */
|
/* language=html */
|
||||||
s"""system:
|
s"""system:
|
||||||
|- Morny <code>${h(if (getRuntimeHostname == null) "<unknown-host>" else getRuntimeHostname)}</code>
|
|- <code>${h(if (getRuntimeHostname == null) "<unknown-host>" else getRuntimeHostname)}</code>
|
||||||
|- <code>${h(sysprop("os.name"))}</code> <code>${h(sysprop("os.arch"))}</code> <code>${h(sysprop("os.version"))}</code>
|
|- <code>${h(sysprop("os.name"))}</code> <code>${h(sysprop("os.arch"))}</code> <code>${h(sysprop("os.version"))}</code>
|
||||||
|java runtime:
|
|java runtime:
|
||||||
|- <code>${h(sysprop("java.vm.vendor"))}.${h(sysprop("java.vm.name"))}</code>
|
|- <code>${h(sysprop("java.vm.vendor"))}.${h(sysprop("java.vm.name"))}</code>
|
||||||
|- <code>${h(sysprop("java.vm.version"))}</code>
|
|- <code>${h(sysprop("java.vm.version"))}</code>
|
||||||
|vm memory:
|
|vm memory:
|
||||||
|- <code>${Runtime.getRuntime.totalMemory/1024/1024}</code> / <code>${Runtime.getRuntime.maxMemory/1024/1024}</code>
|
|- <code>${Runtime.getRuntime.totalMemory/1024/1024}</code> / <code>${Runtime.getRuntime.maxMemory/1024/1024}</code> MB
|
||||||
|- <code>${Runtime.getRuntime.availableProcessors}</code> cores
|
|- <code>${Runtime.getRuntime.availableProcessors}</code> cores
|
||||||
|coeur version:
|
|coeur version:
|
||||||
|- $getVersionAllFullTagHTML
|
|- $getVersionAllFullTagHTML
|
||||||
|
@ -28,7 +28,7 @@ object MornyOldJrrp extends ITelegramCommand {
|
|||||||
MornyCoeur.extra exec SendMessage(
|
MornyCoeur.extra exec SendMessage(
|
||||||
event.message.chat.id,
|
event.message.chat.id,
|
||||||
// language=html
|
// language=html
|
||||||
f"${user.fullnameRefHTML} 在(utc的)今天的运气指数是———— <code>$jrrp%.2f%%</code>${h(ending)}"
|
f"${user.fullnameRefHTML} 在(utc的)今天的运气指数是———— <code>$jrrp%.2f%%</code> ${h(ending)}"
|
||||||
).replyToMessageId(event.message.messageId).parseMode(ParseMode HTML)
|
).replyToMessageId(event.message.messageId).parseMode(ParseMode HTML)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,10 +25,10 @@ object Nbnhhsh extends ITelegramCommand {
|
|||||||
override def execute (using command: InputCommand, event: Update): Unit = {
|
override def execute (using command: InputCommand, event: Update): Unit = {
|
||||||
|
|
||||||
val queryTarget: String|Null =
|
val queryTarget: String|Null =
|
||||||
if (event.message.replyToMessage != null && event.message.replyToMessage.text != null)
|
if command.args nonEmpty then
|
||||||
event.message.replyToMessage.text
|
|
||||||
else if command.args nonEmpty then
|
|
||||||
command.args mkString " "
|
command.args mkString " "
|
||||||
|
else if (event.message.replyToMessage != null && event.message.replyToMessage.text != null)
|
||||||
|
event.message.replyToMessage.text
|
||||||
else null
|
else null
|
||||||
|
|
||||||
if (queryTarget == null)
|
if (queryTarget == null)
|
||||||
|
@ -3,15 +3,15 @@ package cc.sukazyo.cono.morny.bot.command
|
|||||||
import cc.sukazyo.cono.morny.MornyCoeur
|
import cc.sukazyo.cono.morny.MornyCoeur
|
||||||
import cc.sukazyo.cono.morny.data.TelegramStickers
|
import cc.sukazyo.cono.morny.data.TelegramStickers
|
||||||
import cc.sukazyo.cono.morny.util.tgapi.InputCommand
|
import cc.sukazyo.cono.morny.util.tgapi.InputCommand
|
||||||
import com.pengrad.telegrambot.model.request.ParseMode
|
|
||||||
import com.pengrad.telegrambot.model.{Message, Update}
|
import com.pengrad.telegrambot.model.{Message, Update}
|
||||||
|
import com.pengrad.telegrambot.model.request.ParseMode
|
||||||
import com.pengrad.telegrambot.request.{SendMessage, SendSticker}
|
import com.pengrad.telegrambot.request.{SendMessage, SendSticker}
|
||||||
|
|
||||||
import javax.swing.text.html.HTML
|
import javax.swing.text.html.HTML
|
||||||
import scala.annotation.unused
|
import scala.annotation.unused
|
||||||
import scala.language.postfixOps
|
import scala.language.postfixOps
|
||||||
|
|
||||||
@SuppressWarnings(Array("NonAsciiCharacters"))
|
//noinspection NonAsciiCharacters
|
||||||
object 喵呜 {
|
object 喵呜 {
|
||||||
|
|
||||||
object 抱抱 extends ISimpleCommand {
|
object 抱抱 extends ISimpleCommand {
|
||||||
@ -56,7 +56,7 @@ object 喵呜 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private def replyingSet (whileRec: String, whileNew: String)(using event: Update): Unit = {
|
private def replyingSet (whileRec: String, whileNew: String)(using event: Update): Unit = {
|
||||||
val isNew = event.message.replyToMessage == null;
|
val isNew = event.message.replyToMessage == null
|
||||||
val target = if (isNew) event.message else event.message.replyToMessage
|
val target = if (isNew) event.message else event.message.replyToMessage
|
||||||
MornyCoeur.extra exec new SendMessage(
|
MornyCoeur.extra exec new SendMessage(
|
||||||
event.message.chat.id,
|
event.message.chat.id,
|
||||||
|
@ -7,6 +7,7 @@ import cc.sukazyo.cono.morny.util.UseRandom.*
|
|||||||
import com.pengrad.telegrambot.model.Update
|
import com.pengrad.telegrambot.model.Update
|
||||||
import com.pengrad.telegrambot.request.SendMessage
|
import com.pengrad.telegrambot.request.SendMessage
|
||||||
|
|
||||||
|
//noinspection NonAsciiCharacters
|
||||||
object 私わね extends ISimpleCommand {
|
object 私わね extends ISimpleCommand {
|
||||||
|
|
||||||
override val name: String = "me"
|
override val name: String = "me"
|
||||||
|
@ -52,6 +52,8 @@ object OnCallMe extends EventListener {
|
|||||||
var isAllowed = false
|
var isAllowed = false
|
||||||
var lastDinnerData: Message|Null = null
|
var lastDinnerData: Message|Null = null
|
||||||
if (MornyCoeur.trusted isTrusted_dinnerReader req.from.id) {
|
if (MornyCoeur.trusted isTrusted_dinnerReader req.from.id) {
|
||||||
|
// todo: have issues
|
||||||
|
// i dont want to test it anymore... it might be deprecated soon
|
||||||
lastDinnerData = (MornyCoeur.extra exec GetChat(MornyCoeur.config.dinnerChatId)).chat.pinnedMessage
|
lastDinnerData = (MornyCoeur.extra exec GetChat(MornyCoeur.config.dinnerChatId)).chat.pinnedMessage
|
||||||
val sendResp = MornyCoeur.extra exec ForwardMessage(
|
val sendResp = MornyCoeur.extra exec ForwardMessage(
|
||||||
req.from.id,
|
req.from.id,
|
||||||
|
@ -52,9 +52,9 @@ object OnEventHackHandle extends EventListener {
|
|||||||
override def onEditedMessage (using update: Update): Boolean =
|
override def onEditedMessage (using update: Update): Boolean =
|
||||||
onEventHacked(update.editedMessage.chat.id, update.editedMessage.from.id)
|
onEventHacked(update.editedMessage.chat.id, update.editedMessage.from.id)
|
||||||
override def onChannelPost (using update: Update): Boolean =
|
override def onChannelPost (using update: Update): Boolean =
|
||||||
onEventHacked(update.channelPost.chat.id, update.channelPost.from.id)
|
onEventHacked(update.channelPost.chat.id, 0)
|
||||||
override def onEditedChannelPost (using update: Update): Boolean =
|
override def onEditedChannelPost (using update: Update): Boolean =
|
||||||
onEventHacked(update.editedChannelPost.chat.id, update.editedChannelPost.from.id)
|
onEventHacked(update.editedChannelPost.chat.id, 0)
|
||||||
override def onInlineQuery (using update: Update): Boolean =
|
override def onInlineQuery (using update: Update): Boolean =
|
||||||
onEventHacked(0, update.inlineQuery.from.id)
|
onEventHacked(0, update.inlineQuery.from.id)
|
||||||
override def onChosenInlineResult (using update: Update): Boolean =
|
override def onChosenInlineResult (using update: Update): Boolean =
|
||||||
|
@ -9,7 +9,14 @@ import scala.language.postfixOps
|
|||||||
|
|
||||||
object OnQuestionMarkReply extends EventListener {
|
object OnQuestionMarkReply extends EventListener {
|
||||||
|
|
||||||
private def QUESTION_MARKS = Set('?', '?', '¿', '⁈', '⁇', '‽', '❔', '❓')
|
private val QUESTION_MARKS = Set('?', '?', '¿', '⁈', '⁇', '‽', '❔', '❓')
|
||||||
|
|
||||||
|
def isAllMessageMark (using text: String): Boolean = {
|
||||||
|
var isAll = true
|
||||||
|
for (c <- text)
|
||||||
|
if !(QUESTION_MARKS contains c) then isAll = false
|
||||||
|
isAll
|
||||||
|
}
|
||||||
|
|
||||||
override def onMessage (using event: Update): Boolean = {
|
override def onMessage (using event: Update): Boolean = {
|
||||||
|
|
||||||
@ -18,8 +25,7 @@ object OnQuestionMarkReply extends EventListener {
|
|||||||
import cc.sukazyo.cono.morny.util.UseMath.over
|
import cc.sukazyo.cono.morny.util.UseMath.over
|
||||||
import cc.sukazyo.cono.morny.util.UseRandom.chance_is
|
import cc.sukazyo.cono.morny.util.UseRandom.chance_is
|
||||||
if (1 over 8) chance_is false then return false
|
if (1 over 8) chance_is false then return false
|
||||||
for (c <- event.message.text toCharArray)
|
if !isAllMessageMark(using event.message.text) then return false
|
||||||
if !(QUESTION_MARKS contains c) then return false
|
|
||||||
|
|
||||||
MornyCoeur.extra exec SendMessage(
|
MornyCoeur.extra exec SendMessage(
|
||||||
event.message.chat.id, event.message.text
|
event.message.chat.id, event.message.text
|
||||||
|
@ -22,7 +22,7 @@ object OnTelegramCommand extends EventListener {
|
|||||||
if (!(inputCommand.command matches "^\\w+$"))
|
if (!(inputCommand.command matches "^\\w+$"))
|
||||||
logger debug "not command"
|
logger debug "not command"
|
||||||
false
|
false
|
||||||
else if ((inputCommand.target ne null) && (inputCommand.target ne MornyCoeur.username))
|
else if ((inputCommand.target ne null) && (inputCommand.target != MornyCoeur.username))
|
||||||
logger debug "not morny command"
|
logger debug "not morny command"
|
||||||
false
|
false
|
||||||
else
|
else
|
||||||
|
@ -9,13 +9,13 @@ import scala.language.postfixOps
|
|||||||
|
|
||||||
object OnUserRandom extends EventListener {
|
object OnUserRandom extends EventListener {
|
||||||
|
|
||||||
private val USER_OR_QUERY = "(.+)(?:还是|or)(.+)"r
|
private val USER_OR_QUERY = "^(.+)(?:还是|or)(.+)$"r
|
||||||
private val USER_IF_QUERY = "(.+)[吗?|?]+$"r
|
private val USER_IF_QUERY = "^(.+)(?:吗\\?|?|\\?|吗?)$"r
|
||||||
|
|
||||||
override def onMessage(using update: Update): Boolean = {
|
override def onMessage(using update: Update): Boolean = {
|
||||||
|
|
||||||
if update.message.text == null then return false
|
if update.message.text == null then return false
|
||||||
if update.message.text startsWith "/" then return false
|
if !(update.message.text startsWith "/") then return false
|
||||||
|
|
||||||
import cc.sukazyo.cono.morny.util.UseRandom.rand_half
|
import cc.sukazyo.cono.morny.util.UseRandom.rand_half
|
||||||
val query = update.message.text substring 1
|
val query = update.message.text substring 1
|
||||||
@ -23,6 +23,8 @@ object OnUserRandom extends EventListener {
|
|||||||
case USER_OR_QUERY(_con1, _con2) =>
|
case USER_OR_QUERY(_con1, _con2) =>
|
||||||
if rand_half then _con1 else _con2
|
if rand_half then _con1 else _con2
|
||||||
case USER_IF_QUERY(_con) =>
|
case USER_IF_QUERY(_con) =>
|
||||||
|
// for capability with [[OnQuestionMarkReply]]
|
||||||
|
if OnQuestionMarkReply.isAllMessageMark(using _con) then return false
|
||||||
(if rand_half then "不" else "") + _con
|
(if rand_half then "不" else "") + _con
|
||||||
case _ => null
|
case _ => null
|
||||||
|
|
||||||
|
@ -22,14 +22,24 @@ object OnUserSlashAction extends EventListener {
|
|||||||
|
|
||||||
if (text startsWith "/") {
|
if (text startsWith "/") {
|
||||||
|
|
||||||
|
// there has to be some special conditions for DP7
|
||||||
|
// due to I have left DP7, I closed those special
|
||||||
|
// conditions.
|
||||||
|
// that is 2022, May 28th
|
||||||
|
// when one year goes, These code have rewrite with
|
||||||
|
// scala, those commented code is removed permanently.
|
||||||
|
// these message, here to remember the old DP7.
|
||||||
|
|
||||||
val actions = UniversalCommand(text)
|
val actions = UniversalCommand(text)
|
||||||
actions(0) = actions(0) substring 1
|
actions(0) = actions(0) substring 1
|
||||||
|
|
||||||
actions(0)
|
actions(0)
|
||||||
|
|
||||||
actions(0) match
|
actions(0) match
|
||||||
|
// ignore Telegram command like
|
||||||
case TG_FORMAT(_) =>
|
case TG_FORMAT(_) =>
|
||||||
return false
|
return false
|
||||||
|
// ignore Path link
|
||||||
case x if x contains "/" => return false
|
case x if x contains "/" => return false
|
||||||
case _ =>
|
case _ =>
|
||||||
|
|
||||||
@ -55,7 +65,7 @@ object OnUserSlashAction extends EventListener {
|
|||||||
h(v_verb), if hasObject then "" else "了",
|
h(v_verb), if hasObject then "" else "了",
|
||||||
if (origin == target)
|
if (origin == target)
|
||||||
s"<a href='tg://user?id=${origin.sender_id}'>自己</a>"
|
s"<a href='tg://user?id=${origin.sender_id}'>自己</a>"
|
||||||
else origin.sender_firstnameRefHTML,
|
else target.sender_firstnameRefHTML,
|
||||||
if hasObject then h(v_object+" ") else ""
|
if hasObject then h(v_object+" ") else ""
|
||||||
)
|
)
|
||||||
).parseMode(ParseMode HTML).replyToMessageId(update.message.messageId)
|
).parseMode(ParseMode HTML).replyToMessageId(update.message.messageId)
|
||||||
|
@ -14,7 +14,7 @@ object MyInformation extends ITelegramQuery {
|
|||||||
|
|
||||||
override def query (event: Update): List[InlineQueryUnit[_]] | Null = {
|
override def query (event: Update): List[InlineQueryUnit[_]] | Null = {
|
||||||
|
|
||||||
if ((event.inlineQuery.query ne null) || (event.inlineQuery.query nonEmpty)) return null
|
if !((event.inlineQuery.query eq null) || (event.inlineQuery.query isEmpty)) then return null
|
||||||
|
|
||||||
List(
|
List(
|
||||||
InlineQueryUnit(InlineQueryResultArticle(
|
InlineQueryUnit(InlineQueryResultArticle(
|
||||||
|
@ -9,11 +9,11 @@ import scala.util.matching.Regex
|
|||||||
|
|
||||||
object ShareToolTwitter extends ITelegramQuery {
|
object ShareToolTwitter extends ITelegramQuery {
|
||||||
|
|
||||||
val TITLE_VX = "[tweet] Share as VxTwitter"
|
private val TITLE_VX = "[tweet] Share as VxTwitter"
|
||||||
val TITLE_VX_COMBINED = "[tweet] Share as VxTwitter(combination)"
|
private val TITLE_VX_COMBINED = "[tweet] Share as VxTwitter(combination)"
|
||||||
val ID_PREFIX_VX = "[morny/share/twitter/vxtwi]"
|
private val ID_PREFIX_VX = "[morny/share/twitter/vxtwi]"
|
||||||
val ID_PREFIX_VX_COMBINED = "[morny/share/twitter/vxtwi_combine]"
|
private val ID_PREFIX_VX_COMBINED = "[morny/share/twitter/vxtwi_combine]"
|
||||||
val REGEX_TWEET_LINK: Regex = "^(?:https?://)?((?:(?:c\\.)?vx|fx|www\\.)?twitter\\.com)/((\\w+)/status/(\\d+)(?:/photo/(\\d+))?)/?(\\?[\\w&=-]+)?$"r
|
private val REGEX_TWEET_LINK: Regex = "^(?:https?://)?((?:(?:c\\.)?vx|fx|www\\.)?twitter\\.com)/((\\w+)/status/(\\d+)(?:/photo/(\\d+))?)/?(\\?[\\w&=-]+)?$"r
|
||||||
|
|
||||||
override def query (event: Update): List[InlineQueryUnit[_]] | Null = {
|
override def query (event: Update): List[InlineQueryUnit[_]] | Null = {
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ object ShareToolTwitter extends ITelegramQuery {
|
|||||||
|
|
||||||
event.inlineQuery.query match
|
event.inlineQuery.query match
|
||||||
|
|
||||||
case REGEX_TWEET_LINK(_1, _2, _) =>
|
case REGEX_TWEET_LINK(_, _2, _, _, _, _) =>
|
||||||
List(
|
List(
|
||||||
InlineQueryUnit(InlineQueryResultArticle(
|
InlineQueryUnit(InlineQueryResultArticle(
|
||||||
inlineQueryId(ID_PREFIX_VX+event.inlineQuery.query), TITLE_VX,
|
inlineQueryId(ID_PREFIX_VX+event.inlineQuery.query), TITLE_VX,
|
||||||
|
@ -74,6 +74,7 @@ object MornyReport {
|
|||||||
).parseMode(ParseMode HTML))
|
).parseMode(ParseMode HTML))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def sectionConfigFields (config: MornyConfig): String = {
|
def sectionConfigFields (config: MornyConfig): String = {
|
||||||
val echo = StringBuilder()
|
val echo = StringBuilder()
|
||||||
for (field <- config.getClass.getFields) {
|
for (field <- config.getClass.getFields) {
|
||||||
|
@ -12,6 +12,6 @@ object MornyJrrp {
|
|||||||
private def jrrp_v_xmomi (identifier: Long, dayStamp: Long): Double =
|
private def jrrp_v_xmomi (identifier: Long, dayStamp: Long): Double =
|
||||||
import cc.sukazyo.cono.morny.util.CommonEncrypt.MD5
|
import cc.sukazyo.cono.morny.util.CommonEncrypt.MD5
|
||||||
import cc.sukazyo.cono.morny.util.ConvertByteHex.toHex
|
import cc.sukazyo.cono.morny.util.ConvertByteHex.toHex
|
||||||
(java.lang.Long parseLong MD5(s"$identifier@$dayStamp").toHex.substring(0, 4)) / (0xffff toDouble)
|
java.lang.Long.parseLong(MD5(s"$identifier@$dayStamp").toHex.substring(0, 4), 16) / (0xffff toDouble)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ object IP186QueryHandler {
|
|||||||
commonQuery(SITE_URL + ip, QUERY_PARAM_IP)
|
commonQuery(SITE_URL + ip, QUERY_PARAM_IP)
|
||||||
|
|
||||||
@throws[IOException]
|
@throws[IOException]
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def query_whois (domain: String): IP186Response =
|
def query_whois (domain: String): IP186Response =
|
||||||
commonQuery(SITE_URL+"whois/"+domain, QUERY_PARAM_WHOIS)
|
commonQuery(SITE_URL+"whois/"+domain, QUERY_PARAM_WHOIS)
|
||||||
|
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
package cc.sukazyo.cono.morny.internal
|
|
||||||
|
|
||||||
import scala.jdk.CollectionConverters._
|
|
||||||
import scala.collection.immutable as simm
|
|
||||||
import java.util as j
|
|
||||||
|
|
||||||
object ScalaJavaConv {
|
|
||||||
|
|
||||||
def jSetInteger2simm (data: j.Set[Integer]): simm.Set[Int] =
|
|
||||||
data.asScala.toSet.map(_.intValue)
|
|
||||||
|
|
||||||
}
|
|
@ -36,8 +36,7 @@ object UniversalCommand {
|
|||||||
arg = arg.empty
|
arg = arg.empty
|
||||||
} else if (input(i) isQuote) {
|
} else if (input(i) isQuote) {
|
||||||
val _inside_tag = input(i)
|
val _inside_tag = input(i)
|
||||||
var _inside = true
|
boundary { while (true) {
|
||||||
boundary { while (_inside) {
|
|
||||||
i=i+1
|
i=i+1
|
||||||
if (i >= input.length) throw IllegalArgumentException("UniversalCommand: unclosed quoted text")
|
if (i >= input.length) throw IllegalArgumentException("UniversalCommand: unclosed quoted text")
|
||||||
if (input(i) == _inside_tag)
|
if (input(i) == _inside_tag)
|
||||||
|
@ -32,7 +32,7 @@ public class ExtraAction {
|
|||||||
public <T extends BaseRequest<T, R>, R extends BaseResponse> R exec (T req, String errorMessage) {
|
public <T extends BaseRequest<T, R>, R extends BaseResponse> R exec (T req, String errorMessage) {
|
||||||
final R resp = bot.execute(req);
|
final R resp = bot.execute(req);
|
||||||
if (!resp.isOk()) throw new EventRuntimeException.ActionFailed(
|
if (!resp.isOk()) throw new EventRuntimeException.ActionFailed(
|
||||||
(errorMessage.equals("") ? String.valueOf(resp.errorCode()) : errorMessage),
|
(errorMessage.isEmpty() ? String.valueOf(resp.errorCode()) : errorMessage),
|
||||||
resp
|
resp
|
||||||
);
|
);
|
||||||
return resp;
|
return resp;
|
||||||
|
@ -22,6 +22,7 @@ object TelegramFormatter {
|
|||||||
case _ => s"<a href='${_link_chat(chat.id_tdLib)}'>@[c/${chat.id}]</a>"
|
case _ => s"<a href='${_link_chat(chat.id_tdLib)}'>@[c/${chat.id}]</a>"
|
||||||
else s"@${h(chat.username)}"
|
else s"@${h(chat.username)}"
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def safe_firstnameRefHTML: String =
|
def safe_firstnameRefHTML: String =
|
||||||
chat.`type` match
|
chat.`type` match
|
||||||
// language=html
|
// language=html
|
||||||
@ -29,6 +30,7 @@ object TelegramFormatter {
|
|||||||
// language=html
|
// language=html
|
||||||
case _ => s"<a href='${_link_chat(chat.id_tdLib)}'>${h(chat.title)}</a>"
|
case _ => s"<a href='${_link_chat(chat.id_tdLib)}'>${h(chat.title)}</a>"
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def id_tdLib: Long =
|
def id_tdLib: Long =
|
||||||
if chat.id < 0 then (chat.id - MASK_BOTAPI_ID)abs else chat.id
|
if chat.id < 0 then (chat.id - MASK_BOTAPI_ID)abs else chat.id
|
||||||
|
|
||||||
@ -42,12 +44,14 @@ object TelegramFormatter {
|
|||||||
|
|
||||||
extension (user: User) {
|
extension (user: User) {
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def fullname: String = _connectName(user.firstName, user.lastName)
|
def fullname: String = _connectName(user.firstName, user.lastName)
|
||||||
|
|
||||||
def fullnameRefHTML: String =
|
def fullnameRefHTML: String =
|
||||||
// language=html
|
// language=html
|
||||||
s"<a href='${_link_user(user.id)}'>${h(user.fullname)}</a>"
|
s"<a href='${_link_user(user.id)}'>${h(user.fullname)}</a>"
|
||||||
|
|
||||||
|
//noinspection ScalaWeakerAccess
|
||||||
def firstnameRefHTML: String =
|
def firstnameRefHTML: String =
|
||||||
// language=html
|
// language=html
|
||||||
s"<a href='${_link_user(user.id)}'>${h(user.firstName)}</a>"
|
s"<a href='${_link_user(user.id)}'>${h(user.firstName)}</a>"
|
||||||
|
@ -9,8 +9,8 @@ import scala.util.Using
|
|||||||
|
|
||||||
object TelegramUserInformation {
|
object TelegramUserInformation {
|
||||||
|
|
||||||
val DC_QUERY_SOURCE_SITE = "https://t.me/"
|
private val DC_QUERY_SOURCE_SITE = "https://t.me/"
|
||||||
val DC_QUERY_PROCESSOR_REGEX: Regex = "(cdn[1-9]).tele(sco.pe|gram-cdn.org)"r
|
private val DC_QUERY_PROCESSOR_REGEX: Regex = "(cdn[1-9]).tele(sco.pe|gram-cdn.org)"r
|
||||||
|
|
||||||
private val httpClient = OkHttpClient()
|
private val httpClient = OkHttpClient()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user