summaryrefslogtreecommitdiff
path: root/include/tgbot
diff options
context:
space:
mode:
Diffstat (limited to 'include/tgbot')
-rw-r--r--include/tgbot/EventHandler.h8
-rw-r--r--include/tgbot/TgTypeParser.h20
2 files changed, 27 insertions, 1 deletions
diff --git a/include/tgbot/EventHandler.h b/include/tgbot/EventHandler.h
index 1ec2cbe..e4fac7a 100644
--- a/include/tgbot/EventHandler.h
+++ b/include/tgbot/EventHandler.h
@@ -38,7 +38,13 @@ public:
inline void handleUpdate(const Update::Ptr& update) const {
_broadcaster->broadcastAnyMessage(update->message);
if (StringTools::startsWith(update->message->text, "/")) {
- std::string command = update->message->text.substr(1, update->message->text.find(' ') - 2);
+ unsigned long spacePosition = update->message->text.find(' ');
+ std::string command;
+ if (spacePosition != update->message->text.npos) {
+ command = update->message->text.substr(1, spacePosition - 1);
+ } else {
+ command = update->message->text.substr(1, update->message->text.size() - 1);
+ }
if (!_broadcaster->broadcastCommand(command, update->message)) {
_broadcaster->broadcastUnknownCommand(update->message);
}
diff --git a/include/tgbot/TgTypeParser.h b/include/tgbot/TgTypeParser.h
index 759dc2f..07eb1b6 100644
--- a/include/tgbot/TgTypeParser.h
+++ b/include/tgbot/TgTypeParser.h
@@ -110,6 +110,15 @@ public:
}
template<typename T>
+ std::vector<std::shared_ptr<T>> parseJsonAndGetArray(JsonToTgTypeFunc<T> parseFunc, const boost::property_tree::ptree& data) const {
+ std::vector<std::shared_ptr<T>> result;
+ for (const std::pair<const std::string, boost::property_tree::ptree>& innerTreeItem : data) {
+ result.push_back((this->*parseFunc)(innerTreeItem.second));
+ }
+ return result;
+ }
+
+ template<typename T>
std::vector<std::shared_ptr<T>> parseJsonAndGetArray(JsonToTgTypeFunc<T> parseFunc, const boost::property_tree::ptree& data, const std::string& keyName) const {
std::vector<std::shared_ptr<T>> result;
auto treeItem = data.find(keyName);
@@ -178,6 +187,17 @@ private:
json += ',';
}
+ void appendToJson(std::string& json, const std::string& varName, const bool& value) const {
+ if (value == 0) {
+ return;
+ }
+ json += '"';
+ json += varName;
+ json += "\":";
+ json += (value ? "true" : "false");
+ json += ',';
+ }
+
void appendToJson(std::string& json, const std::string& varName, const std::string& value) const;
};