diff options
-rw-r--r-- | include/tgbot/EventHandler.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/include/tgbot/EventHandler.h b/include/tgbot/EventHandler.h index e4fac7a..bb277a8 100644 --- a/include/tgbot/EventHandler.h +++ b/include/tgbot/EventHandler.h @@ -38,13 +38,21 @@ public: inline void handleUpdate(const Update::Ptr& update) const { _broadcaster->broadcastAnyMessage(update->message); if (StringTools::startsWith(update->message->text, "/")) { + unsigned long splitPosition; unsigned long spacePosition = update->message->text.find(' '); - std::string command; - if (spacePosition != update->message->text.npos) { - command = update->message->text.substr(1, spacePosition - 1); + unsigned long atSymbolPosition = update->message->text.find('@'); + if (spacePosition == update->message->text.npos) { + if (atSymbolPosition == update->message->text.npos) { + splitPosition = update->message->text.size(); + } else { + splitPosition = atSymbolPosition; + } + } else if (atSymbolPosition == update->message->text.npos) { + splitPosition = spacePosition; } else { - command = update->message->text.substr(1, update->message->text.size() - 1); + splitPosition = std::min(spacePosition, atSymbolPosition); } + std::string command = update->message->text.substr(1, splitPosition - 1); if (!_broadcaster->broadcastCommand(command, update->message)) { _broadcaster->broadcastUnknownCommand(update->message); } |