Skip to content

Commit 492f105

Browse files
committed
Add reaction update support
1 parent 84614b8 commit 492f105

File tree

2 files changed

+321
-87
lines changed

2 files changed

+321
-87
lines changed

tgsendertypes.pas

Lines changed: 81 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ TInlineKeyboard = class;
3232
TInlineQueryEvent = procedure (ASender: TObject; AnInlineQuery: TTelegramInlineQueryObj) of object;
3333
TChosenInlineResultEvent = procedure (ASender: TObject;
3434
AChosenInlineResult: TTelegramChosenInlineResultObj) of object;
35-
TPreCheckoutQueryEvent = procedure (ASender: TObject;
36-
APreCheckoutQuery: TTelegramPreCheckOutQuery) of object;
37-
TSuccessfulPaymentEvent = procedure (ASender: TObject;
38-
ASuccessfulPayment: TTelegramSuccessfulPayment) of object;
35+
TPreCheckoutQueryEvent = procedure (ASender: TObject;
36+
APreCheckoutQuery: TTelegramPreCheckOutQuery) of object;
37+
TSuccessfulPaymentEvent = procedure (ASender: TObject;
38+
ASuccessfulPayment: TTelegramSuccessfulPayment) of object;
39+
TMessageReactionEvent = procedure (ASender: TObject;
40+
AMessageReaction: TTelegramMessageReactionUpdated) of object;
41+
TMessageReactionCountEvent = procedure (ASender: TObject;
42+
AMessageReactionCount: TTelegramMessageReactionCountUpdated) of object;
3943

4044
{ TStringHash }
4145

