From 1aa81588384359f1f96b0dff453374570439af72 Mon Sep 17 00:00:00 2001 From: Oleg Morozenkov Date: Thu, 26 Jan 2023 10:34:29 +0300 Subject: fix #254 --- samples/receive-file/CMakeLists.txt | 21 +++++++++++++++ samples/receive-file/Dockerfile | 8 ++++++ samples/receive-file/src/main.cpp | 51 +++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 samples/receive-file/CMakeLists.txt create mode 100644 samples/receive-file/Dockerfile create mode 100644 samples/receive-file/src/main.cpp (limited to 'samples/receive-file') 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 + +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 +#include +#include +#include +#include + +#include + +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; +} -- cgit v1.2.3