Telegram Bot API for C++14
Find a file
Kirill Kirilenko 9a607eef8c Used boost::optional for optional fields.
Updates and attachments hierarchy replaced with Union-like classes.
Changes in JSON parsing for RVO/move-semantics.
2017-02-19 16:09:13 +03:00
cmake Added CMake function RequireCXX14(). 2016-11-26 03:01:12 +03:00
doc Removed hardcoded build paths. 2016-11-26 02:10:29 +03:00
ext Updated C++ Requests. 2016-11-11 16:43:46 +03:00
include/telebotxx Used boost::optional for optional fields. 2017-02-19 16:09:13 +03:00
src Used boost::optional for optional fields. 2017-02-19 16:09:13 +03:00
tests Used boost::optional for optional fields. 2017-02-19 16:09:13 +03:00
.gitignore Added curlpp. 2016-09-27 03:24:51 +03:00
.gitmodules Removed RapidJSON headers. 2016-10-02 01:16:42 +03:00
.travis.yml Fixed invalid configure command for Travis CI. 2016-11-26 03:03:59 +03:00
CMakeLists.txt Added CMake function RequireCXX14(). 2016-11-26 03:01:12 +03:00
Doxyfile.in Created macro for simple named param classes declaration and definition. 2017-02-15 21:43:18 +03:00
LICENSE Added LICENSE. 2016-10-04 03:30:06 +04:00
README.md Fixed building instructions 2016-11-26 15:33:19 +04:00

telebotxx

Build Status

Telegram Bot API 2.0 for C++14. It uses C++ Requests library to perform HTTP requests and RapidJSON to work with JSON data. In development, so you are welcome to contribute.

Requirements

  • C++14-compatible compiler
  • CMake 2.8 or newer
  • Boost 1.54+
  • Boost Unit Test Framework (only for tests)

Building

You can set available options in CMakeLists.txt before running configure script.

git submodule update --init --recursive
mkdir build
cd build
cmake ..
make

Usage

Sending text message

Here is a simple example of how to send text message:

#include <telebotxx/BotApi.hpp>

std::string token = "YOUR:BOT:TOKEN";
int main()
{
  using namespace telebotxx;
  BotApi bot(token);
  Message answer = bot.sendMessage(ChatId{"@chat_name"},
                                   Text{"Hello, world!"}
                                  );
  return 0;
}

Member function BotApi::sendMessage() returns information about sent message on success or throws an exception.

You can pass additional options in any combination and order:

int messageId = ...; // ID of the original message to reply
Message answer = bot.sendMessage(ChatId{"@chat_name"},
                                 Text{"Hello, world!"},
                                 ReplyTo{messageId},
                                 ParseMode::Markdown,
                                 DisableNotification(),
                                 DisableWebPagePreview()
                                );

Note, that ChatId argument can be specified with its name or id:

ChatId{"@chat_name"}
ChatId{123456}

Sending images

To send a photo use any of the folowing variants depending of image source:

// for local file
Message answer = bot.sendPhoto(ChatId{"@chat_name"}, Photo{File{"photo.jpg"}});

// for in-memory image stored in std::vector
std::vector<char> photo = ...;
Message answer = bot.sendPhoto(ChatId{"@chat_name"},
                               Photo{Buffer{photo, "photo.jpg"}}
                              );

// for in-memory image stored in C-array
Message answer = bot.sendPhoto(ChatId{"@chat_name"},
                               Photo{Buffer{photo.data(), photo.size(), "photo.jpg"}}
                              );

// for image available by URL
Message answer = bot.sendPhoto(ChatId{"@chat_name"},
                               Photo{Url{"http://sample.com/sample.jpg"}}
                              );

// for already uploaded photo you can send it by id
Message answer = bot.sendPhoto(ChatId{"@chat_name"}, Photo{123456});

As in the case of messages, you can pass additional options:

Message answer = bot.sendPhoto(ChatId{"@chat_name"},
                               Photo{File{"photo.jpg"}}
                               Caption{"Sample photo"},
                               ReplyTo(messageId),
                               DisableNotification()
                              );