reo7sp/tgbot-cpp
GitHub: reo7sp/tgbot-cpp
跨平台 C++ 封装库,用于快速开发 Telegram Bot API 应用。
Stars: 1153 | Forks: 262
# tgbot-cpp
[](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, 中间件, 事件处理, 即时通讯, 安全测试工具, 开发库, 开源项目, 数据擦除, 机器人框架, 消息推送, 网络编程, 请求拦截, 长轮询