reo7sp/tgbot-cpp

GitHub: reo7sp/tgbot-cpp

跨平台 C++ 封装库,用于快速开发 Telegram Bot API 应用。

Stars: 1153 | Forks: 262

# tgbot-cpp [![GitHub contributors](https://img.shields.io/github/contributors/reo7sp/tgbot-cpp.svg)](https://github.com/reo7sp/tgbot-cpp/graphs/contributors) 用于 Telegram bot API 的 C++ 库。 文档位于[这里](http://reo7sp.github.io/tgbot-cpp)。 ## 状态 - [x] Telegram Bot API 7.2 - [ ] [MaybeInaccessibleMessage](https://core.telegram.org/bots/api#maybeinaccessiblemessage) - [ ] [Message->pinnedMessage](https://core.telegram.org/bots/api#message) - [ ] [CallbackQuery->message](https://core.telegram.org/bots/api#callbackquery) - [ ] [Deep Linking](https://core.telegram.org/bots/features#deep-linking) ## 示例 一个简单的回显机器人,发送它接收到的所有内容: ``` #include #include 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; } ``` 所有其他示例位于[这里](samples)。 ## 依赖 依赖项: - CMake - Boost - OpenSSL - ZLib - Libcurl(可选,除非您想使用基于 curl 的 http 客户端 `CurlHttpClient`)。 ## 在 Linux 上安装库 您可以使用以下命令在基于 Debian 的发行版上安装依赖项: ``` sudo apt install g++ make binutils cmake libboost-system-dev libssl-dev zlib1g-dev libcurl4-openssl-dev ``` 可选地,安装用于测试和文档的依赖项 ``` sudo apt install libboost-test-dev doxygen ``` 您可以使用以下命令编译和安装该库: ``` git clone https://github.com/reo7sp/tgbot-cpp cd tgbot-cpp cmake . make -j4 sudo make install ``` 或者,您可以使用 Docker 来构建和运行您的机器人。将您的 Dockerfile 的基础镜像设置为 [reo7sp/tgbot-cpp](https://hub.docker.com/r/reo7sp/tgbot-cpp/)。 ## 在 MacOS 上安装库 您可以使用以下命令安装依赖项: ``` brew install gcc cmake boost openssl zlib curl ``` 您可以按照 Linux 的说明编译和安装该库。 ## 在 Windows 上安装库 ### 下载 vcpkg 和 tgbot-cpp 摘自 [Vcpkg - Quick Start: Windows](https://github.com/Microsoft/vcpkg/#quick-start-windows)。 前置条件: - Windows 7 或更高版本 - [Git][https://git-scm.com/downloads] - [Visual Studio][https://visualstudio.microsoft.com] 2015 Update 3 或更高版本,并包含英语语言包 首先,下载并引导 vcpkg 本身;它可以安装在任何地方,但通常我们建议将 vcpkg 用作 CMake 项目的子模块,并在 Visual Studio 项目中全局安装它。我们建议使用类似 `C:\src\vcpkg` 或 `C:\dev\vcpkg` 的位置,否则某些端口构建系统可能会遇到路径问题。 ``` > git clone https://github.com/microsoft/vcpkg > .\vcpkg\bootstrap-vcpkg.bat ``` 为了在 Visual Studio 中使用 vcpkg,请运行以下命令(可能需要管理员权限): ``` > .\vcpkg\vcpkg integrate install ``` 要为 Windows x64 安装库,请运行: ``` > .\vcpkg\vcpkg install tgbot-cpp:x64-windows ``` 要为 Windows x86 安装,请运行: ``` > .\vcpkg\vcpkg install tgbot-cpp ``` 该库现已安装,Visual Studio 应该能够找到 vcpkg 安装。 ### 使用 CMakeLists 设置项目 使用 [示例 CMakeLists.txt](samples/echobot/CMakeLists.txt) 并进行以下修改: 1. 移除 `/usr/local/include` 2. 将 `/usr/local/lib/libTgBot.a` 更改为 `C:/src/vcpkg/installed/x64-windows/lib/TgBot.lib` 或根据您自己的安装路径进行类似设置。 ## 机器人编译 ### 使用 CMake [示例 CMakeLists.txt](samples/echobot/CMakeLists.txt) 此外,您可以将此仓库视为您项目的子模块,例如,参见 [echobot-submodule](samples/echobot-submodule/CMakeLists.txt)。 ### 不使用 CMake ``` g++ telegram_bot.cpp -o telegram_bot --std=c++14 -I/usr/local/include -lTgBot -lboost_system -lssl -lcrypto -lpthread ``` ### 构建选项 ``` -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 ``` ## 许可证 [The MIT License](https://github.com/reo7sp/tgbot-cpp/blob/master/LICENSE)。
标签:API 封装, Bash脚本, Boost, C++, Chatbot, CMake, DNS解析, Libcurl, OpenSSL, Telegram Bot API, 中间件, 事件处理, 即时通讯, 安全测试工具, 开发库, 开源项目, 数据擦除, 机器人框架, 消息推送, 网络编程, 请求拦截, 长轮询