//+------------------------------------------------------------------+ //| Bases.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_BASE_BASE_MQH #define TELEGRAMBYLEO_SRC_BASE_BASE_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include "Def.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace TSN { //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #define TLGBYLEO_BOOL_TRUE (1) #define TLGBYLEO_BOOL_FALSE (0) #define TLGBYLEO_BOOL_UNSET (UCHAR_MAX) #define TLGBYLEO_BOOL uchar //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // Parametros comunes //--- Mensaje efimero struct TlgEphemeralMessageParameters { TlgEphemeralMessageParameters() : callback_query_id(""), receiver_user_id(-1), replace_callback_query_message(TLGBYLEO_BOOL_UNSET) {} //---- string callback_query_id; long receiver_user_id; TLGBYLEO_BOOL replace_callback_query_message; }; //--- Reply parameters struct TlgReplyParameters { TlgReplyParameters() : poll_option_id(""), quote(""), quote_parse_mode(WRONG_VALUE), message_id(-1), ephemeral_message_id(-1), allow_sending_without_reply(TLGBYLEO_BOOL_UNSET), quote_position(-1), checklist_task_id(-1) {} //---- string poll_option_id; string quote; ENUM_TELEGRAM_PARSE_MODE quote_parse_mode; // quote_entities long message_id; long ephemeral_message_id; TLGBYLEO_BOOL allow_sending_without_reply; int quote_position; long checklist_task_id; }; //--- SuggestedPostParameters // suggested_post_parameters //--- Struct basico para campos minimos struct pack(8) TlgSendBase { //--- // con parametors TlgSendBase(const long _message_thread_id, const bool _disable_notification, const bool _protect_content, const bool _allow_paid_broadcast) : message_thread_id(_message_thread_id), disable_notification(_disable_notification), protect_content(_protect_content), allow_paid_broadcast(_allow_paid_broadcast) {} // sin params TlgSendBase() : message_thread_id(-1), disable_notification(TLGBYLEO_BOOL_UNSET), protect_content(TLGBYLEO_BOOL_UNSET), allow_paid_broadcast(TLGBYLEO_BOOL_UNSET) {} //--- base long message_thread_id; TLGBYLEO_BOOL disable_notification; TLGBYLEO_BOOL protect_content; TLGBYLEO_BOOL allow_paid_broadcast; }; // chatid y business_connection_id lo maneja la clase (auqnue est eultimo no.. por ahora) //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ struct TlgLinkPreviewOptions { TlgLinkPreviewOptions() : url(""), prefer_small_media(TLGBYLEO_BOOL_UNSET), is_disabled(TLGBYLEO_BOOL_UNSET), prefer_large_media(TLGBYLEO_BOOL_UNSET), show_above_text(TLGBYLEO_BOOL_UNSET) {} //---- string url; TLGBYLEO_BOOL prefer_small_media; TLGBYLEO_BOOL is_disabled; TLGBYLEO_BOOL prefer_large_media; TLGBYLEO_BOOL show_above_text; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ struct TlgInputPollOption { TlgInputPollOption(const string& _text, ENUM_TELEGRAM_PARSE_MODE _parse_mode) : text(_text), text_parse_mode(_parse_mode) {} TlgInputPollOption() : text(""), text_parse_mode(WRONG_VALUE) {} //---- string text; ENUM_TELEGRAM_PARSE_MODE text_parse_mode; // InputPollOptionMedia media }; //--- struct pack(sizeof(TLGBYLEO_BOOL)) TlgPollBoolOps { TlgPollBoolOps() : is_anonymous(TLGBYLEO_BOOL_UNSET), allows_multiple_answers(TLGBYLEO_BOOL_UNSET), shuffle_options(TLGBYLEO_BOOL_UNSET), hide_results_until_closes(TLGBYLEO_BOOL_UNSET), members_only(TLGBYLEO_BOOL_UNSET), is_closed(TLGBYLEO_BOOL_UNSET) {} //---- TLGBYLEO_BOOL is_anonymous; TLGBYLEO_BOOL allows_multiple_answers; TLGBYLEO_BOOL shuffle_options; TLGBYLEO_BOOL hide_results_until_closes; TLGBYLEO_BOOL members_only; TLGBYLEO_BOOL is_closed; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //--- enum ENUM_TELEGRAMBYLEO_REACTION_TYPE { TELEGRAMBYLEO_REACTION_TYPE_EMOJI, TELEGRAMBYLEO_REACTION_TYPE_CUSTOM_EMOJI, }; //--- const string g_telegrambyleo_reactiontype[2] = { "emoji", "custom_emoji" }; //--- struct TlgReactionType { TlgReactionType(const string& _value, ENUM_TELEGRAMBYLEO_REACTION_TYPE _type) : value(_value), type(_type) {} TlgReactionType() : value(""), type(TELEGRAMBYLEO_REACTION_TYPE_EMOJI) {} //--- ENUM_TELEGRAMBYLEO_REACTION_TYPE type; string value; }; //+------------------------------------------------------------------+ //| Permisos | //+------------------------------------------------------------------+ #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_MESSAGES (1ULL<<0) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_AUDIOS (1ULL<<2) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_DOCUMENTS (1ULL<<4) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_PHOTOS (1ULL<<6) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_VIDEOS (1ULL<<8) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_VIDEO_NOTES (1ULL<<10) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_VOICE_NOTES (1ULL<<12) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_POLLS (1ULL<<14) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_SEND_OTHER_MESSAGES (1ULL<<16) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_ADD_WEB_PAGE_PREVIEWS (1ULL<<18) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_REACT_TO_MESSAGES (1ULL<<20) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_EDIT_TAG (1ULL<<22) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_CHANGE_INFO (1ULL<<24) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_INVITE_USERS (1ULL<<26) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_PIN_MESSAGES (1ULL<<28) #define TELEGRAMBYLEO_CHAT_PERMISSIONS_CAN_MANAGE_TOPICS (1ULL<<30) // ulong 2 //+------------------------------------------------------------------+ //| User obj | //+------------------------------------------------------------------+ enum ENUM_TLGBYLEO_USER_FLAGS { TLGBYLEO_USER_IS_BOT, TLGBYLEO_USER_IS_PREMIUM, TLGBYLEO_USER_ADDED_TO_ATTACHMENT_MENU, TLGBYLEO_USER_CAN_JOIN_GROUPS, TLGBYLEO_USER_CAN_READ_ALL_GROUP_MESSAGES, TLGBYLEO_USER_SUPPORTS_GUEST_QUERIES, TLGBYLEO_USER_SUPPORTS_INLINE_QUERIES, TLGBYLEO_USER_CAN_CONNECT_TO_BUSINESS, TLGBYLEO_USER_HAS_MAIN_WEB_APP, TLGBYLEO_USER_HAS_TOPICS_ENABLED, TLGBYLEO_USER_ALLOWS_USERS_TO_CREATE_TOPICS, TLGBYLEO_USER_CAN_MANAGE_BOTS, TLGBYLEO_USER_SUPPORTS_JOIN_REQUEST_QUERIES, }; //--- #define TLGBYLEO_USER_FLAG(idx) (1U << (idx)) //--- struct TlgUser { TlgUser() : username(""), first_name(""), last_name(""), id(0), flags(0) {} string username; string first_name; string last_name; long id; uint flags; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #ifdef TELEGRAMBYLEO_TLGHANDLER_FATHER class CTelegramHandler : public TELEGRAMBYLEO_TLGHANDLER_FATHER #else class CTelegramHandler #endif // TELEGRAMBYLEO_TLGHANDLER_FATHER { public: CTelegramHandler(void) {} ~CTelegramHandler(void) {} //--- virtual void OnMessage(CJsonNode& node) {} // message virtual void OnEditedMessage(CJsonNode& node) {} // edited_message virtual void OnChannelPost(CJsonNode& node) {} // channel_post virtual void OnEditedChannelPost(CJsonNode& node) {} // edited_channel_post virtual void OnBusinessConnection(CJsonNode& node) {} // business_connection virtual void OnBusinessMessage(CJsonNode& node) {} // business_message virtual void OnEditedBusinessMessage(CJsonNode& node) {} // edited_business_message virtual void OnDeletedBusinessMessages(CJsonNode& node) {} // deleted_business_messages virtual void OnGuestMessage(CJsonNode& node) {} // guest_message virtual void OnMessageReaction(CJsonNode& node) {} // message_reaction virtual void OnMessageReactionCount(CJsonNode& node) {} // message_reaction_count virtual void OnInlineQuery(CJsonNode& node) {} // inline_query virtual void OnChosenInlineResult(CJsonNode& node) {} // chosen_inline_result virtual void OnCallbackQuery(CJsonNode& node) {} // callback_query virtual void OnShippingQuery(CJsonNode& node) {} // shipping_query virtual void OnPreCheckoutQuery(CJsonNode& node) {} // pre_checkout_query virtual void OnPurchasedPaidMedia(CJsonNode& node) {} // purchased_paid_media virtual void OnPoll(CJsonNode& node) {} // poll virtual void OnPollAnswer(CJsonNode& node) {} // poll_answer virtual void OnMyChatMember(CJsonNode& node) {} // my_chat_member virtual void OnChatMember(CJsonNode& node) {} // chat_member virtual void OnChatJoinRequest(CJsonNode& node) {} // chat_join_request virtual void OnChatBoost(CJsonNode& node) {} // chat_boost virtual void OnRemovedChatBoost(CJsonNode& node) {} // removed_chat_boost virtual void OnManagedBot(CJsonNode& node) {} // managed_bot virtual void OnSubscription(CJsonNode& node) {} // subscription virtual void OnStoppedMessageGeneration(CJsonNode& node) {} // stopped_message_generation }; } //+------------------------------------------------------------------+ #endif // TELEGRAMBYLEO_SRC_BASE_BASE_MQH //+------------------------------------------------------------------+