tgbot-cpp
Loading...
Searching...
No Matches
EventBroadcaster.h
Go to the documentation of this file.
1#pragma once
2
3#include "tgbot/Types.h"
4#include "tgbot/export.h"
5
6#include <functional>
7#include <initializer_list>
8#include <string>
9#include <unordered_map>
10#include <vector>
11
12namespace TgBot {
13
14class EventHandler;
15
22 friend EventHandler;
23
24public:
25 using MessageListener = std::function<void(std::shared_ptr<Message>)>;
26 using InlineQueryListener = std::function<void(std::shared_ptr<InlineQuery>)>;
27 using ChosenInlineResultListener = std::function<void(std::shared_ptr<ChosenInlineResult>)>;
28 using CallbackQueryListener = std::function<void(std::shared_ptr<CallbackQuery>)>;
29 using ShippingQueryListener = std::function<void(std::shared_ptr<ShippingQuery>)>;
30 using PreCheckoutQueryListener = std::function<void(std::shared_ptr<PreCheckoutQuery>)>;
31 using PollListener = std::function<void(std::shared_ptr<Poll>)>;
32 using PollAnswerListener = std::function<void(std::shared_ptr<PollAnswer>)>;
33 using ChatMemberUpdatedListener = std::function<void(std::shared_ptr<ChatMemberUpdated>)>;
34 using ChatJoinRequestListener = std::function<void(std::shared_ptr<ChatJoinRequest>)>;
35 using MessageReactionUpdatedListener = std::function<void(std::shared_ptr<MessageReactionUpdated>)>;
36 using MessageReactionCountUpdatedListener = std::function<void(std::shared_ptr<MessageReactionCountUpdated>)>;
37 using SuccessfulPaymentListener = std::function<void(std::shared_ptr<Message>, std::shared_ptr<SuccessfulPayment>)>;
38
43 void onAnyMessage(const MessageListener& listener);
44
50 void onCommand(const std::string& commandName, const MessageListener& listener);
51
57 void onCommand(const std::initializer_list<std::string>& commandsList, const MessageListener& listener);
58
63 void onUnknownCommand(const MessageListener& listener);
64
69 void onNonCommandMessage(const MessageListener& listener);
70
75 void onEditedMessage(const MessageListener& listener);
76
81 void onInlineQuery(const InlineQueryListener& listener);
82
90
96
104
112
119 void onPoll(const PollListener& listener);
120
127 void onPollAnswer(const PollAnswerListener& listener);
128
136
144
152
158
164
172
173private:
174 template<typename ListenerType, typename ObjectType>
175 void broadcast(const std::vector<ListenerType>& listeners, ObjectType object) const;
176
177 void broadcastAnyMessage(const std::shared_ptr<Message>& message) const;
178 bool broadcastCommand(const std::string& command, const std::shared_ptr<Message>& message) const;
179 void broadcastUnknownCommand(const std::shared_ptr<Message>& message) const;
180 void broadcastNonCommandMessage(const std::shared_ptr<Message>& message) const;
181 void broadcastEditedMessage(const std::shared_ptr<Message>& message) const;
182 void broadcastInlineQuery(const std::shared_ptr<InlineQuery>& query) const;
183 void broadcastChosenInlineResult(const std::shared_ptr<ChosenInlineResult>& result) const;
184 void broadcastCallbackQuery(const std::shared_ptr<CallbackQuery>& result) const;
185 void broadcastShippingQuery(const std::shared_ptr<ShippingQuery>& result) const;
186 void broadcastPreCheckoutQuery(const std::shared_ptr<PreCheckoutQuery>& result) const;
187 void broadcastPoll(const std::shared_ptr<Poll>& result) const;
188 void broadcastPollAnswer(const std::shared_ptr<PollAnswer>& result) const;
189 void broadcastMyChatMember(const std::shared_ptr<ChatMemberUpdated>& result) const;
190 void broadcastChatMember(const std::shared_ptr<ChatMemberUpdated>& result) const;
191 void broadcastChatJoinRequest(const std::shared_ptr<ChatJoinRequest>& result) const;
192 void broadcastMessageReactionUpdated(const std::shared_ptr<MessageReactionUpdated>& messageReaction) const;
193 void broadcastMessageReactionCountUpdated(
194 const std::shared_ptr<MessageReactionCountUpdated>& messageReactionCount) const;
195 void broadcastSuccessfulPayment(const std::shared_ptr<Message>& message) const;
196
197 std::vector<MessageListener> _onAnyMessageListeners;
198 std::unordered_map<std::string, MessageListener> _onCommandListeners;
199 std::vector<MessageListener> _onUnknownCommandListeners;
200 std::vector<MessageListener> _onNonCommandMessageListeners;
201 std::vector<MessageListener> _onEditedMessageListeners;
202 std::vector<InlineQueryListener> _onInlineQueryListeners;
203 std::vector<ChosenInlineResultListener> _onChosenInlineResultListeners;
204 std::vector<CallbackQueryListener> _onCallbackQueryListeners;
205 std::vector<ShippingQueryListener> _onShippingQueryListeners;
206 std::vector<PreCheckoutQueryListener> _onPreCheckoutQueryListeners;
207 std::vector<PollListener> _onPollListeners;
208 std::vector<PollAnswerListener> _onPollAnswerListeners;
209 std::vector<ChatMemberUpdatedListener> _onMyChatMemberListeners;
210 std::vector<ChatMemberUpdatedListener> _onChatMemberListeners;
211 std::vector<ChatJoinRequestListener> _onChatJoinRequestListeners;
212 std::vector<MessageReactionUpdatedListener> _onMessageReactionUpdatedListener;
213 std::vector<MessageReactionCountUpdatedListener> _onMessageReactionCountUpdatedListener;
214 std::vector<SuccessfulPaymentListener> _onSuccessfulPaymentListeners;
215};
216
217} // namespace TgBot
This class holds all event listeners.
std::function< void(std::shared_ptr< ChatMemberUpdated >)> ChatMemberUpdatedListener
void onChatMember(const ChatMemberUpdatedListener &listener)
Registers listener which receives a status if a chat member's status was updated in a chat....
void onCommand(const std::string &commandName, const MessageListener &listener)
Registers listener which receives all messages with commands (messages with leading '/' char).
void onShippingQuery(const ShippingQueryListener &listener)
Registers listener which receives new incoming shipping queries. Only for invoices with flexible pric...
void onAnyMessage(const MessageListener &listener)
Registers listener which receives new incoming message of any kind - text, photo, sticker,...
void onNonCommandMessage(const MessageListener &listener)
Registers listener which receives all messages without commands (messages with no leading '/' char).
void onPoll(const PollListener &listener)
Registers listener which receives new poll states. Bots receive only updates about stopped polls and ...
std::function< void(std::shared_ptr< ChosenInlineResult >)> ChosenInlineResultListener
void onCallbackQuery(const CallbackQueryListener &listener)
Registers listener which receives new incoming callback queries.
void onPollAnswer(const PollAnswerListener &listener)
Registers listener which receives an answer if a user changed their answer in a non-anonymous poll....
std::function< void(std::shared_ptr< InlineQuery >)> InlineQueryListener
void onUnknownCommand(const MessageListener &listener)
Registers listener which receives all messages with commands (messages with leading '/' char) which h...
void onMessageReaction(const MessageReactionUpdatedListener &listener)
Registers listener which receives new incoming message reaction update event.
std::function< void(std::shared_ptr< PreCheckoutQuery >)> PreCheckoutQueryListener
void onChosenInlineResult(const ChosenInlineResultListener &listener)
Registers listener which receives the results of an inline query that was chosen by a user and sent t...
void onEditedMessage(const MessageListener &listener)
Registers listener which receives new versions of a message that is known to the bot and was edited.
void onMessageReactionCount(const MessageReactionCountUpdatedListener &listener)
Registers listener which receives new incoming message reaction count update event.
void onChatJoinRequest(const ChatJoinRequestListener &listener)
Registers listener which receives requests to join the chat. The bot must have the canInviteUsers adm...
std::function< void(std::shared_ptr< PollAnswer >)> PollAnswerListener
void onInlineQuery(const InlineQueryListener &listener)
Registers listener which receives new incoming inline queries.
void onMyChatMember(const ChatMemberUpdatedListener &listener)
Registers listener which receives the bot's chat member status if it was updated in a chat....
std::function< void(std::shared_ptr< Poll >)> PollListener
std::function< void(std::shared_ptr< Message >)> MessageListener
void onPreCheckoutQuery(const PreCheckoutQueryListener &listener)
Registers listener which receives new incoming pre-checkout queries. Contains full information about ...
std::function< void(std::shared_ptr< CallbackQuery >)> CallbackQueryListener
void onCommand(const std::initializer_list< std::string > &commandsList, const MessageListener &listener)
Registers listener which receives all messages with commands (messages with leading '/' char).
std::function< void(std::shared_ptr< Message >, std::shared_ptr< SuccessfulPayment >)> SuccessfulPaymentListener
std::function< void(std::shared_ptr< ChatJoinRequest >)> ChatJoinRequestListener
std::function< void(std::shared_ptr< MessageReactionCountUpdated >)> MessageReactionCountUpdatedListener
void onSuccessfulPayment(const SuccessfulPaymentListener &listener)
Registers listener which receives information about successful payments. This listener is triggered w...
std::function< void(std::shared_ptr< ShippingQuery >)> ShippingQueryListener
std::function< void(std::shared_ptr< MessageReactionUpdated >)> MessageReactionUpdatedListener
#define TGBOT_API
Definition export.h:5
Definition Api.h:17