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

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

View File

@ -8,7 +8,7 @@ uses
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.ScrollBox, FMX.Grid, uRecords, uDataBase, FMX.Menus, uKeyEvent,
fColorSettings, fFontSettings;
fColorSettings, fFontSettings, fobs;
type
TfrEvents = class(TFrame)
@ -44,14 +44,17 @@ type
procedure cbActionsChange(Sender: TObject);
private
procedure toLog(aCode: integer; aMethod, aMess: string);
procedure ExecuteAction(const aAction: integer; const aParam, aUserInput, aUserName, aUserLogin: string);
public
ListEvents: TArray<TEventGlobal>;
CustomRewardEvents: TList<TCustomRewardEvent>;
procedure ExecuteAction(const aAction: integer;
const aParam, aUserInput, aUserName, aUserLogin: string);
procedure UpdateGrid;
procedure ESOnGetCustomReward(CustomReward: TCustomRewardEvent);
procedure OnDonate(aNick, aMessage, aSum: string);
procedure OnTTVEvent(aNick: string);
end;
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
sm: TSongMachine;
f: TfrColorSettings;
t: TfrFontSettings;
i, j: Integer;
i, j: integer;
notify: TOBSNotify;
se: TStyleEvent;
ws: TEventWebServers;
begin
sm := TSongMachine.Create;
try
case aAction of
0: begin // Íàæàòü êíîïêó
0:
begin // Íàæàòü êíîïêó
toLog(0, 'ExecuteAction', 'Ñèìóëÿöèÿ íàæàòèÿ: ' + aParam);
kePoints.SimulateKeyPress(aParam, 500);
end;
1: begin // Âîñïðîèçâåäåíèå çâóêà
1:
begin // Âîñïðîèçâåäåíèå çâóêà
toLog(0, 'ExecuteAction', 'Âîñïðîèçâåäåíèå çâóêà: ' + aParam);
sm.PlayPublic(aParam, '100');
end;
2: begin // Kandinsky
2:
begin // Kandinsky
toLog(0, 'ExecuteAction', 'Ãåíåðàöèÿ Kandinsky äëÿ: ' + aUserInput);
Kandinsky.generate(aUserInput, aUserLogin);
end;
3: begin // OBS Notify
f := TfrColorSettings.Create(Self);
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;
3:
begin // OBS Notify
for j := 0 to TTW_Bot.frOBS1.EventWebServers.Count - 1 do
TTW_Bot.frOBS1.EventWebServers[j].WebServerChat.AddMessage(se);
for i := 0 to TTW_Bot.frOBS1.EventWebServers.Count - 1 do
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;
finally
f.Free;
t.Free;
end;
end;
4: toLog(0, 'ExecuteAction', 'Íàïèñàòü â ÷àò: ' + aUserInput);
5: begin // Çàïóñê ôàéëà
4:
toLog(0, 'ExecuteAction', 'Íàïèñàòü â ÷àò: ' + aUserInput);
5:
begin // Çàïóñê ôàéëà
toLog(0, 'ExecuteAction', 'Çàïóñê ôàéëà: ' + aParam);
ShellExecute(0, 'open', PWideChar(aParam), nil, nil, 0);
end;
@ -190,17 +187,19 @@ procedure TfrEvents.ESOnGetCustomReward(CustomReward: TCustomRewardEvent);
var
ev: TEventGlobal;
begin
toLog(3, 'ESOnGetCustomReward', 'Íà÷àëî îáðàáîòêè íàãðàäû: ' + CustomReward.Event.revard.Title);
toLog(3, 'ESOnGetCustomReward', 'Íà÷àëî îáðàáîòêè íàãðàäû: ' +
CustomReward.Event.revard.Title);
for ev in ListEvents do
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;
procedure TfrEvents.OnDonate(aNick, aMessage, aSum: string);
var
i, aSumInt, BestRow, BestPriority, BestValue,
CurrentPriority, CurrentValue, MinVal, MaxVal: integer;
i, aSumInt, BestRow, BestPriority, BestValue, CurrentPriority, CurrentValue,
MinVal, MaxVal: integer;
Condition: string;
Parts: TStringList;
begin
@ -257,11 +256,10 @@ begin
CurrentPriority := 1;
end;
if (CurrentPriority <> -1) and
((CurrentPriority > BestPriority) or
((CurrentPriority = BestPriority) and
(((CurrentPriority in [2,3]) and (CurrentValue > BestValue)) or
((CurrentPriority = 1) and (CurrentValue < BestValue))))) then
if (CurrentPriority <> -1) and ((CurrentPriority > BestPriority) or
((CurrentPriority = BestPriority) and (((CurrentPriority in [2, 3]) and
(CurrentValue > BestValue)) or ((CurrentPriority = 1) and
(CurrentValue < BestValue))))) then
begin
BestPriority := CurrentPriority;
BestValue := CurrentValue;
@ -270,10 +268,18 @@ begin
end;
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;
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;
var
@ -300,4 +306,3 @@ begin
end;
end.

View File

@ -806,6 +806,7 @@ begin
EventWebServers[i].WebServerChat.AddMessage(ws.se);
end;
end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
end;
procedure TfrOBS.toEventWebServer(aEvent: TSubEvent);
@ -823,6 +824,7 @@ begin
EventWebServers[i] := ws;
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
end;
procedure TfrOBS.toEventWebServer(aEvent: TRaidEvent);
@ -842,6 +844,7 @@ begin
EventWebServers[i] := ws;
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.from_broadcaster_user_name);
end;
procedure TfrOBS.toEventWebServer(aEvent: TGiftEvent);
@ -859,6 +862,7 @@ begin
EventWebServers[i] := ws;
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
end;
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
end;
procedure TfrOBS.toEventWebServer(aNick, aSum, aText: string);

View File

@ -2,6 +2,8 @@ unit uRecords;
interface
type
TEventGlobal = record
Event: integer;