Skip to content

Commit

Permalink
add support for tg2mc
Browse files Browse the repository at this point in the history
  • Loading branch information
Eyre-S committed Jul 14, 2024
1 parent 70040b7 commit 885d2c3
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/main/scala/cc/sukazyo/minecraft_telegram/bot/Bot.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cc.sukazyo.minecraft_telegram.bot

import cc.sukazyo.minecraft_telegram.bot.events.OnMinecraftCommandExecute
import cc.sukazyo.minecraft_telegram.bot.events.{OnMinecraftCommandExecute, OnTelegram2Minecraft}
import cc.sukazyo.minecraft_telegram.bot.internal.{ActionRunner, UpdateManager}
import cc.sukazyo.minecraft_telegram.bot.minecraft.{MinecraftChatMessageListener, MinecraftCommandMessageListener, MinecraftGameMessageListener, MinecraftServerLifecycleListener}
import com.pengrad.telegrambot.TelegramBot
Expand Down Expand Up @@ -32,6 +32,7 @@ class Bot (config: BotConfig)(using logger: Logger) {
ServerLifecycleEvents.SERVER_STOPPED register i.ServerStopped

eventManager += OnMinecraftCommandExecute()
eventManager += OnTelegram2Minecraft()

this.start()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,22 @@ class OnMinecraftCommandExecute (using bot: Bot)(using logger: Logger) extends E

if message.chat.id != minecraftLinkedChat then return;
if !(message.text startsWith "//") then return;

if !message.chat.memberHasPermission(message.from, ChatMember.Status.administrator) then
SendMessage(
message.chat.id,
"403 : Only administrators can execute commands!",
).replyToMessageId(message.messageId)
.unsafeExecute
event.setEventOk
return;

val mcCmd = ModMinecraftTelegram.SERVER.getCommandManager
val mcServerConsole = getBotServerConsole
val command_text = message.text.drop("//".length)
mcServerConsole.sendMessage(Text.literal(s"Executing admin command by Telegram ${message.from.toLogTag}: /$command_text"))
mcCmd.executeWithPrefix(mcServerConsole, command_text)
event.setEventOk

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package cc.sukazyo.minecraft_telegram.bot.events

import cc.sukazyo.cono.morny.system.telegram_api.event.{EventEnv, EventListener}
import cc.sukazyo.cono.morny.system.telegram_api.formatting.TelegramFormatter.*
import cc.sukazyo.minecraft_telegram.bot.{Bot, BotExt}
import cc.sukazyo.minecraft_telegram.utils.Magics
import cc.sukazyo.minecraft_telegram.ModMinecraftTelegram
import cc.sukazyo.minecraft_telegram.utils.MinecraftServerExtension.MinecraftServerExt
import net.minecraft.text.{Style, Text}
import org.apache.logging.log4j.Logger

class OnTelegram2Minecraft (using bot: Bot)(using logger: Logger) extends EventListener with BotExt {

override def onMessage (using event: EventEnv): Unit = {
import event.update.message

if message.chat.id != minecraftLinkedChat then return;

val plainMessage = message.text
val senderName = message.from.fullname
val senderNameTag = s"<<$senderName>>"

val mcMessage = Text.empty()
.append(Text.literal(senderNameTag).setStyle(Style.EMPTY.withColor(Magics.COLOR_TELEGRAM_ICON)))
.append(Text.literal(" "))
.append(Text.literal(plainMessage))

ModMinecraftTelegram.SERVER.broadcastMessage(mcMessage)

event.setEventOk

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package cc.sukazyo.minecraft_telegram.utils

object Magics {

val COLOR_TELEGRAM_ICON: Int = 0x269eda

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
package cc.sukazyo.minecraft_telegram.utils

import net.minecraft.server.MinecraftServer
import net.minecraft.text.Text

import scala.jdk.CollectionConverters.ListHasAsScala

object MinecraftServerExtension {

implicit class MinecraftServerExt (server: MinecraftServer) {

def getServerName: String = server.getServerMotd

def broadcastMessage (message: Text): Unit = {

server.sendMessage(message)
server.getPlayerManager.getPlayerList.asScala.foreach { player =>
player.sendMessage(message)
}

}

}

}

0 comments on commit 885d2c3

Please sign in to comment.