-- IN PROGRESS --
Add dependency into sbt
libraryDependencies += "io.halahutskyi.telegrambot4s" %% "telegrambot4s" % "1.0-RC2"
Create Telegram event listener
import akka.actor.{Actor, ActorRef, Props}
import io.halahutskyi.telegrambot4s.message.common.command.SendMessage
import io.halahutskyi.telegrambot4s.message.common.document.{InlineKeyboardButton, InlineKeyboardMarkup}
import io.halahutskyi.telegrambot4s.message.event.document.NewMessage
import io.halahutskyi.telegrambot4s.util.CommonImplicit._
object NewMessageListener {
def props(telegramActor: ActorRef): Props = Props(new NewMessageListener(telegramActor))
}
class NewMessageListener(telegramActor: ActorRef) extends Actor {
override def receive: Receive = {
case nMsg: NewMessage =>
// on message send the same message
telegramActor ! SendMessage(
chatId = nMsg.message.chatId,
text = "I have got the next message: \"${nMsg.message.text}\""
)
// on message send the inline keyboard with reference to google
telegramActor ! SendMessage(
chatId = nMsg.message.chatId,
text = "Below reference to google.com. Click button.",
replyMarkup = InlineKeyboardMarkup(
inlineKeyboard = List(List(
InlineKeyboardButton(
"google.com",
url = "https://google.com"
)
))
)
)
}
}
Create runner
import akka.actor.{ActorRef, ActorSystem}
import io.halahutskyi.telegrambot4s.message.event.command.GetUpdates
import io.halahutskyi.telegrambot4s.message.event.document.NewMessage
import io.halahutskyi.telegrambot4s.core._
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits._
import scala.language.postfixOps
object Application extends App {
private val system = ActorSystem("telegram-bot")
private val eventBus: TelegramEventBus = new TelegramEventBus
private val telegramActor: ActorRef = system.actorOf(TelegramActor.props(eventBus))
private val newMessageListenerActor: ActorRef = system.actorOf(NewMessageListener.props(telegramActor))
eventBus.subscribe(newMessageListenerActor, classOf[NewMessage])
system.scheduler.schedule(5 seconds, 5 seconds)(telegramActor ! GetUpdates())
}