@@ -450,8 +454,10 @@ TTelegramSender = class
450454
FOnReceiveEditedChannelPost: TMessageEvent;
451455
FOnReceiveEditedMessage: TMessageEvent;
452456
FOnReceiveInlineQuery: TInlineQueryEvent;
453-
FOnReceiveMessage: TMessageEvent;
454-
FOnReceiveMyChatMemberUpdated: TChatMemberEvent;
457+
FOnReceiveMessage: TMessageEvent;
458+
FOnReceiveMessageReaction: TMessageReactionEvent;
459+
FOnReceiveMessageReactionCount: TMessageReactionCountEvent;
460+
FOnReceiveMyChatMemberUpdated: TChatMemberEvent;
455461
FOnReceivePreCheckoutQuery: TPreCheckoutQueryEvent;
456462
FOnReceiveSuccessfulPayment: TMessageEvent;
457463
FUpdate: TTelegramUpdateObj;
@@ -522,12 +528,14 @@ TTelegramSender = class
522528
procedure DoReceiveCallbackQuery(ACallback: TCallbackQueryObj); virtual;
523529
procedure DoReceiveChannelPost(AChannelPost: TTelegramMessageObj); virtual;
524530
procedure DoReceiveEditedChannelPost(AChannelPost: TTelegramMessageObj); virtual;
525-
procedure DoReceiveInlineQuery(AnInlineQuery: TTelegramInlineQueryObj); virtual;
526-
procedure DoReceiveChosenInlineResult(AChosenInlineResult: TTelegramChosenInlineResultObj); virtual;
527-
procedure DoReceivePreCheckoutQuery(APreCheckoutQuery: TTelegramPreCheckOutQuery); virtual;
528-
procedure DoReceiveMyChatMemberQuery(AMyChatMember: TTelegramChatMemberUpdated); virtual;
529-
procedure DoReceiveChatMemberQuery(AChatMember: TTelegramChatMemberUpdated); virtual;
530-
procedure DoReceiveSuccessfulPayment(AMessage: TTelegramMessageObj); virtual;
531+
procedure DoReceiveInlineQuery(AnInlineQuery: TTelegramInlineQueryObj); virtual;
532+
procedure DoReceiveChosenInlineResult(AChosenInlineResult: TTelegramChosenInlineResultObj); virtual;
533+
procedure DoReceivePreCheckoutQuery(APreCheckoutQuery: TTelegramPreCheckOutQuery); virtual;
534+
procedure DoReceiveMyChatMemberQuery(AMyChatMember: TTelegramChatMemberUpdated); virtual;
535+
procedure DoReceiveChatMemberQuery(AChatMember: TTelegramChatMemberUpdated); virtual;
536+
procedure DoReceiveMessageReaction(AMessageReaction: TTelegramMessageReactionUpdated); virtual;
537+
procedure DoReceiveMessageReactionCount(AMessageReactionCount: TTelegramMessageReactionCountUpdated); virtual;
538+
procedure DoReceiveSuccessfulPayment(AMessage: TTelegramMessageObj); virtual;
531539
procedure DoReceiveBusinessConnection(ABusinessConnection: TTelegramBusinessConnectionObj); virtual;
532540
procedure DoReceiveBusinessMessage(ABusinessMessage: TTelegramMessageObj); virtual;
533541
procedure DebugMessage(const Msg: String); virtual; // it will send all requests and responses to the log. Useful during development
@@ -736,16 +744,20 @@ TTelegramSender = class
736744
write FOnReceiveInlineQuery;
737745
property OnReceiveChosenInlineResult: TChosenInlineResultEvent read FOnReceiveChosenInlineResult
738746
write FOnReceiveChosenInlineResult;
739-
property OnReceivePreCheckoutQuery: TPreCheckoutQueryEvent read FOnReceivePreCheckoutQuery
740-
write FOnReceivePreCheckoutQuery;
741-
property OnReceiveSuccessfulPayment: TMessageEvent read FOnReceiveSuccessfulPayment
742-
write FOnReceiveSuccessfulPayment;
743-
property OnReceiveBusinessConnection: TBusinessConnectionEvent read FOnReceiveBusinessConnection
744-
write FOnReceiveBusinessConnection;
745-
property OnReceiveBusinessMessage: TMessageEvent read FOnReceiveBusinessMessage
746-
write FOnReceiveBusinessMessage;
747-
property OnReceiveMyChatMemberUpdated: TChatMemberEvent read FOnReceiveMyChatMemberUpdated
748-
write FOnReceiveMyChatMemberUpdated;
747+
property OnReceivePreCheckoutQuery: TPreCheckoutQueryEvent read FOnReceivePreCheckoutQuery
748+
write FOnReceivePreCheckoutQuery;
749+
property OnReceiveSuccessfulPayment: TMessageEvent read FOnReceiveSuccessfulPayment
750+
write FOnReceiveSuccessfulPayment;
751+
property OnReceiveBusinessConnection: TBusinessConnectionEvent read FOnReceiveBusinessConnection
752+
write FOnReceiveBusinessConnection;
753+
property OnReceiveBusinessMessage: TMessageEvent read FOnReceiveBusinessMessage
754+
write FOnReceiveBusinessMessage;
755+
property OnReceiveMessageReaction: TMessageReactionEvent read FOnReceiveMessageReaction
756+
write FOnReceiveMessageReaction;
757+
property OnReceiveMessageReactionCount: TMessageReactionCountEvent read FOnReceiveMessageReactionCount
758+
write FOnReceiveMessageReactionCount;
759+
property OnReceiveMyChatMemberUpdated: TChatMemberEvent read FOnReceiveMyChatMemberUpdated
760+
write FOnReceiveMyChatMemberUpdated;
749761
property OnReceiveChatMemberUpdated: TChatMemberEvent read FOnReceiveChatMemberUpdated
750762
write FOnReceiveChatMemberUpdated;
751763
end;
@@ -2265,11 +2277,11 @@ procedure TTelegramSender.DoReceiveMyChatMemberQuery(AMyChatMember: TTelegramCha
22652277
FOnReceiveMyChatMemberUpdated(Self, AMyChatMember);
22662278
end;
22672279

2268-
procedure TTelegramSender.DoReceiveChatMemberQuery(AChatMember: TTelegramChatMemberUpdated);
2269-
begin
2270-
FCurrentMessage:=nil;
2271-
FCurrentChat:=AChatMember.Chat;
2272-
FCurrentUser:=AChatMember.From;
2280+
procedure TTelegramSender.DoReceiveChatMemberQuery(AChatMember: TTelegramChatMemberUpdated);
2281+
begin
2282+
FCurrentMessage:=nil;
2283+
FCurrentChat:=AChatMember.Chat;
2284+
FCurrentUser:=AChatMember.From;
22732285
FCurrentThreadId:=_nullThrd;
22742286
FCurrentIsTopicMessage:=False;
22752287
FCurrentChatId:=FCurrentUser.ID;
@@ -2278,9 +2290,41 @@ procedure TTelegramSender.DoReceiveChatMemberQuery(AChatMember: TTelegramChatMem
22782290
DoAfterParseUpdate;
22792291
if FLanguage=EmptyStr then
22802292
SetLanguage(CurrentLanguage(FCurrentUser));
2281-
if Assigned(FOnReceiveChatMemberUpdated) then
2282-
FOnReceiveChatMemberUpdated(Self, AChatMember);
2283-
end;
2293+
if Assigned(FOnReceiveChatMemberUpdated) then
2294+
FOnReceiveChatMemberUpdated(Self, AChatMember);
2295+
end;
2296+
2297+
procedure TTelegramSender.DoReceiveMessageReaction(
2298+
AMessageReaction: TTelegramMessageReactionUpdated);
2299+
begin
2300+
FCurrentMessage:=nil;
2301+
FCurrentChat:=AMessageReaction.Chat;
2302+
FCurrentChatID:=AMessageReaction.Chat.ID;
2303+
FCurrentThreadId:=_nullThrd;
2304+
FCurrentIsTopicMessage:=False;
2305+
FCurrentUser:=AMessageReaction.User;
2306+
if CurrentIsBanned then
2307+
Exit;
2308+
DoAfterParseUpdate;
2309+
if Assigned(FOnReceiveMessageReaction) then
2310+
FOnReceiveMessageReaction(Self, AMessageReaction);
2311+
end;
2312+
2313+
procedure TTelegramSender.DoReceiveMessageReactionCount(
2314+
AMessageReactionCount: TTelegramMessageReactionCountUpdated);
2315+
begin
2316+
FCurrentMessage:=nil;
2317+
FCurrentChat:=AMessageReactionCount.Chat;
2318+
FCurrentChatID:=AMessageReactionCount.Chat.ID;
2319+
FCurrentThreadId:=_nullThrd;
2320+
FCurrentIsTopicMessage:=False;
2321+
FCurrentUser:=nil;
2322+
if CurrentIsBanned then
2323+
Exit;
2324+
DoAfterParseUpdate;
2325+
if Assigned(FOnReceiveMessageReactionCount) then
2326+
FOnReceiveMessageReactionCount(Self, AMessageReactionCount);
2327+
end;
22842328

22852329
procedure TTelegramSender.DoReceiveSuccessfulPayment(
22862330
AMessage: TTelegramMessageObj);
@@ -2350,11 +2394,13 @@ procedure TTelegramSender.DoReceiveUpdate(AnUpdate: TTelegramUpdateObj);
23502394
utChosenInlineResult: DoReceiveChosenInlineResult(AnUpdate.ChosenInlineResult);
23512395
utCallbackQuery: DoReceiveCallbackQuery(AnUpdate.CallbackQuery);
23522396
utPreCheckoutQuery: DoReceivePreCheckoutQuery(AnUpdate.PreCheckoutQuery);
2353-
utMyChatMember: DoReceiveMyChatMemberQuery(AnUpdate.MyChatMember);
2354-
utChatMember: DoReceiveChatMemberQuery(AnUpdate.ChatMember);
2355-
utBusinessConnection: DoReceiveBusinessConnection(AnUpdate.BusinessConnection);
2356-
utBusinessMessage: DoReceiveBusinessMessage(AnUpdate.BusinessMessage);
2357-
end;
2397+
utMyChatMember: DoReceiveMyChatMemberQuery(AnUpdate.MyChatMember);
2398+
utChatMember: DoReceiveChatMemberQuery(AnUpdate.ChatMember);
2399+
utBusinessConnection: DoReceiveBusinessConnection(AnUpdate.BusinessConnection);
2400+
utBusinessMessage: DoReceiveBusinessMessage(AnUpdate.BusinessMessage);
2401+
utMessageReaction: DoReceiveMessageReaction(AnUpdate.MessageReaction);
2402+
utMessageReactionCount: DoReceiveMessageReactionCount(AnUpdate.MessageReactionCount);
2403+
end;
23582404
if Assigned(FUpdateLogger) then
23592405
if CurrentIsSimpleUser then // This is to ensure that admins and moderators do not affect the statistics
23602406
FUpdateLogger.Log(AnUpdate.AsString);

0 commit comments

Comments
 (0)