#include #include #include #include #include //std bind #include // signal #include #include using json = nlohmann::json; #include "bot.h" static bool run = true; void sig_handler(int sig_num) { Log::info << "signalHandler triggered"; run = false; (void) sig_num; } class CommandStart : public TelegramAPI::Command { public: CommandStart() : TelegramAPI::Command("/start") {} virtual bool process(TelegramAPI::Manager* m, const TelegramAPI::Message& msg) { TelegramAPI::InlineKeyboard kb; kb.addButton(TelegramAPI::InlineButton::createSwitchInlineQuery("Open in Chat"), 0); return m->sendMessage(msg.chat.id, "This bot is inline only.", kb); } }; int main(int argc, const char** argv) { Log::init(); Log::setConsoleLogLevel(Log::Level::TRACE); Log::addLogfile("log.txt", Log::Level::WARN); #if __unix__ Log::setColoredOutput(true); #endif Log::info << "Hello, World!"; //read config std::ifstream configfile("config.json"); json j; configfile >> j; FontBot bot; TelegramAPI::Manager tapi(j["telegram"]["apikey"]); std::unique_ptr cmd(new CommandStart()); tapi.registerCommand(std::move(cmd)); namespace pl = std::placeholders; tapi.setInlineQueryHandler(std::bind(&FontBot::handleInline, &bot, pl::_1, pl::_2)); signal(SIGINT, sig_handler); while(run) { tapi.getUpdates(); } Log::stop(); return 0; }