diff options
author | Oleg Morozenkov <omorozenkov@gmail.com> | 2015-11-16 19:56:39 +0300 |
---|---|---|
committer | Oleg Morozenkov <omorozenkov@gmail.com> | 2015-11-16 19:56:39 +0300 |
commit | c0ecf548e9643102ae80e44d3cff59b0ed2a539b (patch) | |
tree | e65011de5d63766d9320fedfa6a5b3f1a00330c5 /include/tgbot/EventHandler.h | |
parent | 91574f7b7f28e5c7c03c2af5507d7dff4fa31fed (diff) | |
parent | 14a6f4867ec74fbacdd93e888fb13c28aa637419 (diff) |
Merge pull request #7 from flode/master
Fix hide keyboard and command parsing
Diffstat (limited to 'include/tgbot/EventHandler.h')
-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); } |