Skip to content

reo7sp/tgbot-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1b10d2f · Feb 2, 2025
Jun 10, 2024
Feb 2, 2025
Apr 20, 2024
Feb 2, 2025
Dec 1, 2023
Nov 8, 2022
Jul 22, 2018
Jul 22, 2018
Sep 30, 2022
Sep 20, 2022
Jun 10, 2024
May 10, 2023
Jun 10, 2024
Dec 21, 2019
Nov 8, 2022
Jun 13, 2024
Apr 22, 2024

Repository files navigation

tgbot-cpp

GitHub contributors

C++ library for Telegram bot API.

Documentation is located here.

State

Sample

Simple echo bot which sends everything it receives:

#include <stdio.h>
#include <tgbot/tgbot.h>

int main() {
    TgBot::Bot bot("PLACE YOUR TOKEN HERE");
    bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {
        bot.getApi().sendMessage(message->chat->id, "Hi!");
    });
    bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {
        printf("User wrote %s\n", message->text.c_str());
        if (StringTools::startsWith(message->text, "/start")) {
            return;
        }
        bot.getApi().sendMessage(message->chat->id, "Your message is: " + message->text);
    });
    try {
        printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str());
        TgBot::TgLongPoll longPoll(bot);
        while (true) {
            printf("Long poll started\n");
            longPoll.start();
        }
    } catch (TgBot::TgException& e) {
        printf("error: %s\n", e.what());
    }
    return 0;
}

All other samples are located here.

Dependencies

Dependencies:

  • CMake
  • Boost
  • OpenSSL
  • ZLib
  • Libcurl (optional unless you want to use curl-based http client CurlHttpClient).

Library installation on Linux

You can install dependencies on Debian-based distibutives with these commands:

sudo apt install g++ make binutils cmake libboost-system-dev libssl-dev zlib1g-dev libcurl4-openssl-dev

Optionally, install the dependencies for testing and documenting

sudo apt install libboost-test-dev doxygen

You can compile and install the library with these commands:

git clone https://github.com/reo7sp/tgbot-cpp
cd tgbot-cpp
cmake .
make -j4
sudo make install

Alternatively, you can use Docker to build and run your bot. Set the base image of your's Dockerfile to reo7sp/tgbot-cpp.

Library installation on MacOS

You can install dependencies with these commands:

brew install gcc cmake boost openssl zlib curl

You can compile and install the library like Linux instructions.

Library installation on Windows

Download vcpkg and tgbot-cpp

Taken from Vcpkg - Quick Start: Windows.

Prerequisites:

First, download and bootstrap vcpkg itself; it can be installed anywhere, but generally we recommend using vcpkg as a submodule for CMake projects, and installing it globally for Visual Studio projects. We recommend somewhere like C:\src\vcpkg or C:\dev\vcpkg, since otherwise you may run into path issues for some port build systems.

> git clone https://github.com/microsoft/vcpkg
> .\vcpkg\bootstrap-vcpkg.bat

In order to use vcpkg with Visual Studio, run the following command (may require administrator elevation):

> .\vcpkg\vcpkg integrate install

To install the libraries for Windows x64, run:

> .\vcpkg\vcpkg install tgbot-cpp:x64-windows

To install for Windows x86, run:

> .\vcpkg\vcpkg install tgbot-cpp

The library will now be installed and Visual Studio should be able to find the vcpkg installation.

Setup project with CMakeLists

Use the example CMakeLists.txt with changes:

  1. Remove /usr/local/include
  2. Change /usr/local/lib/libTgBot.a to C:/src/vcpkg/installed/x64-windows/lib/TgBot.lib or something simmilar according to your own installation path.

Bot compilation

With CMake

Example CMakeLists.txt

Also, you can treat this repository as a submodule of your project, for example, see echobot-submodule.

Without CMake

g++ telegram_bot.cpp -o telegram_bot --std=c++14 -I/usr/local/include -lTgBot -lboost_system -lssl -lcrypto -lpthread

Build options

-DTGBOT_DISABLE_NAGLES_ALGORITHM   # Disable 'Nagle's algorithm'
-DTGBOT_CHANGE_SOCKET_BUFFER_SIZE  # Socket Buffer Size Expansion
-DTGBOT_CHANGE_READ_BUFFER_SIZE    # Read Buffer Size Expansion

Licence

The MIT License.