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

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
+70 -65
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,68 +121,62 @@ 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:
toLog(0, 'ExecuteAction', 'Ñèìóëÿöèÿ íàæàòèÿ: ' + aParam); begin // Íàæàòü êíîïêó
kePoints.SimulateKeyPress(aParam, 500); toLog(0, 'ExecuteAction', 'Ñèìóëÿöèÿ íàæàòèÿ: ' + aParam);
end; kePoints.SimulateKeyPress(aParam, 500);
1: begin // Âîñïðîèçâåäåíèå çâóêà end;
toLog(0, 'ExecuteAction', 'Âîñïðîèçâåäåíèå çâóêà: ' + aParam); 1:
sm.PlayPublic(aParam, '100'); begin // Âîñïðîèçâåäåíèå çâóêà
end; toLog(0, 'ExecuteAction', 'Âîñïðîèçâåäåíèå çâóêà: ' + aParam);
2: begin // Kandinsky sm.PlayPublic(aParam, '100');
toLog(0, 'ExecuteAction', 'Ãåíåðàöèÿ Kandinsky äëÿ: ' + aUserInput); end;
Kandinsky.generate(aUserInput, aUserLogin); 2:
end; begin // Kandinsky
3: begin // OBS Notify toLog(0, 'ExecuteAction', 'Ãåíåðàöèÿ Kandinsky äëÿ: ' + aUserInput);
f := TfrColorSettings.Create(Self); Kandinsky.generate(aUserInput, aUserLogin);
t := TfrFontSettings.Create(Self); end;
try 3:
for i := 0 to High(TTW_Bot.frOBS1.listNotify) do begin // OBS Notify
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
end; if TTW_Bot.frOBS1.EventWebServers[i].typeEvent <> 5 then
finally Continue;
f.Free; ws := TTW_Bot.frOBS1.EventWebServers[i];
t.Free; var
end; un: string;
end; un := aUserName;
4: toLog(0, 'ExecuteAction', 'Íàïèñàòü â ÷àò: ' + aUserInput); if un = '' then
5: begin // Çàïóñê ôàéëà un := aUserLogin;
toLog(0, 'ExecuteAction', 'Çàïóñê ôàéëà: ' + aParam); ws.se.Title := StringReplace(ws.se.Title, '[NICK]', un,
ShellExecute(0, 'open', PWideChar(aParam), nil, nil, 0); [rfReplaceAll]);
end; ws.se.Timestamp := now;
ws.WebServerChat.AddMessage(ws.se);
end;
end;
4:
toLog(0, 'ExecuteAction', 'Íàïèñàòü â ÷àò: ' + aUserInput);
5:
begin // Çàïóñê ôàéëà
toLog(0, 'ExecuteAction', 'Çàïóñê ôàéëà: ' + aParam);
ShellExecute(0, 'open', PWideChar(aParam), nil, nil, 0);
end;
end; end;
finally finally
sm.Free; sm.Free;
@@ -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;