починил обработку событий

This commit is contained in:
PC1\PTyTb
2025-08-17 10:01:38 +03:00
parent 597c49f67c
commit fc5a835b1f
3 changed files with 76 additions and 65 deletions
+56 -51
View File
@@ -8,7 +8,7 @@ uses
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
FMX.Edit, FMX.ListBox, FMX.Controls.Presentation, System.Rtti, FMX.Grid.Style, FMX.Edit, FMX.ListBox, FMX.Controls.Presentation, System.Rtti, FMX.Grid.Style,
FMX.ScrollBox, FMX.Grid, uRecords, uDataBase, FMX.Menus, uKeyEvent, FMX.ScrollBox, FMX.Grid, uRecords, uDataBase, FMX.Menus, uKeyEvent,
fColorSettings, fFontSettings; fColorSettings, fFontSettings, fobs;
type type
TfrEvents = class(TFrame) TfrEvents = class(TFrame)
@@ -44,14 +44,17 @@ type
procedure cbActionsChange(Sender: TObject); procedure cbActionsChange(Sender: TObject);
private private
procedure toLog(aCode: integer; aMethod, aMess: string); procedure toLog(aCode: integer; aMethod, aMess: string);
procedure ExecuteAction(const aAction: integer; const aParam, aUserInput, aUserName, aUserLogin: string);
public public
ListEvents: TArray<TEventGlobal>; ListEvents: TArray<TEventGlobal>;
CustomRewardEvents: TList<TCustomRewardEvent>; CustomRewardEvents: TList<TCustomRewardEvent>;
procedure ExecuteAction(const aAction: integer;
const aParam, aUserInput, aUserName, aUserLogin: string);
procedure UpdateGrid; procedure UpdateGrid;
procedure ESOnGetCustomReward(CustomReward: TCustomRewardEvent); procedure ESOnGetCustomReward(CustomReward: TCustomRewardEvent);
procedure OnDonate(aNick, aMessage, aSum: string); procedure OnDonate(aNick, aMessage, aSum: string);
procedure OnTTVEvent(aNick: string);
end; end;
implementation implementation
@@ -118,65 +121,59 @@ end;
{ --- Îáùàÿ ëîãèêà --- } { --- Îáùàÿ ëîãèêà --- }
procedure TfrEvents.ExecuteAction(const aAction: integer; const aParam, aUserInput, aUserName, aUserLogin: string); procedure TfrEvents.ExecuteAction(const aAction: integer;
const aParam, aUserInput, aUserName, aUserLogin: string);
var var
sm: TSongMachine; sm: TSongMachine;
f: TfrColorSettings; f: TfrColorSettings;
t: TfrFontSettings; t: TfrFontSettings;
i, j: Integer; i, j: integer;
notify: TOBSNotify; notify: TOBSNotify;
se: TStyleEvent; se: TStyleEvent;
ws: TEventWebServers;
begin begin
sm := TSongMachine.Create; sm := TSongMachine.Create;
try try
case aAction of case aAction of
0: begin // Íàæàòü êíîïêó 0:
begin // Íàæàòü êíîïêó
toLog(0, 'ExecuteAction', 'Ñèìóëÿöèÿ íàæàòèÿ: ' + aParam); toLog(0, 'ExecuteAction', 'Ñèìóëÿöèÿ íàæàòèÿ: ' + aParam);
kePoints.SimulateKeyPress(aParam, 500); kePoints.SimulateKeyPress(aParam, 500);
end; end;
1: begin // Âîñïðîèçâåäåíèå çâóêà 1:
begin // Âîñïðîèçâåäåíèå çâóêà
toLog(0, 'ExecuteAction', 'Âîñïðîèçâåäåíèå çâóêà: ' + aParam); toLog(0, 'ExecuteAction', 'Âîñïðîèçâåäåíèå çâóêà: ' + aParam);
sm.PlayPublic(aParam, '100'); sm.PlayPublic(aParam, '100');
end; end;
2: begin // Kandinsky 2:
begin // Kandinsky
toLog(0, 'ExecuteAction', 'Ãåíåðàöèÿ Kandinsky äëÿ: ' + aUserInput); toLog(0, 'ExecuteAction', 'Ãåíåðàöèÿ Kandinsky äëÿ: ' + aUserInput);
Kandinsky.generate(aUserInput, aUserLogin); Kandinsky.generate(aUserInput, aUserLogin);
end; end;
3: begin // OBS Notify 3:
f := TfrColorSettings.Create(Self); begin // OBS Notify
t := TfrFontSettings.Create(Self);
try
for i := 0 to High(TTW_Bot.frOBS1.listNotify) do
if TTW_Bot.frOBS1.listNotify[i].TypeEvent = 5 then
begin
notify := TTW_Bot.frOBS1.listNotify[i];
se.Title := StringReplace(notify.HeaderText, '[NICK]', aUserName, [rfReplaceAll]);
se.Context := notify.MessText;
se.Url := notify.Picture;
se.SoundURL := notify.Sound;
se.Timestamp := Now;
se.TimeMsg := notify.TimeMess;
se.BorderColor := notify.ColorBorder;
se.BorderSize := notify.SolidBorder;
se.BlockColor := notify.ColorBlock;
se.FontTitle.Font := notify.HeaderStyleFont;
se.FontTitle.Size := notify.HeaderSizeFont;
se.FontTitle.Color := notify.HeaderColorFont;
se.FontContext.Font := notify.MessStyleFont;
se.FontContext.Size := notify.MessSizeFont;
se.FontContext.Color := notify.MessColorFont;
se.RequireInteraction := True;
for j := 0 to TTW_Bot.frOBS1.EventWebServers.Count - 1 do for i := 0 to TTW_Bot.frOBS1.EventWebServers.Count - 1 do
TTW_Bot.frOBS1.EventWebServers[j].WebServerChat.AddMessage(se); begin
if TTW_Bot.frOBS1.EventWebServers[i].typeEvent <> 5 then
Continue;
ws := TTW_Bot.frOBS1.EventWebServers[i];
var
un: string;
un := aUserName;
if un = '' then
un := aUserLogin;
ws.se.Title := StringReplace(ws.se.Title, '[NICK]', un,
[rfReplaceAll]);
ws.se.Timestamp := now;
ws.WebServerChat.AddMessage(ws.se);
end; end;
finally
f.Free;
t.Free;
end; end;
end; 4:
4: toLog(0, 'ExecuteAction', 'Íàïèñàòü â ÷àò: ' + aUserInput); toLog(0, 'ExecuteAction', 'Íàïèñàòü â ÷àò: ' + aUserInput);
5: begin // Çàïóñê ôàéëà 5:
begin // Çàïóñê ôàéëà
toLog(0, 'ExecuteAction', 'Çàïóñê ôàéëà: ' + aParam); toLog(0, 'ExecuteAction', 'Çàïóñê ôàéëà: ' + aParam);
ShellExecute(0, 'open', PWideChar(aParam), nil, nil, 0); ShellExecute(0, 'open', PWideChar(aParam), nil, nil, 0);
end; end;
@@ -190,17 +187,19 @@ procedure TfrEvents.ESOnGetCustomReward(CustomReward: TCustomRewardEvent);
var var
ev: TEventGlobal; ev: TEventGlobal;
begin begin
toLog(3, 'ESOnGetCustomReward', 'Íà÷àëî îáðàáîòêè íàãðàäû: ' + CustomReward.Event.revard.Title); toLog(3, 'ESOnGetCustomReward', 'Íà÷àëî îáðàáîòêè íàãðàäû: ' +
CustomReward.Event.revard.Title);
for ev in ListEvents do for ev in ListEvents do
if (ev.Event = 1) and (ev.Condition = CustomReward.Event.revard.Title) then if (ev.Event = 1) and (ev.Condition = CustomReward.Event.revard.Title) then
ExecuteAction(ev.Action, ev.Param, CustomReward.Event.user_input, CustomReward.Event.user_name, CustomReward.Event.user_login); ExecuteAction(ev.Action, ev.Param, CustomReward.Event.user_input,
CustomReward.Event.user_name, CustomReward.Event.user_login);
end; end;
procedure TfrEvents.OnDonate(aNick, aMessage, aSum: string); procedure TfrEvents.OnDonate(aNick, aMessage, aSum: string);
var var
i, aSumInt, BestRow, BestPriority, BestValue, i, aSumInt, BestRow, BestPriority, BestValue, CurrentPriority, CurrentValue,
CurrentPriority, CurrentValue, MinVal, MaxVal: integer; MinVal, MaxVal: integer;
Condition: string; Condition: string;
Parts: TStringList; Parts: TStringList;
begin begin
@@ -257,11 +256,10 @@ begin
CurrentPriority := 1; CurrentPriority := 1;
end; end;
if (CurrentPriority <> -1) and if (CurrentPriority <> -1) and ((CurrentPriority > BestPriority) or
((CurrentPriority > BestPriority) or ((CurrentPriority = BestPriority) and (((CurrentPriority in [2, 3]) and
((CurrentPriority = BestPriority) and (CurrentValue > BestValue)) or ((CurrentPriority = 1) and
(((CurrentPriority in [2,3]) and (CurrentValue > BestValue)) or (CurrentValue < BestValue))))) then
((CurrentPriority = 1) and (CurrentValue < BestValue))))) then
begin begin
BestPriority := CurrentPriority; BestPriority := CurrentPriority;
BestValue := CurrentValue; BestValue := CurrentValue;
@@ -270,10 +268,18 @@ begin
end; end;
if BestRow <> -1 then if BestRow <> -1 then
ExecuteAction(ListEvents[BestRow].Action, ListEvents[BestRow].Param, aMessage, aNick, aNick); ExecuteAction(ListEvents[BestRow].Action, ListEvents[BestRow].Param,
aMessage, aNick, aNick);
end; end;
procedure TfrEvents.OnTTVEvent(aNick: string);
var
ev: TEventGlobal;
begin
for ev in ListEvents do
if ev.Event in ([2, 3, 4, 5]) then
ExecuteAction(ev.Action, ev.Param, '', aNick, '');
end;
procedure TfrEvents.UpdateGrid; procedure TfrEvents.UpdateGrid;
var var
@@ -300,4 +306,3 @@ begin
end; end;
end. end.
+4
View File
@@ -806,6 +806,7 @@ begin
EventWebServers[i].WebServerChat.AddMessage(ws.se); EventWebServers[i].WebServerChat.AddMessage(ws.se);
end; end;
end; end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
end; end;
procedure TfrOBS.toEventWebServer(aEvent: TSubEvent); procedure TfrOBS.toEventWebServer(aEvent: TSubEvent);
@@ -823,6 +824,7 @@ begin
EventWebServers[i] := ws; EventWebServers[i] := ws;
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se); EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
end; end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
end; end;
procedure TfrOBS.toEventWebServer(aEvent: TRaidEvent); procedure TfrOBS.toEventWebServer(aEvent: TRaidEvent);
@@ -842,6 +844,7 @@ begin
EventWebServers[i] := ws; EventWebServers[i] := ws;
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se); EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
end; end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.from_broadcaster_user_name);
end; end;
procedure TfrOBS.toEventWebServer(aEvent: TGiftEvent); procedure TfrOBS.toEventWebServer(aEvent: TGiftEvent);
@@ -859,6 +862,7 @@ begin
EventWebServers[i] := ws; EventWebServers[i] := ws;
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se); EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
end; end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
end; end;
procedure TfrOBS.toEventWebServer(aNick, aSum, aText: string); procedure TfrOBS.toEventWebServer(aNick, aSum, aText: string);
+2
View File
@@ -2,6 +2,8 @@ unit uRecords;
interface interface
type type
TEventGlobal = record TEventGlobal = record
Event: integer; Event: integer;