Просмотр исходного кода

Moved russian commands to primary

Vadik Sirekanyan 4 лет назад
Родитель
Сommit
931308805c

+ 4 - 8
src/main/kotlin/com/sirekanyan/andersrobot/AndersRobot.kt

@@ -20,17 +20,13 @@ val delayedCommands = mutableMapOf<Long, Command>()
 private val primaryCommands: List<Command> =
     listOf(
         LocationCommand,
-        CityCommand("/temp(@$botName)?", AndersController::onCityCommand, AndersController::onWeatherCommand),
-        CityCommand("/add(@$botName)?", AndersController::onAddCity, AndersController::onCityMissing),
-        CityCommand("/delete(@$botName)?", AndersController::onDeleteCity, AndersController::onCityMissing),
-        CityCommand("/forecast(@$botName)?", AndersController::onForecastCommand, AndersController::onCityMissing),
+        CityCommand("temp", "погода", AndersController::onCityCommand, AndersController::onWeatherCommand),
+        CityCommand("add", "добавить город", AndersController::onAddCity, AndersController::onCityMissing),
+        CityCommand("delete", "удалить город", AndersController::onDeleteCity, AndersController::onCityMissing),
+        CityCommand("forecast", "прогноз", AndersController::onForecastCommand, AndersController::onCityMissing),
     )
 private val secondaryCommands: List<Command> =
     listOf(
-        CityCommand("погода", AndersController::onCityCommand, AndersController::onWeatherCommand),
-        CityCommand("добавить город", AndersController::onAddCity, AndersController::onCityMissing),
-        CityCommand("удалить город", AndersController::onDeleteCity, AndersController::onCityMissing),
-        CityCommand("прогноз", AndersController::onForecastCommand, AndersController::onCityMissing),
         RegexCommand("\\b(celsi|цельси)", AndersController::onCelsiusCommand),
         RegexCommand("\\b((андерс|anders|погод[аеуы])\\b|градус)", AndersController::onWeatherCommand),
     )

+ 8 - 2
src/main/kotlin/com/sirekanyan/andersrobot/command/CityCommand.kt

@@ -1,10 +1,14 @@
 package com.sirekanyan.andersrobot.command
 
 import com.sirekanyan.andersrobot.AndersController
+import com.sirekanyan.andersrobot.botName
 import org.telegram.telegrambots.meta.api.objects.Message
+import java.util.regex.Pattern
+import kotlin.text.RegexOption.IGNORE_CASE
 
 class CityCommand(
-    private val pattern: String,
+    private val englishWord: String,
+    private val russianWord: String,
     private val action: (AndersController, String) -> Unit,
     private val onEmptyArguments: (AndersController, Command) -> Unit,
 ) : Command {
@@ -22,7 +26,9 @@ class CityCommand(
     }
 
     private fun parseCityArgument(text: String?): String? {
-        val regex = Regex("$pattern ?(.*)", RegexOption.IGNORE_CASE)
+        val en = Pattern.quote(englishWord)
+        val ru = Pattern.quote(russianWord)
+        val regex = Regex("(/$en(@$botName)?|$ru) ?(.*)", IGNORE_CASE)
         return regex.matchEntire(text.orEmpty())?.groupValues?.last()
     }