275 lines
12 KiB
MQL5
275 lines
12 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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
|
|
//+------------------------------------------------------------------+
|