diff options
author | Oleg Morozenkov <m@oleg.rocks> | 2023-01-26 10:43:23 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-26 10:43:23 +0300 |
commit | ab7ce1f7ae842c74f67f3576542aa68f5eff8ebb (patch) | |
tree | a3eedee7d73d703d56f81e182abd8c5e4f2626fc | |
parent | 8f49832c1ed01f44b08718ffc9cd4ed816d2a0cd (diff) | |
parent | 1aa81588384359f1f96b0dff453374570439af72 (diff) |
Merge pull request #255 from reo7sp/Ctulh-master
Add file sample #254 with fixes
-rw-r--r-- | Dockerfile_test | 4 | ||||
-rw-r--r-- | samples/receive-file/CMakeLists.txt | 21 | ||||
-rw-r--r-- | samples/receive-file/Dockerfile | 8 | ||||
-rw-r--r-- | samples/receive-file/src/main.cpp | 51 |
4 files changed, 84 insertions, 0 deletions
diff --git a/Dockerfile_test b/Dockerfile_test index 6306115..9e37736 100644 --- a/Dockerfile_test +++ b/Dockerfile_test @@ -74,6 +74,10 @@ WORKDIR /usr/src/tgbot-cpp/samples/reply-keyboard RUN rm -rf CMakeCache.txt CMakeFiles/ && \ cmake . && make -j$(nproc) +WORKDIR /usr/src/tgbot-cpp/samples/receive-file +RUN rm -rf CMakeCache.txt CMakeFiles/ && \ + cmake . && make -j$(nproc) + WORKDIR /usr/src/tgbot-cpp ENV CTEST_OUTPUT_ON_FAILURE=1 CMD make test diff --git a/samples/receive-file/CMakeLists.txt b/samples/receive-file/CMakeLists.txt new file mode 100644 index 0000000..0031c89 --- /dev/null +++ b/samples/receive-file/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.10.2) +project(receive-file) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -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(file src/main.cpp) + +target_link_libraries(file /usr/local/lib/libTgBot.a ${CMAKE_THREAD_LIBS_INIT} ${OPENSSL_LIBRARIES} ${Boost_LIBRARIES} ${CURL_LIBRARIES}) diff --git a/samples/receive-file/Dockerfile b/samples/receive-file/Dockerfile new file mode 100644 index 0000000..ce91c8c --- /dev/null +++ b/samples/receive-file/Dockerfile @@ -0,0 +1,8 @@ +FROM reo7sp/tgbot-cpp +MAINTAINER Oleg Morozenkov <m@oleg.rocks> + +WORKDIR /usr/src/receive-file +COPY . . +RUN cmake . +RUN make -j4 +CMD ./receive-file diff --git a/samples/receive-file/src/main.cpp b/samples/receive-file/src/main.cpp new file mode 100644 index 0000000..bbfaadf --- /dev/null +++ b/samples/receive-file/src/main.cpp @@ -0,0 +1,51 @@ +#include <csignal> +#include <cstdio> +#include <cstdlib> +#include <exception> +#include <string> + +#include <tgbot/tgbot.h> + +using namespace std; +using namespace TgBot; + +int main() { + string token(getenv("TOKEN")); + printf("Token: %s\n", token.c_str()); + + Bot bot(token); + bot.getEvents().onCommand("start", [&bot](Message::Ptr message) { + bot.getApi().sendMessage(message->chat->id, "Hi!"); + }); + bot.getEvents().onAnyMessage([&bot](Message::Ptr message) { + printf("User wrote %s\n", message->text.c_str()); + + File::Ptr file = bot.getApi().getFile(message->document->fileId); + std::string fileContent = bot.getApi().downloadFile(file->filePath); + + if (StringTools::startsWith(message->text, "/start")) { + return; + } + bot.getApi().sendMessage(message->chat->id, "Your file content: " + fileContent); + }); + + signal(SIGINT, [](int s) { + printf("SIGINT got\n"); + exit(0); + }); + + try { + printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str()); + bot.getApi().deleteWebhook(); + + TgLongPoll longPoll(bot); + while (true) { + printf("Long poll started\n"); + longPoll.start(); + } + } catch (exception& e) { + printf("error: %s\n", e.what()); + } + + return 0; +} |