diff options
author | Oleg Morozenkov <reo7sp@users.noreply.github.com> | 2017-01-02 22:34:14 +0300 |
---|---|---|
committer | Oleg Morozenkov <reo7sp@users.noreply.github.com> | 2017-01-02 22:34:14 +0300 |
commit | d578d8be57e80d8ca05ad1bd936eb4936bd87d9d (patch) | |
tree | 66287d801a087caf7cc3965bf14f99d598b38dbe /samples/inline-keyboard | |
parent | 8ee17005234d535ef3d311817ad23992fb9932f2 (diff) |
Inline keyboard sample
Diffstat (limited to 'samples/inline-keyboard')
-rw-r--r-- | samples/inline-keyboard/CMakeLists.txt | 10 | ||||
-rw-r--r-- | samples/inline-keyboard/Dockerfile | 8 | ||||
-rw-r--r-- | samples/inline-keyboard/src/main.cpp | 56 |
3 files changed, 74 insertions, 0 deletions
diff --git a/samples/inline-keyboard/CMakeLists.txt b/samples/inline-keyboard/CMakeLists.txt new file mode 100644 index 0000000..c59a97a --- /dev/null +++ b/samples/inline-keyboard/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 2.8.4) +project(inline-keyboard) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(Boost_USE_MULTITHREADED ON) +find_package(Threads REQUIRED) +find_package(OpenSSL REQUIRED) +find_package(Boost COMPONENTS system iostreams unit_test_framework REQUIRED) +include_directories(/usr/local/include ${OPENSSL_INCLUDE_DIR} ${Boost_INCLUDE_DIR}) +add_executable(inline-keyboard src/main.cpp) +target_link_libraries(inline-keyboard /usr/local/lib/libTgBot.a ${CMAKE_THREAD_LIBS_INIT} ${OPENSSL_LIBRARIES} ${Boost_LIBRARIES}) diff --git a/samples/inline-keyboard/Dockerfile b/samples/inline-keyboard/Dockerfile new file mode 100644 index 0000000..4598595 --- /dev/null +++ b/samples/inline-keyboard/Dockerfile @@ -0,0 +1,8 @@ +FROM reo7sp/tgbot-cpp +MAINTAINER Oleg Morozenkov <a@reo7sp.ru> + +WORKDIR /tmp/inline-keyboard +COPY . . +RUN cmake . +RUN make +CMD ./inline-keyboard diff --git a/samples/inline-keyboard/src/main.cpp b/samples/inline-keyboard/src/main.cpp new file mode 100644 index 0000000..6832635 --- /dev/null +++ b/samples/inline-keyboard/src/main.cpp @@ -0,0 +1,56 @@ +#include <signal.h> +#include <stdio.h> +#include <exception> + +#include <tgbot/tgbot.h> + +using namespace std; +using namespace TgBot; + +bool sigintGot = false; + +int main() { + signal(SIGINT, [](int s) { + printf("SIGINT got"); + sigintGot = true; + }); + + Bot bot("PLACE YOUR TOKEN HERE"); + + // Thanks Pietro Falessi for code + TgBot::InlineKeyboardMarkup::Ptr Keyboard(new TgBot::InlineKeyboardMarkup); + std::vector<InlineKeyboardButton::Ptr> Row0; + TgBot::InlineKeyboardButton::Ptr CheckButton(new TgBot::InlineKeyboardButton); + CheckButton->text="Check"; + CheckButton->callbackData="Check"; + Row0.push_back(CheckButton); + Keyboard->inlineKeyboard.push_back(Row0); + + bot.getEvents().onCommand("start", [&bot, &Keyboard](Message::Ptr message) { + bot.getApi().sendMessage(message->chat->id, "Hi!",false,0, Keyboard); + }); + bot.getEvents().onCommand("check", [&bot, &Keyboard](Message::Ptr message) { + string response = CheckCluster(); + bot.getApi().sendMessage(message->chat->id, response, false, 0, Keyboard,"Markdown"); + }); + bot.getEvents().onCallbackQuery([&bot, &Keyboard](CallbackQuery::Ptr query) { + if (StringTools::startsWith(query->data, "Check")) { + string response = CheckCluster(); + bot.getApi().sendMessage(query->message->chat->id, response, false, 0, Keyboard,"Markdown"); + } + }); + + try { + printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str()); + + TgLongPoll longPoll(bot); + while (!sigintGot) { + printf("Long poll started\n"); + longPoll.start(); + } + } catch (exception& e) { + printf("error: %s\n", e.what()); + } + + return 0; +} |