messaging-client/src/main/kotlin/com/cubetiqs/messaging/client/telegram/TelegramProvider.kt

84 lines
2.3 KiB
Kotlin

package com.cubetiqs.messaging.client.telegram
import com.cubetiqs.messaging.client.provider.MessageProvider
import com.sun.org.slf4j.internal.LoggerFactory
import kotlin.IllegalArgumentException
/**
* Telegram Provider
*
* @author sombochea
* @since 1.0
*/
class TelegramProvider : MessageProvider {
private val log = LoggerFactory.getLogger(this::class.java)
private var _token: String = ""
private var _chatId: String = ""
private var _message: TelegramMessage? = null
fun sendToChatId(chatId: String) = apply {
this._chatId = chatId
}
fun messageToSend(message: TelegramMessage?) = apply {
this._message = message
}
fun setBotToken(token: String) = apply {
this._token = token
}
fun send(
chatId: String,
message: TelegramMessage,
): TelegramResponse? {
if (_token.isEmpty() || _token.isBlank()) {
throw IllegalArgumentException("token must be provide for send message!")
}
if (_message?.getText().isNullOrEmpty()) return null
return try {
val response = TelegramBotUtils.sendMessage(
chatId = chatId,
token = this._token,
text = this._message!!.getText(),
)
TelegramResponse(
response = response,
)
} catch (ex: Exception) {
log.error("[Telegram] Message send error: ${ex.message}!")
null
}
}
override fun send(): Any? {
if (this._message?.getText().isNullOrEmpty()) {
throw IllegalArgumentException("message must be non-null or non-empty!")
}
return send(this._chatId, this._message!!)
}
override fun toString(): String {
return "TelegramProvider(_token='$_token', _chatId='$_chatId', _message=$_message)"
}
companion object {
@JvmStatic
fun init(token: String): TelegramProvider {
return TelegramProvider()
.setBotToken(token)
}
@JvmStatic
fun sendMessage(token: String, chatId: String, text: String): Any? {
return init(token)
.sendToChatId(chatId)
.messageToSend(TelegramChatMessage(text))
.send()
}
}
}