diff options
-rw-r--r-- | Dockerfile_test | 3 | ||||
-rw-r--r-- | samples/received-text-processing/CMakeLists.txt | 19 | ||||
-rw-r--r-- | samples/received-text-processing/src/main.cpp | 61 |
3 files changed, 83 insertions, 0 deletions
diff --git a/Dockerfile_test b/Dockerfile_test index b9a7e06..ad52a88 100644 --- a/Dockerfile_test +++ b/Dockerfile_test @@ -52,6 +52,9 @@ WORKDIR /usr/src/tgbot-cpp/samples/photo RUN rm -rf CMakeCache.txt CMakeFiles/ && \ cmake . && make -j$(nproc) +WORKDIR /usr/src/tgbot-cpp/samples/received-text-processing +RUN rm -rf CMakeCache.txt CMakeFiles/ && \ + cmake . && make -j$(nproc) WORKDIR /usr/src/tgbot-cpp ENV CTEST_OUTPUT_ON_FAILURE=1 diff --git a/samples/received-text-processing/CMakeLists.txt b/samples/received-text-processing/CMakeLists.txt new file mode 100644 index 0000000..2e351d1 --- /dev/null +++ b/samples/received-text-processing/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.4) +project(received-text-processing) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") +set(Boost_USE_MULTITHREADED ON) + +find_package(Threads REQUIRED) +find_package(OpenSSL REQUIRED) +find_package(Boost COMPONENTS system REQUIRED) +find_package(CURL) +include_directories(/usr/local/include ${OPENSSL_INCLUDE_DIR} ${Boost_INCLUDE_DIR}) +if (CURL_FOUND) + include_directories(${CURL_INCLUDE_DIRS}) + add_definitions(-DHAVE_CURL) +endif() + +add_executable(received-processing-text src/main.cpp) + +target_link_libraries(received-processing-text /usr/local/lib/libTgBot.a ${CMAKE_THREAD_LIBS_INIT} ${OPENSSL_LIBRARIES} ${Boost_LIBRARIES} ${CURL_LIBRARIES}) diff --git a/samples/received-text-processing/src/main.cpp b/samples/received-text-processing/src/main.cpp new file mode 100644 index 0000000..b6069e9 --- /dev/null +++ b/samples/received-text-processing/src/main.cpp @@ -0,0 +1,61 @@ +#include <csignal> +#include <cstdio> +#include <cstdlib> +#include <exception> +#include <string> + +#include <tgbot/tgbot.h> + +using namespace std; +using namespace TgBot; + +vector<string> bot_commands = {"start", "test"}; + +int main() { + string token(getenv("TOKEN")); + printf("Token: %s\n", token.c_str()); + + bool test_text_state = false; + + Bot bot(token); + TgLongPoll long_poll(bot); + + bot.getEvents().onCommand("start", [&bot](Message::Ptr message) { + bot.getApi().sendMessage(message->chat->id, "Hi!"); + }); + + bot.getEvents().onCommand("test", [&](Message::Ptr message) { + bot.getApi().sendMessage(message->chat->id, "Enter text"); + test_text_state = true; + }); + + bot.getEvents().onAnyMessage([&](TgBot::Message::Ptr message) { + if (test_text_state) { + bot.getApi().sendMessage(message->chat->id, message->text); + test_text_state = false; + return; + } + + for (const auto& command : bot_commands) { + if ("/" + command == message->text) { + return; + } + } + + bot.getApi().sendMessage(message->chat->id, "unknown command"); + }); + + try { + printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str()); + bot.getApi().deleteWebhook(); + + while (true) { + printf("Long poll started\n"); + long_poll.start(); + } + } catch (exception& e) { + printf("error: %s\n", e.what()); + } + + return 0; +} |