forked from nique_372/TelegramByLeo
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
| |
//+------------------------------------------------------------------+
|