2026-09-22 17:06:21 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| 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
|
| | | {
|
2026-09-23 17:35:51 -05:00 | | | TlgEphemeralMessageParameters() : callback_query_id(""),
|
| | | receiver_user_id(-1), replace_callback_query_message(TLGBYLEO_BOOL_UNSET) {}
|
| | |
|
| | | //----
|
2026-09-22 17:06:21 -05:00 | | | string callback_query_id;
|
| | | long receiver_user_id;
|
| | | TLGBYLEO_BOOL replace_callback_query_message;
|
| | | };
|
| | |
|
| | |
|
| | | //--- Reply parameters
|
| | | struct TlgReplyParameters
|
| | | {
|
2026-09-23 17:35:51 -05:00 | | | 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) {}
|
| | |
|
| | | //----
|
2026-09-22 17:06:21 -05:00 | | | 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
|
| | | {
|
2026-09-26 08:40:32 -05:00 | | | //---
|
| | | // 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
|
2026-09-23 21:33:46 -05:00 | | | TlgSendBase() : message_thread_id(-1), disable_notification(TLGBYLEO_BOOL_UNSET),
|
| | | protect_content(TLGBYLEO_BOOL_UNSET), allow_paid_broadcast(TLGBYLEO_BOOL_UNSET) {}
|
2026-09-23 17:35:51 -05:00 | | |
|
2026-09-22 17:06:21 -05:00 | | | //--- 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
|
| | | {
|
2026-09-23 17:35:51 -05:00 | | | 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) {}
|
| | |
|
| | | //----
|
2026-09-22 17:06:21 -05:00 | | | string url;
|
| | | TLGBYLEO_BOOL prefer_small_media;
|
| | | TLGBYLEO_BOOL is_disabled;
|
| | | TLGBYLEO_BOOL prefer_large_media;
|
| | | TLGBYLEO_BOOL show_above_text;
|
| | | };
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | struct TlgInputPollOption
|
| | | {
|
2026-09-25 16:54:01 -05:00 | | | TlgInputPollOption(const string& _text, ENUM_TELEGRAM_PARSE_MODE _parse_mode) : text(_text), text_parse_mode(_parse_mode) {}
|
2026-09-23 17:35:51 -05:00 | | | TlgInputPollOption() : text(""), text_parse_mode(WRONG_VALUE) {}
|
| | |
|
| | | //----
|
2026-09-22 17:06:21 -05:00 | | | string text;
|
| | | ENUM_TELEGRAM_PARSE_MODE text_parse_mode;
|
| | | // InputPollOptionMedia media
|
| | | };
|
| | |
|
| | | //---
|
| | | struct pack(sizeof(TLGBYLEO_BOOL)) TlgPollBoolOps
|
| | | {
|
2026-09-23 21:33:46 -05:00 | | | 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) {}
|
2026-09-23 17:35:51 -05:00 | | |
|
2026-09-23 21:33:46 -05:00 | | | //----
|
2026-09-22 17:06:21 -05:00 | | | 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,
|
| | | };
|
| | |
|
2026-09-23 15:26:06 -05:00 | | | //---
|
| | | const string g_telegrambyleo_reactiontype[2] =
|
| | | {
|
| | | "emoji",
|
| | | "custom_emoji"
|
| | | };
|
| | |
|
2026-09-22 17:06:21 -05:00 | | | //---
|
| | | struct TlgReactionType
|
| | | {
|
2026-09-25 16:54:01 -05:00 | | | TlgReactionType(const string& _value, ENUM_TELEGRAMBYLEO_REACTION_TYPE _type) : value(_value), type(_type) {}
|
2026-09-23 17:35:51 -05:00 | | | TlgReactionType() : value(""), type(TELEGRAMBYLEO_REACTION_TYPE_EMOJI) {}
|
| | |
|
| | | //---
|
2026-09-22 17:06:21 -05:00 | | | 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
|
2026-09-24 13:22:43 -05:00 | | |
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| User obj |
|
| | | //+------------------------------------------------------------------+
|
| | | enum ENUM_TLGBYLEO_USER_FLAGS
|
| | | {
|
2026-09-24 14:00:52 -05:00 | | | 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,
|
2026-09-24 13:22:43 -05:00 | | | };
|
| | |
|
| | | //---
|
| | | #define TLGBYLEO_USER_FLAG(idx) (1U << (idx))
|
| | |
|
| | | //---
|
| | | struct TlgUser
|
| | | {
|
2026-09-24 14:00:52 -05:00 | | | TlgUser() : username(""), first_name(""), last_name(""), id(0), flags(0) {}
|
| | |
|
2026-09-24 13:22:43 -05:00 | | | string username;
|
| | | string first_name;
|
| | | string last_name;
|
| | | long id;
|
| | | uint flags;
|
| | | };
|
2026-09-25 09:59:13 -05:00 | | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | #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
|
| | | };
|
2026-09-22 17:06:21 -05:00 | | | }
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | #endif // TELEGRAMBYLEO_SRC_BASE_BASE_MQH
|
| | | //+------------------------------------------------------------------+
|