//+------------------------------------------------------------------+ //| Events.mqh | //| Copyright 2026, Niquel Mendoza. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Niquel Mendoza." #property link "https://www.mql5.com" #property strict #ifndef TELEGRAMBYLEO_SRC_EVENTS_MQH #define TELEGRAMBYLEO_SRC_EVENTS_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include "TlgHandler.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace TSN { //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE (1<<(TELEGRAMBYLEO_GETUPT_K_MESSAGE-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_EDITED_MESSAGE (1<<(TELEGRAMBYLEO_GETUPT_K_EDITED_MESSAGE-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_CHANNEL_POST (1<<(TELEGRAMBYLEO_GETUPT_K_CHANNEL_POST-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_EDITED_CHANNEL_POST (1<<(TELEGRAMBYLEO_GETUPT_K_EDITED_CHANNEL_POST-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_CONNECTION (1<<(TELEGRAMBYLEO_GETUPT_K_BUSINESS_CONNECTION-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_MESSAGE (1<<(TELEGRAMBYLEO_GETUPT_K_BUSINESS_MESSAGE-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_EDITED_BUSINESS_MESSAGE (1<<(TELEGRAMBYLEO_GETUPT_K_EDITED_BUSINESS_MESSAGE-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_DELETED_BUSINESS_MESSAGES (1<<(TELEGRAMBYLEO_GETUPT_K_DELETED_BUSINESS_MESSAGES-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_GUEST_MESSAGE (1<<(TELEGRAMBYLEO_GETUPT_K_GUEST_MESSAGE-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION (1<<(TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION_COUNT (1<<(TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION_COUNT-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_INLINE_QUERY (1<<(TELEGRAMBYLEO_GETUPT_K_INLINE_QUERY-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_CHOSEN_INLINE_RESULT (1<<(TELEGRAMBYLEO_GETUPT_K_CHOSEN_INLINE_RESULT-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_CALLBACK_QUERY (1<<(TELEGRAMBYLEO_GETUPT_K_CALLBACK_QUERY-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_SHIPPING_QUERY (1<<(TELEGRAMBYLEO_GETUPT_K_SHIPPING_QUERY-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_PRE_CHECKOUT_QUERY (1<<(TELEGRAMBYLEO_GETUPT_K_PRE_CHECKOUT_QUERY-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_PURCHASED_PAID_MEDIA (1<<(TELEGRAMBYLEO_GETUPT_K_PURCHASED_PAID_MEDIA-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_POLL (1<<(TELEGRAMBYLEO_GETUPT_K_POLL-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_POLL_ANSWER (1<<(TELEGRAMBYLEO_GETUPT_K_POLL_ANSWER-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_MY_CHAT_MEMBER (1<<(TELEGRAMBYLEO_GETUPT_K_MY_CHAT_MEMBER-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_CHAT_MEMBER (1<<(TELEGRAMBYLEO_GETUPT_K_CHAT_MEMBER-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_CHAT_JOIN_REQUEST (1<<(TELEGRAMBYLEO_GETUPT_K_CHAT_JOIN_REQUEST-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_CHAT_BOOST (1<<(TELEGRAMBYLEO_GETUPT_K_CHAT_BOOST-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_REMOVED_CHAT_BOOST (1<<(TELEGRAMBYLEO_GETUPT_K_REMOVED_CHAT_BOOST-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_MANAGED_BOT (1<<(TELEGRAMBYLEO_GETUPT_K_MANAGED_BOT-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_SUBSCRIPTION (1<<(TELEGRAMBYLEO_GETUPT_K_SUBSCRIPTION-1)) #define TELEGRAMBYLEO_REG_FLAG_ON_STOPPED_MESSAGE_GENERATION (1<<(TELEGRAMBYLEO_GETUPT_K_STOPPED_MESSAGE_GENERATION-1)) //--- Todos #define TELEGRAMBYLEO_REG_FLAG_ALL (TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE | TELEGRAMBYLEO_REG_FLAG_ON_EDITED_MESSAGE | \ TELEGRAMBYLEO_REG_FLAG_ON_CHANNEL_POST | TELEGRAMBYLEO_REG_FLAG_ON_EDITED_CHANNEL_POST | \ TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_CONNECTION | TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_MESSAGE | \ TELEGRAMBYLEO_REG_FLAG_ON_EDITED_BUSINESS_MESSAGE | TELEGRAMBYLEO_REG_FLAG_ON_DELETED_BUSINESS_MESSAGES | \ TELEGRAMBYLEO_REG_FLAG_ON_GUEST_MESSAGE | TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION | \ TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION_COUNT | TELEGRAMBYLEO_REG_FLAG_ON_INLINE_QUERY | \ TELEGRAMBYLEO_REG_FLAG_ON_CHOSEN_INLINE_RESULT | TELEGRAMBYLEO_REG_FLAG_ON_CALLBACK_QUERY | \ TELEGRAMBYLEO_REG_FLAG_ON_SHIPPING_QUERY | TELEGRAMBYLEO_REG_FLAG_ON_PRE_CHECKOUT_QUERY | \ TELEGRAMBYLEO_REG_FLAG_ON_PURCHASED_PAID_MEDIA | TELEGRAMBYLEO_REG_FLAG_ON_POLL | \ TELEGRAMBYLEO_REG_FLAG_ON_POLL_ANSWER | TELEGRAMBYLEO_REG_FLAG_ON_MY_CHAT_MEMBER | \ TELEGRAMBYLEO_REG_FLAG_ON_CHAT_MEMBER | TELEGRAMBYLEO_REG_FLAG_ON_CHAT_JOIN_REQUEST | \ TELEGRAMBYLEO_REG_FLAG_ON_CHAT_BOOST | TELEGRAMBYLEO_REG_FLAG_ON_REMOVED_CHAT_BOOST | \ TELEGRAMBYLEO_REG_FLAG_ON_MANAGED_BOT | TELEGRAMBYLEO_REG_FLAG_ON_SUBSCRIPTION | \ TELEGRAMBYLEO_REG_FLAG_ON_STOPPED_MESSAGE_GENERATION) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define TELEGRAMBYLEO_NOTIFY(arr, arr_size, method, node) \ for(int __i = 0; __i < arr_size; __i++) \ arr[__i].method(node); //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class CTelegramBotUpdater { private: //--- CJsonBuilder m_js_builder; CJsonParser m_json; //--- token/url propios (independiente de CTelegramBot) string m_token; string m_url_method; //--- int m_timeout; long m_update_id; //--- int m_last_res_web; ENUM_TELEGRAMBYLEO_ERR m_last_err; //--- JsonBuilderSnapshot m_update_snap; //--- Handlers: array de punteros + size explicito, uno por evento CTelegramHandler* m_on_message[]; int m_on_message_size; CTelegramHandler* m_on_edited_message[]; int m_on_edited_message_size; CTelegramHandler* m_on_channel_post[]; int m_on_channel_post_size; CTelegramHandler* m_on_edited_channel_post[]; int m_on_edited_channel_post_size; CTelegramHandler* m_on_business_connection[]; int m_on_business_connection_size; CTelegramHandler* m_on_business_message[]; int m_on_business_message_size; CTelegramHandler* m_on_edited_business_message[]; int m_on_edited_business_message_size; CTelegramHandler* m_on_deleted_business_messages[]; int m_on_deleted_business_messages_size; CTelegramHandler* m_on_guest_message[]; int m_on_guest_message_size; CTelegramHandler* m_on_message_reaction[]; int m_on_message_reaction_size; CTelegramHandler* m_on_message_reaction_count[]; int m_on_message_reaction_count_size; CTelegramHandler* m_on_inline_query[]; int m_on_inline_query_size; CTelegramHandler* m_on_chosen_inline_result[]; int m_on_chosen_inline_result_size; CTelegramHandler* m_on_callback_query[]; int m_on_callback_query_size; CTelegramHandler* m_on_shipping_query[]; int m_on_shipping_query_size; CTelegramHandler* m_on_pre_checkout_query[]; int m_on_pre_checkout_query_size; CTelegramHandler* m_on_purchased_paid_media[]; int m_on_purchased_paid_media_size; CTelegramHandler* m_on_poll[]; int m_on_poll_size; CTelegramHandler* m_on_poll_answer[]; int m_on_poll_answer_size; CTelegramHandler* m_on_my_chat_member[]; int m_on_my_chat_member_size; CTelegramHandler* m_on_chat_member[]; int m_on_chat_member_size; CTelegramHandler* m_on_chat_join_request[]; int m_on_chat_join_request_size; CTelegramHandler* m_on_chat_boost[]; int m_on_chat_boost_size; CTelegramHandler* m_on_removed_chat_boost[]; int m_on_removed_chat_boost_size; CTelegramHandler* m_on_managed_bot[]; int m_on_managed_bot_size; CTelegramHandler* m_on_subscription[]; int m_on_subscription_size; CTelegramHandler* m_on_stopped_message_generation[]; int m_on_stopped_message_generation_size; //--- Helper compartido por Unregister* void RemoveFromArrayFast(CTelegramHandler* &array[], int &size, CTelegramHandler* &ptr); //--- ulong m_next_events_f; void ApplyFlags(); //--- int m_timeout_long; public: CTelegramBotUpdater(void); ~CTelegramBotUpdater(void) {} //--- token bool Token(string _token); __forceinline string Token() const { return m_token; } //--- Init // 0 quiere decir auto __forceinline void AllowedUpdates(ulong flags = 0); void Init(int timeout_long = -1, bool start_with_clean_chat = true); //--- Last __forceinline ENUM_TELEGRAMBYLEO_ERR LastErr() const { return m_last_err; } int LastResHttp() const { return m_last_res_web; } //--- Timeout __forceinline int Timeout() const { return m_timeout; } void Timeout(int v) { m_timeout = v; } //--- Registro / de-registro void RegisterEvents(CTelegramHandler* ptr, const int flags); void UnregisterEvents(CTelegramHandler* ptr, const int flags); void RegisterEvent(CTelegramHandler* ptr, const ENUM_TELEGRAMBYLEO_GETUPT_KEYVALUE event); void UnregisterEvent(CTelegramHandler* ptr, const ENUM_TELEGRAMBYLEO_GETUPT_KEYVALUE event); //--- polling bool GetUpdates(); }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ CTelegramBotUpdater::CTelegramBotUpdater() // reservamos solo 48 chars mas que sufiente no hace falta 1000+ defualt que noramlte se ahce.. : m_token(NULL), m_js_builder(48), m_update_id(-1), m_timeout(5000), m_last_err(TELEGRAMBYLEO_ERR_NOT), m_timeout_long(-1), //--- ahora los size m_on_message_size(0), m_on_edited_message_size(0), m_on_channel_post_size(0), m_on_edited_channel_post_size(0), m_on_business_connection_size(0), m_on_business_message_size(0), m_on_edited_business_message_size(0), m_on_deleted_business_messages_size(0), m_on_guest_message_size(0), m_on_message_reaction_size(0), m_on_message_reaction_count_size(0), m_on_inline_query_size(0), m_on_chosen_inline_result_size(0), m_on_callback_query_size(0), m_on_shipping_query_size(0), m_on_pre_checkout_query_size(0), m_on_purchased_paid_media_size(0), m_on_poll_size(0), m_on_poll_answer_size(0), m_on_my_chat_member_size(0), m_on_chat_member_size(0), m_on_chat_join_request_size(0), m_on_chat_boost_size(0), m_on_removed_chat_boost_size(0), m_on_managed_bot_size(0), m_on_subscription_size(0), m_on_stopped_message_generation_size(0) { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CTelegramBotUpdater::Token(string _token) { //--- StringTrimRight(_token); StringTrimLeft(_token); if(_token == "") { m_last_err = TELEGRAMBYLEO_ERR_TOKEN_EMPTY; return false; } //--- m_token = _token; m_url_method = TELEGRAMBYLEO_BASE_URL + "/bot" + m_token + "/" + TELEGRAMBYLEO_ENDPOINT_GETUPDATES; return true; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CTelegramBotUpdater::Init(int timeout_long = -1, bool start_with_clean_chat = true) { //--- long poll por ahora no inicialemnte.. solo llenamos m_timeout_long = timeout_long; //--- m_update_id = -1; //--- m_js_builder.Clear(); m_js_builder.Obj(); //-- if(start_with_clean_chat) { m_js_builder.KeyWV("offset").Val(-1); m_js_builder.KeyWV("limit").Val(1); } else { m_js_builder.KeyWV("offset").Val(0); } //--- m_js_builder.EndObj(); m_js_builder.Truncate(); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CTelegramBotUpdater::ApplyFlags(void) { //--- m_js_builder.Clear(); m_js_builder.Obj(); //--- if(m_timeout_long != -1) m_js_builder.KeyWV("timeout").Val(m_timeout_long); //--- m_js_builder.KeyWV("allowed_updates").Arr(); while(m_next_events_f) { const ulong flag = TSNTABLES_BIT_DEJAR_SOLO_MINUS_SIG_BYTE(m_next_events_f); const char pos = TSNTABLES_CTZ_64_GET_BIT(flag); m_js_builder.ValSWV(g_tlgbyleo_getupt_kstr[pos]); m_next_events_f &= (m_next_events_f - 1); } m_js_builder.EndArr(); m_js_builder.KeyWV("offset"); m_js_builder.GetSnapshot(m_update_snap); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CTelegramBotUpdater::AllowedUpdates(ulong flags) { //--- calculo if(flags) m_next_events_f = flags; else { // Aqui repasamos: solo pedimos los eventos que tengan al menos un handler registrado m_next_events_f |= m_on_message_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE : 0; m_next_events_f |= m_on_edited_message_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_EDITED_MESSAGE : 0; m_next_events_f |= m_on_channel_post_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_CHANNEL_POST : 0; m_next_events_f |= m_on_edited_channel_post_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_EDITED_CHANNEL_POST : 0; m_next_events_f |= m_on_business_connection_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_CONNECTION : 0; m_next_events_f |= m_on_business_message_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_MESSAGE : 0; m_next_events_f |= m_on_edited_business_message_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_EDITED_BUSINESS_MESSAGE : 0; m_next_events_f |= m_on_deleted_business_messages_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_DELETED_BUSINESS_MESSAGES : 0; m_next_events_f |= m_on_guest_message_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_GUEST_MESSAGE : 0; m_next_events_f |= m_on_message_reaction_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION : 0; m_next_events_f |= m_on_message_reaction_count_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION_COUNT : 0; m_next_events_f |= m_on_inline_query_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_INLINE_QUERY : 0; m_next_events_f |= m_on_chosen_inline_result_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_CHOSEN_INLINE_RESULT : 0; m_next_events_f |= m_on_callback_query_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_CALLBACK_QUERY : 0; m_next_events_f |= m_on_shipping_query_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_SHIPPING_QUERY : 0; m_next_events_f |= m_on_pre_checkout_query_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_PRE_CHECKOUT_QUERY : 0; m_next_events_f |= m_on_purchased_paid_media_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_PURCHASED_PAID_MEDIA : 0; m_next_events_f |= m_on_poll_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_POLL : 0; m_next_events_f |= m_on_poll_answer_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_POLL_ANSWER : 0; m_next_events_f |= m_on_my_chat_member_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_MY_CHAT_MEMBER : 0; m_next_events_f |= m_on_chat_member_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_CHAT_MEMBER : 0; m_next_events_f |= m_on_chat_join_request_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_CHAT_JOIN_REQUEST : 0; m_next_events_f |= m_on_chat_boost_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_CHAT_BOOST : 0; m_next_events_f |= m_on_removed_chat_boost_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_REMOVED_CHAT_BOOST : 0; m_next_events_f |= m_on_managed_bot_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_MANAGED_BOT : 0; m_next_events_f |= m_on_subscription_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_SUBSCRIPTION : 0; m_next_events_f |= m_on_stopped_message_generation_size > 0 ? TELEGRAMBYLEO_REG_FLAG_ON_STOPPED_MESSAGE_GENERATION : 0; } //--- if(m_update_id == -1) // aun no comenzo asi que es seugor return; ApplyFlags(); } //+------------------------------------------------------------------+ //| Registro / de-registro | //+------------------------------------------------------------------+ void CTelegramBotUpdater::RegisterEvents(CTelegramHandler* ptr, const int flags) { //--- if(!CheckPointer(ptr)) return; //--- if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE) != 0) m_on_message[ArrayResize(m_on_message, (++m_on_message_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_EDITED_MESSAGE) != 0) m_on_edited_message[ArrayResize(m_on_edited_message, (++m_on_edited_message_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHANNEL_POST) != 0) m_on_channel_post[ArrayResize(m_on_channel_post, (++m_on_channel_post_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_EDITED_CHANNEL_POST) != 0) m_on_edited_channel_post[ArrayResize(m_on_edited_channel_post, (++m_on_edited_channel_post_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_CONNECTION) != 0) m_on_business_connection[ArrayResize(m_on_business_connection, (++m_on_business_connection_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_MESSAGE) != 0) m_on_business_message[ArrayResize(m_on_business_message, (++m_on_business_message_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_EDITED_BUSINESS_MESSAGE) != 0) m_on_edited_business_message[ArrayResize(m_on_edited_business_message, (++m_on_edited_business_message_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_DELETED_BUSINESS_MESSAGES) != 0) m_on_deleted_business_messages[ArrayResize(m_on_deleted_business_messages, (++m_on_deleted_business_messages_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_GUEST_MESSAGE) != 0) m_on_guest_message[ArrayResize(m_on_guest_message, (++m_on_guest_message_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION) != 0) m_on_message_reaction[ArrayResize(m_on_message_reaction, (++m_on_message_reaction_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION_COUNT) != 0) m_on_message_reaction_count[ArrayResize(m_on_message_reaction_count, (++m_on_message_reaction_count_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_INLINE_QUERY) != 0) m_on_inline_query[ArrayResize(m_on_inline_query, (++m_on_inline_query_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHOSEN_INLINE_RESULT) != 0) m_on_chosen_inline_result[ArrayResize(m_on_chosen_inline_result, (++m_on_chosen_inline_result_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CALLBACK_QUERY) != 0) m_on_callback_query[ArrayResize(m_on_callback_query, (++m_on_callback_query_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_SHIPPING_QUERY) != 0) m_on_shipping_query[ArrayResize(m_on_shipping_query, (++m_on_shipping_query_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_PRE_CHECKOUT_QUERY) != 0) m_on_pre_checkout_query[ArrayResize(m_on_pre_checkout_query, (++m_on_pre_checkout_query_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_PURCHASED_PAID_MEDIA) != 0) m_on_purchased_paid_media[ArrayResize(m_on_purchased_paid_media, (++m_on_purchased_paid_media_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_POLL) != 0) m_on_poll[ArrayResize(m_on_poll, (++m_on_poll_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_POLL_ANSWER) != 0) m_on_poll_answer[ArrayResize(m_on_poll_answer, (++m_on_poll_answer_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MY_CHAT_MEMBER) != 0) m_on_my_chat_member[ArrayResize(m_on_my_chat_member, (++m_on_my_chat_member_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHAT_MEMBER) != 0) m_on_chat_member[ArrayResize(m_on_chat_member, (++m_on_chat_member_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHAT_JOIN_REQUEST) != 0) m_on_chat_join_request[ArrayResize(m_on_chat_join_request, (++m_on_chat_join_request_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHAT_BOOST) != 0) m_on_chat_boost[ArrayResize(m_on_chat_boost, (++m_on_chat_boost_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_REMOVED_CHAT_BOOST) != 0) m_on_removed_chat_boost[ArrayResize(m_on_removed_chat_boost, (++m_on_removed_chat_boost_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MANAGED_BOT) != 0) m_on_managed_bot[ArrayResize(m_on_managed_bot, (++m_on_managed_bot_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_SUBSCRIPTION) != 0) m_on_subscription[ArrayResize(m_on_subscription, (++m_on_subscription_size)) - 1] = ptr; if((flags & TELEGRAMBYLEO_REG_FLAG_ON_STOPPED_MESSAGE_GENERATION) != 0) m_on_stopped_message_generation[ArrayResize(m_on_stopped_message_generation, (++m_on_stopped_message_generation_size)) - 1] = ptr; } //+------------------------------------------------------------------+ void CTelegramBotUpdater::RegisterEvent(CTelegramHandler* ptr, const ENUM_TELEGRAMBYLEO_GETUPT_KEYVALUE event) { //--- if(!CheckPointer(ptr)) return; //--- switch(event) { case TELEGRAMBYLEO_GETUPT_K_MESSAGE: m_on_message[ArrayResize(m_on_message, (++m_on_message_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_EDITED_MESSAGE: m_on_edited_message[ArrayResize(m_on_edited_message, (++m_on_edited_message_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_CHANNEL_POST: m_on_channel_post[ArrayResize(m_on_channel_post, (++m_on_channel_post_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_EDITED_CHANNEL_POST: m_on_edited_channel_post[ArrayResize(m_on_edited_channel_post, (++m_on_edited_channel_post_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_BUSINESS_CONNECTION: m_on_business_connection[ArrayResize(m_on_business_connection, (++m_on_business_connection_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_BUSINESS_MESSAGE: m_on_business_message[ArrayResize(m_on_business_message, (++m_on_business_message_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_EDITED_BUSINESS_MESSAGE: m_on_edited_business_message[ArrayResize(m_on_edited_business_message, (++m_on_edited_business_message_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_DELETED_BUSINESS_MESSAGES: m_on_deleted_business_messages[ArrayResize(m_on_deleted_business_messages, (++m_on_deleted_business_messages_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_GUEST_MESSAGE: m_on_guest_message[ArrayResize(m_on_guest_message, (++m_on_guest_message_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION: m_on_message_reaction[ArrayResize(m_on_message_reaction, (++m_on_message_reaction_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION_COUNT: m_on_message_reaction_count[ArrayResize(m_on_message_reaction_count, (++m_on_message_reaction_count_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_INLINE_QUERY: m_on_inline_query[ArrayResize(m_on_inline_query, (++m_on_inline_query_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_CHOSEN_INLINE_RESULT: m_on_chosen_inline_result[ArrayResize(m_on_chosen_inline_result, (++m_on_chosen_inline_result_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_CALLBACK_QUERY: m_on_callback_query[ArrayResize(m_on_callback_query, (++m_on_callback_query_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_SHIPPING_QUERY: m_on_shipping_query[ArrayResize(m_on_shipping_query, (++m_on_shipping_query_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_PRE_CHECKOUT_QUERY: m_on_pre_checkout_query[ArrayResize(m_on_pre_checkout_query, (++m_on_pre_checkout_query_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_PURCHASED_PAID_MEDIA: m_on_purchased_paid_media[ArrayResize(m_on_purchased_paid_media, (++m_on_purchased_paid_media_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_POLL: m_on_poll[ArrayResize(m_on_poll, (++m_on_poll_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_POLL_ANSWER: m_on_poll_answer[ArrayResize(m_on_poll_answer, (++m_on_poll_answer_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_MY_CHAT_MEMBER: m_on_my_chat_member[ArrayResize(m_on_my_chat_member, (++m_on_my_chat_member_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_CHAT_MEMBER: m_on_chat_member[ArrayResize(m_on_chat_member, (++m_on_chat_member_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_CHAT_JOIN_REQUEST: m_on_chat_join_request[ArrayResize(m_on_chat_join_request, (++m_on_chat_join_request_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_CHAT_BOOST: m_on_chat_boost[ArrayResize(m_on_chat_boost, (++m_on_chat_boost_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_REMOVED_CHAT_BOOST: m_on_removed_chat_boost[ArrayResize(m_on_removed_chat_boost, (++m_on_removed_chat_boost_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_MANAGED_BOT: m_on_managed_bot[ArrayResize(m_on_managed_bot, (++m_on_managed_bot_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_SUBSCRIPTION: m_on_subscription[ArrayResize(m_on_subscription, (++m_on_subscription_size)) - 1] = ptr; break; case TELEGRAMBYLEO_GETUPT_K_STOPPED_MESSAGE_GENERATION: m_on_stopped_message_generation[ArrayResize(m_on_stopped_message_generation, (++m_on_stopped_message_generation_size)) - 1] = ptr; break; //--- default: break; } } //+------------------------------------------------------------------+ void CTelegramBotUpdater::UnregisterEvents(CTelegramHandler* ptr, const int flags) { //--- if(!CheckPointer(ptr)) return; //--- if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE) != 0) RemoveFromArrayFast(m_on_message, m_on_message_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_EDITED_MESSAGE) != 0) RemoveFromArrayFast(m_on_edited_message, m_on_edited_message_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHANNEL_POST) != 0) RemoveFromArrayFast(m_on_channel_post, m_on_channel_post_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_EDITED_CHANNEL_POST) != 0) RemoveFromArrayFast(m_on_edited_channel_post, m_on_edited_channel_post_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_CONNECTION) != 0) RemoveFromArrayFast(m_on_business_connection, m_on_business_connection_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_BUSINESS_MESSAGE) != 0) RemoveFromArrayFast(m_on_business_message, m_on_business_message_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_EDITED_BUSINESS_MESSAGE) != 0) RemoveFromArrayFast(m_on_edited_business_message, m_on_edited_business_message_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_DELETED_BUSINESS_MESSAGES) != 0) RemoveFromArrayFast(m_on_deleted_business_messages, m_on_deleted_business_messages_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_GUEST_MESSAGE) != 0) RemoveFromArrayFast(m_on_guest_message, m_on_guest_message_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION) != 0) RemoveFromArrayFast(m_on_message_reaction, m_on_message_reaction_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MESSAGE_REACTION_COUNT) != 0) RemoveFromArrayFast(m_on_message_reaction_count, m_on_message_reaction_count_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_INLINE_QUERY) != 0) RemoveFromArrayFast(m_on_inline_query, m_on_inline_query_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHOSEN_INLINE_RESULT) != 0) RemoveFromArrayFast(m_on_chosen_inline_result, m_on_chosen_inline_result_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CALLBACK_QUERY) != 0) RemoveFromArrayFast(m_on_callback_query, m_on_callback_query_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_SHIPPING_QUERY) != 0) RemoveFromArrayFast(m_on_shipping_query, m_on_shipping_query_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_PRE_CHECKOUT_QUERY) != 0) RemoveFromArrayFast(m_on_pre_checkout_query, m_on_pre_checkout_query_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_PURCHASED_PAID_MEDIA) != 0) RemoveFromArrayFast(m_on_purchased_paid_media, m_on_purchased_paid_media_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_POLL) != 0) RemoveFromArrayFast(m_on_poll, m_on_poll_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_POLL_ANSWER) != 0) RemoveFromArrayFast(m_on_poll_answer, m_on_poll_answer_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MY_CHAT_MEMBER) != 0) RemoveFromArrayFast(m_on_my_chat_member, m_on_my_chat_member_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHAT_MEMBER) != 0) RemoveFromArrayFast(m_on_chat_member, m_on_chat_member_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHAT_JOIN_REQUEST) != 0) RemoveFromArrayFast(m_on_chat_join_request, m_on_chat_join_request_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_CHAT_BOOST) != 0) RemoveFromArrayFast(m_on_chat_boost, m_on_chat_boost_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_REMOVED_CHAT_BOOST) != 0) RemoveFromArrayFast(m_on_removed_chat_boost, m_on_removed_chat_boost_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_MANAGED_BOT) != 0) RemoveFromArrayFast(m_on_managed_bot, m_on_managed_bot_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_SUBSCRIPTION) != 0) RemoveFromArrayFast(m_on_subscription, m_on_subscription_size, ptr); if((flags & TELEGRAMBYLEO_REG_FLAG_ON_STOPPED_MESSAGE_GENERATION) != 0) RemoveFromArrayFast(m_on_stopped_message_generation, m_on_stopped_message_generation_size, ptr); } //+------------------------------------------------------------------+ void CTelegramBotUpdater::UnregisterEvent(CTelegramHandler* ptr, const ENUM_TELEGRAMBYLEO_GETUPT_KEYVALUE event) { //--- if(!CheckPointer(ptr)) return; //--- switch(event) { case TELEGRAMBYLEO_GETUPT_K_MESSAGE: RemoveFromArrayFast(m_on_message, m_on_message_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_EDITED_MESSAGE: RemoveFromArrayFast(m_on_edited_message, m_on_edited_message_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_CHANNEL_POST: RemoveFromArrayFast(m_on_channel_post, m_on_channel_post_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_EDITED_CHANNEL_POST: RemoveFromArrayFast(m_on_edited_channel_post, m_on_edited_channel_post_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_BUSINESS_CONNECTION: RemoveFromArrayFast(m_on_business_connection, m_on_business_connection_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_BUSINESS_MESSAGE: RemoveFromArrayFast(m_on_business_message, m_on_business_message_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_EDITED_BUSINESS_MESSAGE: RemoveFromArrayFast(m_on_edited_business_message, m_on_edited_business_message_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_DELETED_BUSINESS_MESSAGES: RemoveFromArrayFast(m_on_deleted_business_messages, m_on_deleted_business_messages_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_GUEST_MESSAGE: RemoveFromArrayFast(m_on_guest_message, m_on_guest_message_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION: RemoveFromArrayFast(m_on_message_reaction, m_on_message_reaction_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION_COUNT: RemoveFromArrayFast(m_on_message_reaction_count, m_on_message_reaction_count_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_INLINE_QUERY: RemoveFromArrayFast(m_on_inline_query, m_on_inline_query_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_CHOSEN_INLINE_RESULT: RemoveFromArrayFast(m_on_chosen_inline_result, m_on_chosen_inline_result_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_CALLBACK_QUERY: RemoveFromArrayFast(m_on_callback_query, m_on_callback_query_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_SHIPPING_QUERY: RemoveFromArrayFast(m_on_shipping_query, m_on_shipping_query_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_PRE_CHECKOUT_QUERY: RemoveFromArrayFast(m_on_pre_checkout_query, m_on_pre_checkout_query_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_PURCHASED_PAID_MEDIA: RemoveFromArrayFast(m_on_purchased_paid_media, m_on_purchased_paid_media_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_POLL: RemoveFromArrayFast(m_on_poll, m_on_poll_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_POLL_ANSWER: RemoveFromArrayFast(m_on_poll_answer, m_on_poll_answer_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_MY_CHAT_MEMBER: RemoveFromArrayFast(m_on_my_chat_member, m_on_my_chat_member_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_CHAT_MEMBER: RemoveFromArrayFast(m_on_chat_member, m_on_chat_member_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_CHAT_JOIN_REQUEST: RemoveFromArrayFast(m_on_chat_join_request, m_on_chat_join_request_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_CHAT_BOOST: RemoveFromArrayFast(m_on_chat_boost, m_on_chat_boost_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_REMOVED_CHAT_BOOST: RemoveFromArrayFast(m_on_removed_chat_boost, m_on_removed_chat_boost_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_MANAGED_BOT: RemoveFromArrayFast(m_on_managed_bot, m_on_managed_bot_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_SUBSCRIPTION: RemoveFromArrayFast(m_on_subscription, m_on_subscription_size, ptr); break; case TELEGRAMBYLEO_GETUPT_K_STOPPED_MESSAGE_GENERATION: RemoveFromArrayFast(m_on_stopped_message_generation, m_on_stopped_message_generation_size, ptr); break; //--- default: break; } } //+------------------------------------------------------------------+ void CTelegramBotUpdater::RemoveFromArrayFast(CTelegramHandler* &array[], int &size, CTelegramHandler* &ptr) { for(int i = 0; i < size; i++) { if(array[i] == ptr) { array[i] = array[size - 1]; ArrayResize(array, (--size)); return; } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CTelegramBotUpdater::GetUpdates(void) { //--- Get static string result_headers; //--- // Print("send: "); //Print(CharArrayToString(m_js_builder.m_buf, 0, m_js_builder.m_pos)); m_last_res_web = WebRequest("POST", m_url_method, "Content-Type: application/json\r\n", m_timeout, m_js_builder.m_buf, m_json.m_raw, result_headers); if(m_last_res_web != 200) { m_last_err = TELEGRAMBYLEO_ERR_WEB_REQ; return false; } //Print("recv: "); //Print(CharArrayToString(m_json.m_raw, 0, ArraySize(m_json.m_raw))); //--- Parsing m_json.CalcLen(); m_json.CorrectPadding(); if(!m_json.Parse()) { m_last_err = TELEGRAMBYLEO_ERR_JSON_PARSING; return false; } //--- CJsonNode root = m_json.GetRoot(); if(!root["ok"].ToBool(false)) { m_last_err = TELEGRAMBYLEO_ERR_JSON_NOT_OK; return false; } const int res_size = root["result"].Size(); //--- if(m_update_id == -1) // aun nada primer get que hacemos { //--- tratamos de obtener... if(res_size > 0) // solo si es 0 obtemoes.. m_update_id = root["result"].At(0)["update_id"].ToInt(-1); //--- // si no tiene valor tendra un valor de -1 luego se incremnte a 0 //--- json inicial ApplyFlags(); } else { //--- caso ya comun CJsonIteratorArray it = root["result"].BeginArr(); if(res_size < 1) return true; // nada, minimo un valor para poder iterar //--- // ya caliente while(it.IsValid()) // iteramos por cada Update { CJsonIteratorObj val = it.Val().BeginObj(); // En cada objeto Update iteramos por cada par key-value while(val.IsValid()) { const ENUM_TELEGRAMBYLEO_GETUPT_KEYVALUE idx = CEnumRegTlgLeo::GetValU(val.m_ctx.m_raw, val.KeyStart(), val.KeyLen(), WRONG_VALUE); // perfect hash CJsonNode obj_val = val.Val(); switch(idx) { case TELEGRAMBYLEO_GETUPT_K_UPDATEID: m_update_id = obj_val.ToInt(0); break; case TELEGRAMBYLEO_GETUPT_K_MESSAGE: { TELEGRAMBYLEO_NOTIFY(m_on_message, m_on_message_size, OnMessage, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_EDITED_MESSAGE: { TELEGRAMBYLEO_NOTIFY(m_on_edited_message, m_on_edited_message_size, OnEditedMessage, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_CHANNEL_POST: { TELEGRAMBYLEO_NOTIFY(m_on_channel_post, m_on_channel_post_size, OnChannelPost, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_EDITED_CHANNEL_POST: { TELEGRAMBYLEO_NOTIFY(m_on_edited_channel_post, m_on_edited_channel_post_size, OnEditedChannelPost, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_BUSINESS_CONNECTION: { TELEGRAMBYLEO_NOTIFY(m_on_business_connection, m_on_business_connection_size, OnBusinessConnection, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_BUSINESS_MESSAGE: { TELEGRAMBYLEO_NOTIFY(m_on_business_message, m_on_business_message_size, OnBusinessMessage, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_EDITED_BUSINESS_MESSAGE: { TELEGRAMBYLEO_NOTIFY(m_on_edited_business_message, m_on_edited_business_message_size, OnEditedBusinessMessage, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_DELETED_BUSINESS_MESSAGES: { TELEGRAMBYLEO_NOTIFY(m_on_deleted_business_messages, m_on_deleted_business_messages_size, OnDeletedBusinessMessages, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_GUEST_MESSAGE: { TELEGRAMBYLEO_NOTIFY(m_on_guest_message, m_on_guest_message_size, OnGuestMessage, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION: { TELEGRAMBYLEO_NOTIFY(m_on_message_reaction, m_on_message_reaction_size, OnMessageReaction, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_MESSAGE_REACTION_COUNT: { TELEGRAMBYLEO_NOTIFY(m_on_message_reaction_count, m_on_message_reaction_count_size, OnMessageReactionCount, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_INLINE_QUERY: { TELEGRAMBYLEO_NOTIFY(m_on_inline_query, m_on_inline_query_size, OnInlineQuery, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_CHOSEN_INLINE_RESULT: { TELEGRAMBYLEO_NOTIFY(m_on_chosen_inline_result, m_on_chosen_inline_result_size, OnChosenInlineResult, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_CALLBACK_QUERY: { TELEGRAMBYLEO_NOTIFY(m_on_callback_query, m_on_callback_query_size, OnCallbackQuery, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_SHIPPING_QUERY: { TELEGRAMBYLEO_NOTIFY(m_on_shipping_query, m_on_shipping_query_size, OnShippingQuery, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_PRE_CHECKOUT_QUERY: { TELEGRAMBYLEO_NOTIFY(m_on_pre_checkout_query, m_on_pre_checkout_query_size, OnPreCheckoutQuery, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_PURCHASED_PAID_MEDIA: { TELEGRAMBYLEO_NOTIFY(m_on_purchased_paid_media, m_on_purchased_paid_media_size, OnPurchasedPaidMedia, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_POLL: { TELEGRAMBYLEO_NOTIFY(m_on_poll, m_on_poll_size, OnPoll, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_POLL_ANSWER: { TELEGRAMBYLEO_NOTIFY(m_on_poll_answer, m_on_poll_answer_size, OnPollAnswer, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_MY_CHAT_MEMBER: { TELEGRAMBYLEO_NOTIFY(m_on_my_chat_member, m_on_my_chat_member_size, OnMyChatMember, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_CHAT_MEMBER: { TELEGRAMBYLEO_NOTIFY(m_on_chat_member, m_on_chat_member_size, OnChatMember, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_CHAT_JOIN_REQUEST: { TELEGRAMBYLEO_NOTIFY(m_on_chat_join_request, m_on_chat_join_request_size, OnChatJoinRequest, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_CHAT_BOOST: { TELEGRAMBYLEO_NOTIFY(m_on_chat_boost, m_on_chat_boost_size, OnChatBoost, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_REMOVED_CHAT_BOOST: { TELEGRAMBYLEO_NOTIFY(m_on_removed_chat_boost, m_on_removed_chat_boost_size, OnRemovedChatBoost, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_MANAGED_BOT: { TELEGRAMBYLEO_NOTIFY(m_on_managed_bot, m_on_managed_bot_size, OnManagedBot, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_SUBSCRIPTION: { TELEGRAMBYLEO_NOTIFY(m_on_subscription, m_on_subscription_size, OnSubscription, obj_val) break; } case TELEGRAMBYLEO_GETUPT_K_STOPPED_MESSAGE_GENERATION: { TELEGRAMBYLEO_NOTIFY(m_on_stopped_message_generation, m_on_stopped_message_generation_size, OnStoppedMessageGeneration, obj_val) break; } //--- default: break; } //--- val.Next(); } //--- it.Next(); } //--- rollback m_js_builder.ApplySnapshot(m_update_snap); } //--- m_update_id++; //--- m_js_builder.Val(m_update_id); m_js_builder.EndObj(); m_js_builder.Truncate(); //--- return true; } } //+------------------------------------------------------------------+ #endif // TELEGRAMBYLEO_SRC_EVENTS_MQH