summaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorOleg Morozenkov <reo7sp@users.noreply.github.com>2017-01-02 22:34:14 +0300
committerOleg Morozenkov <reo7sp@users.noreply.github.com>2017-01-02 22:34:14 +0300
commitd578d8be57e80d8ca05ad1bd936eb4936bd87d9d (patch)
tree66287d801a087caf7cc3965bf14f99d598b38dbe /samples
parent8ee17005234d535ef3d311817ad23992fb9932f2 (diff)
Inline keyboard sample
Diffstat (limited to 'samples')
-rw-r--r--samples/inline-keyboard/CMakeLists.txt10
-rw-r--r--samples/inline-keyboard/Dockerfile8
-rw-r--r--samples/inline-keyboard/src/main.cpp56
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;
+}