Skip to content

deinsone/tgfr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tgfr

Overview

Tgfr is a c++ library for building high loaded telegram bots.

It provides set of tools to simplify building of business logic and hide low level operations.

Project Goals

The goal of this project is to build c++ interface for creating telegram bots serving of hundreds users the same time with simple separated project structure.

Usage

The following code snippets show how you might implement a simple bot.

main.cpp

#include <tgfr/tgfr.hpp>
#include "EventStart.hpp"

int main(int argc, char** argv) {
    tgfr::Init();

    // Make event manager with maximum 10 same time processing events and 1 minute max lifetime
    auto eventmanager = tgfr::EventManager::make_manager(10, std::chrono::minutes(1));

    // Make event handler
    auto eventhandler = tgfr::EventHandler::make_handler(eventmanager);

    // Add events to be handled
    eventhandler->addEvent<Events::EventStart>();

    // Make bot with specific token
    auto bot = tgfr::Bot::make_bot(eventmanager, eventhandler, "!!! TOKEN !!!");

    // Start bot with BotSync executor or BotAsync
    bot->start<tgfr::BotSync>();

    return 0;
}

EventStart.hpp

#include <tgfr/handler/Event.hpp>

// Class inherited from EventMessage. You should override Check and Handle methods only
class EventStart : public EventMessage {
    EVENT_MESSAGE_CLASS(EventStart)

public:
    // Method to check the event can be handled. Check if message text is '/start'
    virtual bool Check(const std::shared_ptr<IEventObject<Message>>& eventobject) override {
        return eventobject->GetData() == "/start";
    }

    // Handle event. Send some message in response
    virtual void Handle(const std::shared_ptr<TgBot::Bot>& bot) override {
        bot->getApi().sendMessage(m_eventobject->GetImpl()->from->id, "Hi! Nice to meat you");
    }
};

See more samples on samples

Building

Tgfr uses cmake build system. Cmake project is located in root directory of the project

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make

Build options

-DTGFR_BUILD_SHARED_LIBS     # Build shared library instead dynamic
-DTGFR_BUILD_SAMPLES         # Build samples

Use in projects

To use tgfr as library use the instruction:

cd <project-path>
git submodule add https://github.com/DeinsOne/tgfr.git third-party/tgfr

Before the target add the module subdirectory in your CMakeLists.txt

add_subdirectory(third-party/tgfr)
add_executable(your-executable ...)
target_link_libraries(your-executable tgfr)

Dependencies

Tgfr requires a compiler with C++11 support. The library is built over tgbot-cpp library. Deps will be automatically installed with inbuilt script.

./utilities/install-deps.sh

Documentation

Doxygen documentation can be built by running 'doxygen' from the project root directory. Generated documentation will be placed in 'doc/html'.

Licence

The MIT License.

About

Tgfr is a c++ library for building high loaded telegram bots

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published