tgbotxx 1.1.9.2
Telegram Bot C++ Library
Loading...
Searching...
No Matches
tgbotxx

MIT License Docs Language

tgbotxx

Telegram Bot C++ Library

Features

CI Status

Operating system Build status
Ubuntu (x64) Ubuntu
Windows (x64) Windows
macOS macOS

Basic sample

‍see examples for more

#include <iostream>
using namespace tgbotxx;
class MyBot : public Bot {
public:
MyBot() : Bot("Bot token here from @BotFather") {}
private:
// Called before Bot starts receiving updates
void onStart() override {
// Initialize your code here...
std::cout << "Bot Started\n";
}
// Called before Bot shuts down (triggered by Bot::stop())
void onStop() override {
// Cleanup your code here
std::cout << "Bot Stopped\n";
}
// Called when Bot receives a new message of any kind
// NB: Ptr<T> = std::shared_ptr<T>
void onAnyMessage(const Ptr<Message>& message) override {
std::string reply = "Hi " + message->from->firstName
+ "!, got your message!";
api()->sendMessage(message->chat->id, reply);
}
// override other callbacks if needed... See Bot.hpp
};
int main() {
MyBot bot;
bot.start();
return 0;
}
std::shared_ptr< T > Ptr
Definition Ptr.hpp:6

Examples

‍see examples for more

Example Description Preview
WeatherBot Bot that displays the weather information of a city using the weather api. preview
EarthquakeBot Bot that will alert you if there is a recent earthquake somewhere in the world. preview
QrCodeBot Bot that can generate QrCode images from text and extract text from QrCode Images. preview
UrlShortenerBot Bot for shortening URLs. preview
Inline Buttons Bot that uses inline keyboard buttons to interact with users. preview
Keyboard Buttons Bot that uses keyboard buttons to interact with users. preview
PaidSubscriptionBot Bot that offers it's services for a paid subscription. preview
ThreadPoolBot Bot that uses a ThreadPool to handle multiple requests simultaneously. preview
GitWatcherBot Real world Bot that you can use to watch repositories changes and get notified about (stars, forks, issues, watchers and pulls). preview

Usage (4 approaches)

1. FetchContent *(recommended)*

Simply use CMake's FetchContent in your project's CMakeLists.txt as below:

cmake_minimum_required(VERSION 3.20)
project(my_bot)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(tgbotxx
GIT_REPOSITORY "https://github.com/baderouaich/tgbotxx"
GIT_TAG "v1.1.9.2" # Compatible with Telegram Api 9.2
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
EXCLUDE_FROM_ALL
)
FetchContent_MakeAvailable(tgbotxx)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC tgbotxx)

2. PkgConfig: clone and install the library locally, then use PkgConfig:

example

git clone https://github.com/baderouaich/tgbotxx
cd tgbotxx
cmake .. -DCMAKE_BUILD_TYPE=Release
sudo make install
# On Windows run `make install` as administrator
cmake_minimum_required(VERSION 3.20)
project(my_bot)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(PkgConfig REQUIRED)
pkg_check_modules(tgbotxx REQUIRED tgbotxx)
if (NOT tgbotxx_FOUND)
message(FATAL_ERROR "Did you install tgbotxx locally?")
endif ()
add_executable(${PROJECT_NAME} main.cpp)
target_link_directories(${PROJECT_NAME} PUBLIC ${tgbotxx_LIBRARY_DIRS})
target_include_directories(${PROJECT_NAME} PUBLIC ${tgbotxx_INCLUDE_DIRS})
target_compile_options(${PROJECT_NAME} PUBLIC ${tgbotxx_CFLAGS_OTHER})
target_link_libraries(${PROJECT_NAME} PUBLIC ${tgbotxx_LIBRARIES})

3. find_package: clone and install the library locally, then use find_package(tgbotxx REQUIRED):

example

cmake_minimum_required(VERSION 3.20)
project(my_bot)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(tgbotxx REQUIRED)
if (NOT tgbotxx_FOUND)
message(FATAL_ERROR "Did you install tgbotxx locally?")
endif ()
add_executable(${PROJECT_NAME} main.cpp)
target_link_directories(${PROJECT_NAME} PUBLIC ${tgbotxx_LIBRARY_DIRS})
target_include_directories(${PROJECT_NAME} PUBLIC ${tgbotxx_INCLUDE_DIRS})
target_compile_options(${PROJECT_NAME} PUBLIC ${tgbotxx_CFLAGS_OTHER})
target_link_libraries(${PROJECT_NAME} PUBLIC ${tgbotxx_LIBRARIES})

4. Submodule: Use tgbotxx as a project submodule (without installation)

example

You can also use this library as a submodule in your bot project without the need of installing it in your system. Use git clone or git submodule add the library:

git submodule add https://github.com/baderouaich/tgbotxx ./lib/tgbotxx

or

git clone https://github.com/baderouaich/tgbotxx ./lib/tgbotxx

Then add add_subdirectory(lib/tgbotxx) in your CMakeLists.txt.

cmake_minimum_required(VERSION 3.20)
project(my_bot)
add_subdirectory(lib/tgbotxx) # <-- clone tgbotxx in your project's lib/ directory
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC tgbotxx) # <-- link with tgbotxx

Other actively maintained Telegram Bot C++ Libraries

  • tgbot-cpp: C++ library for Telegram bot API
  • tgbot: C++ library for Telegram Bot API with generated API types and methods

Refs:

Telegram Api Documentation