From 90dc11b7496864077cc81b4710673896147e2bfa Mon Sep 17 00:00:00 2001 From: Ctuh Date: Tue, 24 Jan 2023 16:11:53 +0300 Subject: add file sample --- samples/file/CMakeLists.txt | 21 ++++++++++++++++++ samples/file/Dockerfile | 8 +++++++ samples/file/src/main.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 samples/file/CMakeLists.txt create mode 100644 samples/file/Dockerfile create mode 100644 samples/file/src/main.cpp (limited to 'samples') diff --git a/samples/file/CMakeLists.txt b/samples/file/CMakeLists.txt new file mode 100644 index 0000000..67b9b26 --- /dev/null +++ b/samples/file/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.10.2) +project(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/file/Dockerfile b/samples/file/Dockerfile new file mode 100644 index 0000000..b87c2ca --- /dev/null +++ b/samples/file/Dockerfile @@ -0,0 +1,8 @@ +FROM reo7sp/tgbot-cpp +MAINTAINER Oleg Morozenkov + +WORKDIR /usr/src/photo +COPY . . +RUN cmake . +RUN make -j4 +CMD ./photo diff --git a/samples/file/src/main.cpp b/samples/file/src/main.cpp new file mode 100644 index 0000000..f46b288 --- /dev/null +++ b/samples/file/src/main.cpp @@ -0,0 +1,52 @@ +#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