diff --git a/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/TelegramLongPollingCommandBot.java b/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/TelegramLongPollingCommandBot.java index 8bb39742..1796b364 100644 --- a/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/TelegramLongPollingCommandBot.java +++ b/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/TelegramLongPollingCommandBot.java @@ -28,10 +28,22 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB * Creates a TelegramLongPollingCommandBot using default options * Use ICommandRegistry's methods on this bot to register commands * - * @param botUsername Username of the bot */ - public TelegramLongPollingCommandBot(String botUsername) { - this(ApiContext.getInstance(DefaultBotOptions.class), botUsername); + public TelegramLongPollingCommandBot() { + this(ApiContext.getInstance(DefaultBotOptions.class)); + } + + /** + * Creates a TelegramLongPollingCommandBot using default options + * Use ICommandRegistry's methods on this bot to register commands + * + * @param botUsername Username of the bot + * @deprecated Overwrite {@link #getBotUsername() getBotUsername} instead + */ + @Deprecated + public TelegramLongPollingCommandBot(String botUsername){ + this(); + this.botUsername = botUsername; } /** @@ -40,10 +52,9 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB * Use ICommandRegistry's methods on this bot to register commands * * @param options Bot options - * @param botUsername Username of the bot */ - public TelegramLongPollingCommandBot(DefaultBotOptions options, String botUsername) { - this(options, true, botUsername); + public TelegramLongPollingCommandBot(DefaultBotOptions options) { + this(options, true); } /** @@ -53,12 +64,10 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB * @param options Bot options * @param allowCommandsWithUsername true to allow commands with parameters (default), * false otherwise - * @param botUsername bot username of this bot */ - public TelegramLongPollingCommandBot(DefaultBotOptions options, boolean allowCommandsWithUsername, String botUsername) { + public TelegramLongPollingCommandBot(DefaultBotOptions options, boolean allowCommandsWithUsername) { super(options); - this.botUsername = botUsername; - this.commandRegistry = new CommandRegistry(allowCommandsWithUsername, botUsername); + this.commandRegistry = new CommandRegistry(allowCommandsWithUsername, this.getBotUsername()); } @Override @@ -143,9 +152,9 @@ public abstract class TelegramLongPollingCommandBot extends TelegramLongPollingB * @return Bot username */ @Override - public final String getBotUsername() { - return botUsername; - } + public String getBotUsername(){ + return this.botUsername; + }; /** * Process all updates, that are not commands. diff --git a/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/commands/CommandRegistry.java b/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/commands/CommandRegistry.java index fdd3771b..f06e15fb 100644 --- a/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/commands/CommandRegistry.java +++ b/telegrambots-extensions/src/main/java/org/telegram/telegrambots/extensions/bots/commandbot/commands/CommandRegistry.java @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; +import java.util.regex.Pattern; /** * This class manages all the commands for a bot. You can register and deregister commands on demand @@ -122,7 +123,7 @@ public final class CommandRegistry implements ICommandRegistry { */ private String removeUsernameFromCommandIfNeeded(String command) { if (allowCommandsWithUsername) { - return command.replace("@" + botUsername, "").trim(); + return command.replaceAll("(?i)@" + Pattern.quote(botUsername), "").trim(); } return command; }