yatbcpp  0.0.1
Yet another Telegram Bot CPP Library
Bot.h
Go to the documentation of this file.
1 //
2 // Created by norbert on 12.08.17.
3 //
4 
5 #ifndef YATBCPP_BOT_H
6 #define YATBCPP_BOT_H
7 
8 #include <iostream>
9 #include <vector>
10 #include <thread>
11 #include <functional>
12 #include <queue>
13 #include <condition_variable>
14 
15 #include "../bot/Token.h"
16 #include "../types/InlineQuery.h"
17 #include "../types/MessageEntity.h"
18 #include "../types/Message.h"
19 #include "../types/Update.h"
20 #include "../types/User.h"
21 
22 #include "../methods/sendMessage.h"
23 
24 #include "../methods/telegram_methodJSON.h"
25 #include "../methods/telegram_methodMultipart.h"
26 
27 namespace yatbcpp {
28  class Bot {
29  public:
30 
31  Bot(Token& T);
32 
33  void startLongPoll();
34 
35  void startLongPoll(long timeout);
36 
37  void stopLongPoll();
38 
39  void startUpdating();
40 
41  void stopUpdating();
42 
43  const User getMe() const ;
44 
45 // const Message sendSM(sendMessage sm);
46 
47  void addOnUpdateListener(std::function<void(Update)> Listener);
48 
49  void addOnMessageBotCommandListener(std::function<void(Message,MessageEntity)> Listener);
50 
51  void addOnMessageListener(std::function<void(Message)> Listener);
52 
53  void addOnMessageEditedListener(std::function<void(Message)> Listener);
54 
55  void addOnChannelPostListener(std::function<void(Message)> Listener);
56 
57  void addOnChannelPostEditedListener(std::function<void(Message)> Listener);
58 
59  void addOnInlineQueryListener(std::function<void(InlineQuery)> Listener);
60 
61  void join();
62 
63  const Message send(sendMessage sendMessage) const;
64 
65  private:
66 
67  const Token token;
68 
69 
70 
71  std::thread Polling;
72  std::thread Updating;
73 
74  bool isPolling;
75  bool isUpdating;
76 
77  void LongPolling(long timeout);
79 
80  std::mutex m;
81  std::queue<Update> pendingUpdates;
82  std::condition_variable pendingUpdatesAvailable;
83 
84  std::vector<std::function<void(Update)>> OnUpdateListeners;
85  std::vector<std::function<void(Message,MessageEntity)>> OnMessageCommandListener;
86  std::vector<std::function<void(Message)>> OnMessageListener;
87  std::vector<std::function<void(Message)>> OnMessageEditedListener;
88  std::vector<std::function<void(Message)>> OnChannelPostListener;
89  std::vector<std::function<void(Message)>> OnChannelPostEditedListener;
90  std::vector<std::function<void(InlineQuery)>> OnInlineQueryListener;
91 
92 
93 
94 
95  };
96 }
97 
98 #endif //YATBOT_BOT_H
void stopUpdating()
Definition: Bot.cc:155
void startUpdating()
Definition: Bot.cc:149
std::vector< std::function< void(InlineQuery)> > OnInlineQueryListener
Definition: Bot.h:90
void addOnMessageListener(std::function< void(Message)> Listener)
Definition: Bot.cc:222
const User getMe() const
Definition: Bot.cc:246
std::mutex m
Definition: Bot.h:80
std::vector< std::function< void(Message)> > OnMessageListener
Definition: Bot.h:86
std::vector< std::function< void(Message)> > OnChannelPostEditedListener
Definition: Bot.h:89
void addOnMessageEditedListener(std::function< void(Message)> Listener)
Definition: Bot.cc:226
void addOnUpdateListener(std::function< void(Update)> Listener)
Definition: Bot.cc:215
std::vector< std::function< void(Update)> > OnUpdateListeners
Definition: Bot.h:84
void addOnChannelPostListener(std::function< void(Message)> Listener)
Definition: Bot.cc:230
bool isUpdating
Definition: Bot.h:75
bool isPolling
Definition: Bot.h:74
void addOnChannelPostEditedListener(std::function< void(Message)> Listener)
Definition: Bot.cc:234
std::queue< Update > pendingUpdates
Definition: Bot.h:81
Definition: Bot.h:27
void NotifyRegisteredListeners()
Definition: Bot.cc:160
void join()
Definition: Bot.cc:44
void stopLongPoll()
Definition: Bot.cc:87
std::thread Polling
Definition: Bot.h:71
std::condition_variable pendingUpdatesAvailable
Definition: Bot.h:82
std::vector< std::function< void(Message)> > OnChannelPostListener
Definition: Bot.h:88
const Message send(sendMessage sendMessage) const
Definition: Bot.cc:253
std::vector< std::function< void(Message)> > OnMessageEditedListener
Definition: Bot.h:87
std::vector< std::function< void(Message, MessageEntity)> > OnMessageCommandListener
Definition: Bot.h:85
Bot(Token &T)
Definition: Bot.cc:31
void addOnMessageBotCommandListener(std::function< void(Message, MessageEntity)> Listener)
Definition: Bot.cc:218
const Token token
Definition: Bot.h:67
void addOnInlineQueryListener(std::function< void(InlineQuery)> Listener)
Definition: Bot.cc:238
void startLongPoll()
Definition: Bot.cc:72
void LongPolling(long timeout)
Definition: Bot.cc:95
std::thread Updating
Definition: Bot.h:72