diff options
author | Oleg Morozenkov <m@oleg.rocks> | 2022-06-11 23:14:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-11 23:14:46 +0300 |
commit | 5567c5cfc88b2111221dbfca99919fe3fe17eb8a (patch) | |
tree | 0f057ff5a939b16c43165dac7103add8e6eedd32 /samples | |
parent | 1c52572fec3f4e4194ed5fdc945d65c70c60a3ba (diff) | |
parent | 525482202015f7e226fed9994f5a8bd27eff410a (diff) |
Merge pull request #202 from dan4ik605743/add-sample
add sample
Diffstat (limited to 'samples')
-rw-r--r-- | samples/received-text-processing/CMakeLists.txt | 19 | ||||
-rw-r--r-- | samples/received-text-processing/src/main.cpp | 61 |
2 files changed, 80 insertions, 0 deletions
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; +} |