Compare commits

..

11 Commits

25 changed files with 863 additions and 494 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
*.so
*.bpl
*.res
*.rtf
# файлы IDE и сборки
*.dsk
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<BorlandProject>
<Transactions>
<Transaction>2025.08.10 08:44:51.964,C:\Users\PTyTb\Documents\Embarcadero\Studio\Projects\ttw_fmx_v10\ProjectGroup1.groupproj=C:\Users\PTyTb\Documents\Embarcadero\Studio\Projects\ProjectGroup1.groupproj</Transaction>
<Transaction>1899.12.30 00:00:00.000.964,C:\Users\PTyTb\Documents\Embarcadero\Studio\Projects\ttw_fmx_v10\ProjectGroup1.groupproj=C:\Users\PTyTb\Documents\Embarcadero\Studio\Projects\ProjectGroup1.groupproj</Transaction>
</Transactions>
<Default.Personality>
<Projects ActiveProject="C:\Users\PTyTb\Documents\Embarcadero\Studio\Projects\ttw_fmx_v10\TTW_Bot_app.dproj"/>
+3 -2
View File
@@ -11,8 +11,7 @@ type
type
TTTWAuth = class
FmyEvent: TmyEvent;
FURL: string;
private
FHTTPServer: TIdHTTPServer;
procedure HandleRequest(ASender: TIdContext;
@@ -26,6 +25,8 @@ type
procedure OnStatus(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
public
FmyEvent: TmyEvent;
FURL: string;
constructor Create;
destructor Destroy; override;
procedure StartServer(aURL: string);
+8 -8
View File
@@ -115,7 +115,7 @@
<SanitizedProjectName>SilentPlayer</SanitizedProjectName>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -149,7 +149,7 @@
<EnabledSysJars>activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.15.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.15.0.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android64)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -183,7 +183,7 @@
<EnabledSysJars>activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.15.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.15.0.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_iOSDevice64)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>
<VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -211,7 +211,7 @@
<iPad_Notification40>$(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png</iPad_Notification40>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_iOSSimARM64)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>
<VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -240,19 +240,19 @@
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;emsedge;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;dbexpress;FireDACInfxDriver;inet;DataSnapCommon;dbrtl;FireDACOracleDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;dsnapxml;DataSnapClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;xmlrtl;dsnap;CloudService;FireDACDb2Driver;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSX64)'!=''">
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;DBXInformixDriver;DataSnapNativeClient;fmxobj;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;DBXInformixDriver;DataSnapNativeClient;fmxobj;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSXARM64)'!=''">
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;DBXInformixDriver;DataSnapNativeClient;fmxobj;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;DBXInformixDriver;DataSnapNativeClient;fmxobj;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -263,7 +263,7 @@
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+31 -29
View File
@@ -1,29 +1,28 @@
program TTW_Bot_app;
uses
System.StartUpCopy,
System.SysUtils,
FMX.Forms,
Web.WebReq,
IdHTTPWebBrokerBridge,
fAI in 'frames\fAI.pas' {frAI: TFrame},
fAutoActions in 'frames\fAutoActions.pas' {frAutoActions: TFrame},
fColorSettings in 'frames\fColorSettings.pas' {frColorSettings: TFrame},
fCommands in 'frames\fCommands.pas' {frCommands: TFrame},
fContruct in 'frames\fContruct.pas' {frContruct: TFrame},
fFontSettings in 'frames\fFontSettings.pas' {frFontSettings: TFrame},
fGroupsRequest in 'frames\fGroupsRequest.pas' {frGroupsRequest: TFrame},
fLog in 'frames\fLog.pas' {frLog: TFrame},
fNotify in 'frames\fNotify.pas' {frNotify: TFrame},
fOBS in 'frames\fOBS.pas' {frOBS: TFrame},
fSettings in 'frames\fSettings.pas' {frSettings: TFrame},
fSimpleGrid in 'frames\fSimpleGrid.pas' {frSimpleGrid: TFrame},
fTTS in 'frames\fTTS.pas' {frTTS: TFrame},
uCreateChat in 'forms\uCreateChat.pas' {fCreateChat},
uCreateNotify in 'forms\uCreateNotify.pas' {fCreateNotify},
uGeneral in 'forms\uGeneral.pas' {TTW_Bot},
uQ in 'forms\uQ.pas' {frmQ},
uShowText in 'forms\uShowText.pas' {fShowText},
fAI in 'frames\fAI.pas' {frAI: TFrame} ,
fAutoActions in 'frames\fAutoActions.pas' {frAutoActions: TFrame} ,
fColorSettings in 'frames\fColorSettings.pas' {frColorSettings: TFrame} ,
fCommands in 'frames\fCommands.pas' {frCommands: TFrame} ,
fContruct in 'frames\fContruct.pas' {frContruct: TFrame} ,
fFontSettings in 'frames\fFontSettings.pas' {frFontSettings: TFrame} ,
fGroupsRequest in 'frames\fGroupsRequest.pas' {frGroupsRequest: TFrame} ,
fLog in 'frames\fLog.pas' {frLog: TFrame} ,
fNotify in 'frames\fNotify.pas' {frNotify: TFrame} ,
fOBS in 'frames\fOBS.pas' {frOBS: TFrame} ,
fSettings in 'frames\fSettings.pas' {frSettings: TFrame} ,
fSimpleGrid in 'frames\fSimpleGrid.pas' {frSimpleGrid: TFrame} ,
fTTS in 'frames\fTTS.pas' {frTTS: TFrame} ,
uCreateChat in 'forms\uCreateChat.pas' {fCreateChat} ,
uCreateNotify in 'forms\uCreateNotify.pas' {fCreateNotify} ,
uGeneral in 'forms\uGeneral.pas' {TTW_Bot} ,
uQ in 'forms\uQ.pas' {frmQ} ,
uShowText in 'forms\uShowText.pas' {fShowText} ,
uAPIDA in 'Services\uAPIDA.pas',
uChatAPI in 'Services\uChatAPI.pas',
uCustomEmoties in 'Services\uCustomEmoties.pas',
@@ -36,19 +35,19 @@ uses
uWSDA in 'Services\uWSDA.pas',
uDataBase in 'utils\uDataBase.pas',
uMyTimer in 'utils\uMyTimer.pas',
uOBS_Doc_Player in 'utils\uOBS_Doc_Player.pas' {OBS_Doc_Player: TWebModule},
uOBS_Doc_Player in 'utils\uOBS_Doc_Player.pas' {OBS_Doc_Player: TWebModule} ,
uRecords in 'utils\uRecords.pas',
uRegExpr in 'utils\uRegExpr.pas',
uSoundManager in 'utils\uSoundManager.pas',
uTTS in 'utils\uTTS.pas',
fPlayerWeb in 'frames\fPlayerWeb.pas' {frPlayerWeb: TFrame},
fPlayerWeb in 'frames\fPlayerWeb.pas' {frPlayerWeb: TFrame} ,
uPlayerThread in 'utils\uPlayerThread.pas',
uWebServerChat in 'utils\uWebServerChat.pas',
uWebServerKandinsky in 'utils\uWebServerKandinsky.pas',
uWebServerEvents in 'utils\uWebServerEvents.pas',
fEvents in 'frames\fEvents.pas' {frEvents: TFrame},
fEvents in 'frames\fEvents.pas' {frEvents: TFrame} ,
uKeyEvent in 'utils\uKeyEvent.pas',
fRevards in 'frames\fRevards.pas' {frRevards: TFrame},
fRevards in 'frames\fRevards.pas' {frRevards: TFrame} ,
uWebServerGames in 'utils\uWebServerGames.pas',
uCreateGame in 'forms\uCreateGame.pas' {fCreateGame};
@@ -59,10 +58,12 @@ begin
{$IFDEF DEBUG}
ReportMemoryLeaksOnShutdown := True;
{$ENDIF}
Application.Initialize;
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass := OBS_Doc_Player;
Application.Initialize;
Application.CreateForm(TTTW_Bot, TTW_Bot);
Application.CreateForm(TfCreateGame, fCreateGame);
Application.OnException := TTW_Bot.GlobalExceptionHandler;
@@ -71,10 +72,11 @@ begin
Application.CreateForm(TfrmQ, frmQ);
Application.CreateForm(TfShowText, fShowText);
Application.CreateForm(TOBS_Doc_Player, OBS_Doc_Player);
Application.CreateForm(TfCreateChat, fCreateChat);
Application.CreateForm(TfCreateNotify, fCreateNotify);
Application.CreateForm(TfShowText, fShowText);
Application.CreateForm(TfrmQ, frmQ);
if Assigned(TTW_Bot) then
Application.OnException := TTW_Bot.GlobalExceptionHandler;
Application.Run;
end.
+22 -213
View File
@@ -5,50 +5,15 @@
<FrameworkType>FMX</FrameworkType>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Release</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
<ProjectName Condition="'$(ProjectName)'==''">TTW_Bot_app</ProjectName>
<TargetedPlatforms>693395</TargetedPlatforms>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Application</AppType>
<MainSource>TTW_Bot_app.dpr</MainSource>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
<Base_Android>true</Base_Android>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
<Base_Android64>true</Base_Android64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='iOSDevice64' and '$(Base)'=='true') or '$(Base_iOSDevice64)'!=''">
<Base_iOSDevice64>true</Base_iOSDevice64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='iOSSimARM64' and '$(Base)'=='true') or '$(Base_iOSSimARM64)'!=''">
<Base_iOSSimARM64>true</Base_iOSSimARM64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Linux64' and '$(Base)'=='true') or '$(Base_Linux64)'!=''">
<Base_Linux64>true</Base_Linux64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='OSX64' and '$(Base)'=='true') or '$(Base_OSX64)'!=''">
<Base_OSX64>true</Base_OSX64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='OSXARM64' and '$(Base)'=='true') or '$(Base_OSXARM64)'!=''">
<Base_OSXARM64>true</Base_OSXARM64>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
@@ -113,146 +78,11 @@
<Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
<SanitizedProjectName>TTW_Bot_app</SanitizedProjectName>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
<Android_LauncherIcon192>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
<IncludeAndroid_AdaptiveIcon>true</IncludeAndroid_AdaptiveIcon>
<IncludeAndroid_VectorizedSplash>true</IncludeAndroid_VectorizedSplash>
<Android_AdaptiveIconMonochrome>$(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml</Android_AdaptiveIconMonochrome>
<Android_AdaptiveIconForeground>$(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml</Android_AdaptiveIconForeground>
<Android_AdaptiveIconBackground>$(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml</Android_AdaptiveIconBackground>
<Android_VectorizedSplash>$(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml</Android_VectorizedSplash>
<Android_VectorizedSplashDark>$(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml</Android_VectorizedSplashDark>
<Android_VectorizedSplashV31>$(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml</Android_VectorizedSplashV31>
<Android_VectorizedSplashV31Dark>$(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml</Android_VectorizedSplashV31Dark>
<Android_NotificationIcon24>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>
<Android_NotificationIcon36>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>
<Android_NotificationIcon48>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>
<Android_NotificationIcon72>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>
<Android_NotificationIcon96>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>
<IncludeAndroid_NotificationAccentColor>false</IncludeAndroid_NotificationAccentColor>
<IncludeAndroid_VectorizedNotificationIcon>true</IncludeAndroid_VectorizedNotificationIcon>
<Android_VectorizedNotificationIcon>$(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml</Android_VectorizedNotificationIcon>
<EnabledSysJars>activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.15.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.15.0.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Android64)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=;minSdkVersion=23;targetSdkVersion=35</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
<Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
<Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
<Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
<Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
<Android_LauncherIcon192>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png</Android_LauncherIcon192>
<Android_SplashImage426>$(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png</Android_SplashImage426>
<Android_SplashImage470>$(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png</Android_SplashImage470>
<Android_SplashImage640>$(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png</Android_SplashImage640>
<Android_SplashImage960>$(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png</Android_SplashImage960>
<IncludeAndroid_AdaptiveIcon>true</IncludeAndroid_AdaptiveIcon>
<IncludeAndroid_VectorizedSplash>true</IncludeAndroid_VectorizedSplash>
<Android_AdaptiveIconMonochrome>$(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml</Android_AdaptiveIconMonochrome>
<Android_AdaptiveIconForeground>$(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml</Android_AdaptiveIconForeground>
<Android_AdaptiveIconBackground>$(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml</Android_AdaptiveIconBackground>
<Android_VectorizedSplash>$(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml</Android_VectorizedSplash>
<Android_VectorizedSplashDark>$(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml</Android_VectorizedSplashDark>
<Android_VectorizedSplashV31>$(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml</Android_VectorizedSplashV31>
<Android_VectorizedSplashV31Dark>$(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml</Android_VectorizedSplashV31Dark>
<Android_NotificationIcon24>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png</Android_NotificationIcon24>
<Android_NotificationIcon36>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png</Android_NotificationIcon36>
<Android_NotificationIcon48>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png</Android_NotificationIcon48>
<Android_NotificationIcon72>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png</Android_NotificationIcon72>
<Android_NotificationIcon96>$(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png</Android_NotificationIcon96>
<IncludeAndroid_NotificationAccentColor>false</IncludeAndroid_NotificationAccentColor>
<IncludeAndroid_VectorizedNotificationIcon>true</IncludeAndroid_VectorizedNotificationIcon>
<Android_VectorizedNotificationIcon>$(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml</Android_VectorizedNotificationIcon>
<EnabledSysJars>activity-1.7.2.dex.jar;annotation-experimental-1.4.1.dex.jar;annotation-jvm-1.8.1.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-7.1.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-jvm-1.4.2.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.15.0.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.15.0.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.2.dex.jar;lifecycle-livedata-2.6.2.dex.jar;lifecycle-livedata-core-2.6.2.dex.jar;lifecycle-runtime-2.6.2.dex.jar;lifecycle-service-2.6.2.dex.jar;lifecycle-viewmodel-2.6.2.dex.jar;lifecycle-viewmodel-savedstate-2.6.2.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.5.0.dex.jar;play-services-basement-18.4.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.2.0.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.2.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar</EnabledSysJars>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_iOSDevice64)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>
<VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_BundleId>$(MSBuildProjectName)</VerInfo_BundleId>
<iOS_AppStore1024>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png</iOS_AppStore1024>
<iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
<iPhone_AppIcon180>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>
<iPhone_Launch2x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png</iPhone_Launch2x>
<iPhone_LaunchDark2x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png</iPhone_LaunchDark2x>
<iPhone_Launch3x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png</iPhone_Launch3x>
<iPhone_LaunchDark3x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png</iPhone_LaunchDark3x>
<iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
<iPhone_Spotlight120>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png</iPhone_Spotlight120>
<iPhone_Setting58>$(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png</iPhone_Setting58>
<iPhone_Setting87>$(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png</iPhone_Setting87>
<iPhone_Notification40>$(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png</iPhone_Notification40>
<iPhone_Notification60>$(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png</iPhone_Notification60>
<iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
<iPad_AppIcon167>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png</iPad_AppIcon167>
<iPad_Launch2x>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png</iPad_Launch2x>
<iPad_LaunchDark2x>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png</iPad_LaunchDark2x>
<iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
<iPad_Setting58>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png</iPad_Setting58>
<iPad_Notification40>$(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png</iPad_Notification40>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_iOSSimARM64)'!=''">
<DCC_UsePackage>emshosting;fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;ibmonitor;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;ibxbindings;bindcomp;FireDACCommon;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;ibxpress;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone &amp; iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers</VerInfo_Keys>
<VerInfo_UIDeviceFamily>iPhoneAndiPad</VerInfo_UIDeviceFamily>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<iOS_AppStore1024>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png</iOS_AppStore1024>
<iPhone_AppIcon120>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png</iPhone_AppIcon120>
<iPhone_AppIcon180>$(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png</iPhone_AppIcon180>
<iPhone_Launch2x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png</iPhone_Launch2x>
<iPhone_LaunchDark2x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png</iPhone_LaunchDark2x>
<iPhone_Launch3x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png</iPhone_Launch3x>
<iPhone_LaunchDark3x>$(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png</iPhone_LaunchDark3x>
<iPhone_Spotlight80>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png</iPhone_Spotlight80>
<iPhone_Spotlight120>$(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png</iPhone_Spotlight120>
<iPhone_Setting58>$(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png</iPhone_Setting58>
<iPhone_Setting87>$(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png</iPhone_Setting87>
<iPhone_Notification40>$(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png</iPhone_Notification40>
<iPhone_Notification60>$(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png</iPhone_Notification60>
<iPad_AppIcon152>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png</iPad_AppIcon152>
<iPad_AppIcon167>$(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png</iPad_AppIcon167>
<iPad_Launch2x>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png</iPad_Launch2x>
<iPad_LaunchDark2x>$(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png</iPad_LaunchDark2x>
<iPad_SpotLight80>$(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png</iPad_SpotLight80>
<iPad_Setting58>$(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png</iPad_Setting58>
<iPad_Notification40>$(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png</iPad_Notification40>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Linux64)'!=''">
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;emsedge;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;dbexpress;FireDACInfxDriver;inet;DataSnapCommon;dbrtl;FireDACOracleDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;dsnapxml;DataSnapClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;xmlrtl;dsnap;CloudService;FireDACDb2Driver;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSX64)'!=''">
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;DBXInformixDriver;DataSnapNativeClient;fmxobj;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSXARM64)'!=''">
<DCC_UsePackage>DataSnapServer;emshosting;fmx;DbxCommonDriver;bindengine;FireDACCommonODBC;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;IndyIPClient;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;ibxbindings;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;DBXInformixDriver;DataSnapNativeClient;fmxobj;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<VerInfo_Keys>CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple&apos;s speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface</VerInfo_Keys>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1049</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;Skia.Package.FMX;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;vclactnband;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;Skia.Package.FMX;fmxdae;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -263,7 +93,7 @@
<UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win64)'!=''">
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;ibmonitor;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;ibxbindings;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;inetstn;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;ibxpress;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_UsePackage>DataSnapServer;vclwinx;emshosting;fmx;DbxCommonDriver;vclie;bindengine;VCLRESTComponents;FireDACCommonODBC;DBXMSSQLDriver;IndyIPCommon;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;IndyIPClient;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;vclactnband;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;fmxase;vcltouch;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACDBXDriver;fmxdae;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;DBXInterBaseDriver;vcldsnap;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;adortl;dsnapxml;IndyIPServer;DataSnapClient;DataSnapProviderClient;dsnapcon;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;DBXSybaseASADriver;CloudService;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;vclib;DataSnapNativeClient;bindcompvclsmp;fmxobj;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
<BT_BuildType>Debug</BT_BuildType>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
@@ -306,15 +136,17 @@
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_MajorVer>10</VerInfo_MajorVer>
<VerInfo_MinorVer>1</VerInfo_MinorVer>
<VerInfo_Release>3</VerInfo_Release>
<VerInfo_Locale>1049</VerInfo_Locale>
<VerInfo_Keys>CompanyName=PTyTb;FileDescription=$(MSBuildProjectName);FileVersion=10.1.3.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=ru.ptytb.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Release>4</VerInfo_Release>
<VerInfo_Keys>CompanyName=PTyTb;FileDescription=$(MSBuildProjectName);FileVersion=10.1.4.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=ru.ptytb.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<Icon_MainIcon>TTW_Bot_app_Icon2.ico</Icon_MainIcon>
<UWP_DelphiLogo44>..\ttw_fmx_v9\fawico_44_2.png</UWP_DelphiLogo44>
<UWP_DelphiLogo150>..\ttw_fmx_v9\fawico_150_2.png</UWP_DelphiLogo150>
<DCC_RunTimeTypeInfo>true</DCC_RunTimeTypeInfo>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1033</VerInfo_Locale>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
@@ -322,88 +154,70 @@
</DelphiCompile>
<DCCReference Include="frames\fAI.pas">
<Form>frAI</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fAutoActions.pas">
<Form>frAutoActions</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fColorSettings.pas">
<Form>frColorSettings</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fCommands.pas">
<Form>frCommands</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fContruct.pas">
<Form>frContruct</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fFontSettings.pas">
<Form>frFontSettings</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fGroupsRequest.pas">
<Form>frGroupsRequest</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fLog.pas">
<Form>frLog</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fNotify.pas">
<Form>frNotify</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fOBS.pas">
<Form>frOBS</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fSettings.pas">
<Form>frSettings</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fSimpleGrid.pas">
<Form>frSimpleGrid</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="frames\fTTS.pas">
<Form>frTTS</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="forms\uCreateChat.pas">
<Form>fCreateChat</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="forms\uCreateNotify.pas">
<Form>fCreateNotify</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="forms\uGeneral.pas">
<Form>TTW_Bot</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="forms\uQ.pas">
<Form>frmQ</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="forms\uShowText.pas">
<Form>fShowText</Form>
<FormType>fmx</FormType>
</DCCReference>
<DCCReference Include="Services\uAPIDA.pas"/>
<DCCReference Include="Services\uChatAPI.pas"/>
@@ -419,7 +233,6 @@
<DCCReference Include="utils\uMyTimer.pas"/>
<DCCReference Include="utils\uOBS_Doc_Player.pas">
<Form>OBS_Doc_Player</Form>
<FormType>dfm</FormType>
<DesignClass>TWebModule</DesignClass>
</DCCReference>
<DCCReference Include="utils\uRecords.pas"/>
@@ -428,7 +241,6 @@
<DCCReference Include="utils\uTTS.pas"/>
<DCCReference Include="frames\fPlayerWeb.pas">
<Form>frPlayerWeb</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="utils\uPlayerThread.pas"/>
@@ -437,19 +249,16 @@
<DCCReference Include="utils\uWebServerEvents.pas"/>
<DCCReference Include="frames\fEvents.pas">
<Form>frEvents</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="utils\uKeyEvent.pas"/>
<DCCReference Include="frames\fRevards.pas">
<Form>frRevards</Form>
<FormType>fmx</FormType>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="utils\uWebServerGames.pas"/>
<DCCReference Include="forms\uCreateGame.pas">
<Form>fCreateGame</Form>
<FormType>fmx</FormType>
</DCCReference>
<None Include=".gitignore"/>
<None Include="forms\install_Script.iss"/>
@@ -478,7 +287,7 @@
<Excluded_Packages Name="$(BDSBIN)\dclofficexp290.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Deployment Version="5">
<Deployment Version="4">
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule">
<Platform Name="iOSSimulator">
<Overwrite>true</Overwrite>
@@ -564,6 +373,16 @@
<Operation>0</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidClasses">
<Platform Name="Android">
<RemoteDir>classes</RemoteDir>
<Operation>64</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>classes</RemoteDir>
<Operation>64</Operation>
</Platform>
</DeployClass>
<DeployClass Name="AndroidFileProvider">
<Platform Name="Android">
<RemoteDir>res\xml</RemoteDir>
@@ -1206,9 +1025,6 @@
<Platform Name="Win64">
<Operation>1</Operation>
</Platform>
<Platform Name="Win64x">
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="ProjectiOSDeviceDebug">
<Platform Name="iOSDevice32">
@@ -1504,13 +1320,6 @@
<ProjectRoot Platform="Win64x" Name="$(PROJECTNAME)"/>
</Deployment>
<Platforms>
<Platform value="Android">True</Platform>
<Platform value="Android64">True</Platform>
<Platform value="iOSDevice64">True</Platform>
<Platform value="iOSSimARM64">True</Platform>
<Platform value="Linux64">True</Platform>
<Platform value="OSX64">True</Platform>
<Platform value="OSXARM64">True</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">True</Platform>
</Platforms>
Binary file not shown.
+246 -13
View File
@@ -1,4 +1,4 @@
; Script generated by the Inno Setup Script Wizard. ïðîâåðêà óñòàíîâùèà 2
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "TTW_Bot"
@@ -12,16 +12,12 @@
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
LicenseFile={#MyAppDir}\license.rtf
DisableWelcomePage=no
AppId={{81A4FB77-4AE5-4FAC-A889-CA3CA7B8C687}
AppId={{81A4FB77-4AE5-4FAC-A889-CA3CA7B8C687}}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
@@ -30,12 +26,10 @@ DefaultDirName={autopf}\{#MyAppName}
ChangesAssociations=yes
DisableDirPage=auto
DisableProgramGroupPage=auto
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir={#MyAppDir}\Win32\installer
OutputBaseFilename=TTW_Bot_setup
SetupIconFile={#MyAppDir}\install.ico
Compression=lzma
Compression=lzma2/ultra
SolidCompression=yes
WizardStyle=modern
@@ -43,26 +37,51 @@ WizardStyle=modern
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"; LicenseFile: "{#MyAppDir}\license.rtf"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
Name: "install_ytdlp"; Description: "Óñòàíîâèòü yt-dlp"; GroupDescription: "Êîìïîíåíòû äëÿ âîñïðîèçâåäåíèÿ ìóçûêè ïî ññûëêå"
Name: "install_ffmpeg"; Description: "Óñòàíîâèòü ffmpeg"; GroupDescription: "Êîìïîíåíòû äëÿ âîñïðîèçâåäåíèÿ ìóçûêè ïî ññûëêå"
Name: "install_ru_irina"; Description: "Ñêà÷àòü Ðó ãîëîñ Èðèíà"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
Name: "install_ru_denis"; Description: "Ñêà÷àòü Ðó ãîëîñ Äåíèñ"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
Name: "install_ru_dmitri"; Description: "Ñêà÷àòü Ðó ãîëîñ Äìèòðèé"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
Name: "install_ru_ruslan"; Description: "Ñêà÷àòü Ðó ãîëîñ Ðóñëàí"; GroupDescription: "Ìîäåëè ãîëîñîâ äëÿ îçâó÷êè"
[Files]
Source: "{#MyAppDir}\Win32\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\bass.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\botapp.cfg"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\ffmpeg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\libcrypto-1_1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\libeay32.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\libssl-1_1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\libssl32.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\SilentPlayer.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\ssleay32.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\yt-dlp.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#MyAppDir}\Win32\Release\stl\*"; DestDir: "{userappdata}\TTW_Bot\stl"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\Win32\Release\piper\*"; DestDir: "{app}\piper"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\Win32\Release\games\*"; DestDir: "{app}\games"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "{#MyAppDir}\license.rtf"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
Source: "{#MyAppDir}\unzip.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "{tmp}\yt-dlp.exe"; DestDir: "{app}"; Flags: external deleteafterinstall; Tasks: install_ytdlp
Source: "{tmp}\ffmpeg.zip"; DestDir: "{app}"; Flags: external deleteafterinstall; Tasks: install_ffmpeg
; Ãîëîñ Èðèíû
Source: "{tmp}\ru_RU-irina-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_irina
Source: "{tmp}\ru_RU-irina-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_irina
; Ãîëîñ Äåíèñà
Source: "{tmp}\ru_RU-denis-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_denis
Source: "{tmp}\ru_RU-denis-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_denis
; Ãîëîñ Äìèòðèÿ
Source: "{tmp}\ru_RU-dmitri-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_dmitri
Source: "{tmp}\ru_RU-dmitri-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_dmitri
; Ãîëîñ Ðóñëàíà
Source: "{tmp}\ru_RU-ruslan-medium.onnx"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_ruslan
Source: "{tmp}\ru_RU-ruslan-medium.onnx.json"; DestDir: "{userappdata}\TTW_Bot\Voices"; Flags: external; Tasks: install_ru_ruslan
[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
@@ -79,7 +98,24 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
[Code]
var
DownloadPage: TDownloadWizardPage;
function OnDownloadProgress(const Url, FileName: String; const Progress, ProgressMax: Int64): Boolean;
begin
if Progress = ProgressMax then
Log(Format('Óñïåøíî çàãðóæåíî: %s', [FileName]));
Result := True;
end;
procedure InitializeWizard;
begin
DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), @OnDownloadProgress);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
var
HasDownloads: Boolean;
begin
if CurPageID = wpLicense then
begin
@@ -87,6 +123,203 @@ begin
if not Result then
MsgBox('Âû äîëæíû ïðèíÿòü óñëîâèÿ ëèöåíçèîííîãî ñîãëàøåíèÿ!', mbError, MB_OK);
end
else if CurPageID = wpReady then
begin
HasDownloads := False;
DownloadPage.Clear;
if WizardIsTaskSelected('install_ytdlp') then
begin
DownloadPage.Add('https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe', 'yt-dlp.exe', '');
HasDownloads := True;
end;
if WizardIsTaskSelected('install_ffmpeg') then
begin
DownloadPage.Add('https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip', 'ffmpeg.zip', '');
HasDownloads := True;
end;
// Äîáàâëÿåì çàãðóçêó ãîëîñîâ
if WizardIsTaskSelected('install_ru_irina') then
begin
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx?download=true', 'ru_RU-irina-medium.onnx', '');
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/irina/medium/ru_RU-irina-medium.onnx.json?download=true', 'ru_RU-irina-medium.onnx.json', '');
HasDownloads := True;
end;
if WizardIsTaskSelected('install_ru_denis') then
begin
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx?download=true', 'ru_RU-denis-medium.onnx', '');
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/denis/medium/ru_RU-denis-medium.onnx.json?download=true', 'ru_RU-denis-medium.onnx.json', '');
HasDownloads := True;
end;
if WizardIsTaskSelected('install_ru_dmitri') then
begin
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx?download=true', 'ru_RU-dmitri-medium.onnx', '');
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/dmitri/medium/ru_RU-dmitri-medium.onnx.json?download=true', 'ru_RU-dmitri-medium.onnx.json', '');
HasDownloads := True;
end;
if WizardIsTaskSelected('install_ru_ruslan') then
begin
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx?download=true', 'ru_RU-ruslan-medium.onnx', '');
DownloadPage.Add('https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ru/ru_RU/ruslan/medium/ru_RU-ruslan-medium.onnx.json?download=true', 'ru_RU-ruslan-medium.onnx.json', '');
HasDownloads := True;
end;
if HasDownloads then
begin
DownloadPage.Show;
try
DownloadPage.Download;
DownloadPage.Hide;
Result := True;
except
SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK);
Result := False;
end;
end
else
Result := True;
end
else
Result := True;
end;
procedure InstallFiles;
var
ResultCode: Integer;
UnzipTool: string;
VoicesPath: string;
TempPath: string;
FindRec: TFindRec;
Found: Boolean;
begin
VoicesPath := ExpandConstant('{userappdata}\TTW_Bot\Voices');
if not DirExists(VoicesPath) then
ForceDirectories(VoicesPath);
if WizardIsTaskSelected('install_ytdlp') then
begin
if FileExists(ExpandConstant('{tmp}\yt-dlp.exe')) then
begin
FileCopy(ExpandConstant('{tmp}\yt-dlp.exe'), ExpandConstant('{app}\yt-dlp.exe'), False);
Log('yt-dlp óñòàíîâëåí');
end
else
Log('Îøèáêà: yt-dlp.exe íå íàéäåí âî âðåìåííîé ïàïêå');
end;
if WizardIsTaskSelected('install_ffmpeg') then
begin
if FileExists(ExpandConstant('{tmp}\ffmpeg.zip')) then
begin
UnzipTool := ExpandConstant('{tmp}\unzip.exe');
if not FileExists(UnzipTool) then
begin
ExtractTemporaryFile('unzip.exe');
end;
// Ñîçäàåì âðåìåííóþ ïàïêó äëÿ ðàñïàêîâêè
TempPath := ExpandConstant('{tmp}\ffmpeg_temp');
ForceDirectories(TempPath);
// Ðàñïàêîâûâàåì àðõèâ âî âðåìåííóþ ïàïêó
Exec(UnzipTool, '-o "' + ExpandConstant('{tmp}\ffmpeg.zip') + '" -d "' + TempPath + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
// Èùåì ffmpeg.exe â ïîäïàïêàõ
Found := False;
if FindFirst(TempPath + '\*', FindRec) then
begin
try
repeat
if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and
(FindRec.Name <> '.') and (FindRec.Name <> '..') then
begin
// Ïðîâåðÿåì íàëè÷èå ffmpeg.exe â ïàïêå bin
if FileExists(TempPath + '\' + FindRec.Name + '\bin\ffmpeg.exe') then
begin
FileCopy(TempPath + '\' + FindRec.Name + '\bin\ffmpeg.exe',
ExpandConstant('{app}\ffmpeg.exe'), False);
Log('ffmpeg.exe íàéäåí è ñêîïèðîâàí èç ïàïêè: ' + FindRec.Name);
Found := True;
Break;
end;
end;
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
if not Found then
Log('Îøèáêà: ffmpeg.exe íå íàéäåí â ðàñïàêîâàííûõ ôàéëàõ');
// Óäàëÿåì âðåìåííóþ ïàïêó
DelTree(TempPath, True, True, True);
end
else
Log('Îøèáêà: ffmpeg.zip íå íàéäåí âî âðåìåííîé ïàïêå');
end;
if WizardIsTaskSelected('install_ru_irina') then
begin
if FileExists(ExpandConstant('{tmp}\ru_RU-irina-medium.onnx')) then
begin
FileCopy(ExpandConstant('{tmp}\ru_RU-irina-medium.onnx'), VoicesPath + '\ru_RU-irina-medium.onnx', False);
FileCopy(ExpandConstant('{tmp}\ru_RU-irina-medium.onnx.json'), VoicesPath + '\ru_RU-irina-medium.onnx.json', False);
Log('Ãîëîñ Èðèíà óñòàíîâëåí');
end
else
Log('Îøèáêà: Ãîëîñ Èðèíà íå íàéäåí âî âðåìåííîé ïàïêå');
end;
if WizardIsTaskSelected('install_ru_denis') then
begin
if FileExists(ExpandConstant('{tmp}\ru_RU-denis-medium.onnx')) then
begin
FileCopy(ExpandConstant('{tmp}\ru_RU-denis-medium.onnx'), VoicesPath + '\ru_RU-denis-medium.onnx', False);
FileCopy(ExpandConstant('{tmp}\ru_RU-denis-medium.onnx.json'), VoicesPath + '\ru_RU-denis-medium.onnx.json', False);
Log('Ãîëîñ Äåíèñ óñòàíîâëåí');
end
else
Log('Îøèáêà: Ãîëîñ Äåíèñ íå íàéäåí âî âðåìåííîé ïàïêå');
end;
if WizardIsTaskSelected('install_ru_dmitri') then
begin
if FileExists(ExpandConstant('{tmp}\ru_RU-dmitri-medium.onnx')) then
begin
FileCopy(ExpandConstant('{tmp}\ru_RU-dmitri-medium.onnx'), VoicesPath + '\ru_RU-dmitri-medium.onnx', False);
FileCopy(ExpandConstant('{tmp}\ru_RU-dmitri-medium.onnx.json'), VoicesPath + '\ru_RU-dmitri-medium.onnx.json', False);
Log('Ãîëîñ Äìèòðèé óñòàíîâëåí');
end
else
Log('Îøèáêà: Ãîëîñ Äìèòðèé íå íàéäåí âî âðåìåííîé ïàïêå');
end;
if WizardIsTaskSelected('install_ru_ruslan') then
begin
if FileExists(ExpandConstant('{tmp}\ru_RU-ruslan-medium.onnx')) then
begin
FileCopy(ExpandConstant('{tmp}\ru_RU-ruslan-medium.onnx'), VoicesPath + '\ru_RU-ruslan-medium.onnx', False);
FileCopy(ExpandConstant('{tmp}\ru_RU-ruslan-medium.onnx.json'), VoicesPath + '\ru_RU-ruslan-medium.onnx.json', False);
Log('Ãîëîñ Ðóñëàí óñòàíîâëåí');
end
else
Log('Îøèáêà: Ãîëîñ Ðóñëàí íå íàéäåí âî âðåìåííîé ïàïêå');
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
InstallFiles;
end;
end;
+87 -62
View File
@@ -64,6 +64,7 @@ object TTW_Bot: TTTW_Bot
inherited btnGetToken: TButton
Images = ImageList1
ImageIndex = 10
OnClick = frSettings1btnGetTokenClick
end
inherited btnGetClientID: TButton
Images = ImageList1
@@ -72,11 +73,13 @@ object TTW_Bot: TTTW_Bot
inherited btnOpenStream: TButton
Images = ImageList1
ImageIndex = 17
OnClick = frSettings1btnOpenStreamClick
end
inherited btnGetTokenStreamer: TButton
Images = ImageList1
ImageIndex = 10
TabOrder = 30
OnClick = frSettings1btnGetTokenStreamerClick
end
inherited edtBotTokenStreamer: TEdit
TabOrder = 33
@@ -89,44 +92,40 @@ object TTW_Bot: TTTW_Bot
inherited btnDAGetCode: TButton
Images = ImageList1
ImageIndex = 10
TabOrder = 34
end
inherited Label63: TLabel
TabOrder = 29
TabOrder = 26
end
inherited edtDAClientID: TEdit
TabOrder = 31
TabOrder = 28
end
inherited Label64: TLabel
TabOrder = 30
TabOrder = 27
end
inherited edtDAClientSecret: TEdit
TabOrder = 29
end
inherited Label65: TLabel
TabOrder = 32
TabOrder = 30
end
inherited edtDARedirectURL: TEdit
TabOrder = 37
end
inherited edtDACode: TEdit
TabOrder = 35
end
inherited Label66: TLabel
TabOrder = 36
TabOrder = 31
end
inherited btnDAStart: TButton
Images = ImageList1
ImageIndex = 18
TabOrder = 39
OnClick = frSettings1btnDAStartClick
end
inherited btnGetDADef: TButton
Images = ImageList1
TabOrder = 41
TabOrder = 37
end
end
inherited btnOpenRomaning: TButton
Images = ImageList1
ImageIndex = 14
Size.Width = 201.000000000000000000
OnClick = frSettings1btnOpenRomaningClick
end
inherited btnImportSettings: TButton
Images = ImageList1
@@ -134,6 +133,7 @@ object TTW_Bot: TTTW_Bot
Position.X = 8.000000000000000000
Position.Y = 351.000000000000000000
Size.Width = 201.000000000000000000
OnClick = frSettings1btnImportSettingsClick
end
inherited btnExportSettings: TButton
Images = ImageList1
@@ -176,10 +176,33 @@ object TTW_Bot: TTTW_Bot
ImageIndex = 10
Size.Width = 145.000000000000000000
end
inherited GroupBox1: TGroupBox
inherited rbGC: TRadioButton
TabOrder = 41
end
inherited RBCustom: TRadioButton
TabOrder = 40
end
inherited rbDS: TRadioButton
TabOrder = 39
end
inherited rbCG: TRadioButton
TabOrder = 38
end
end
inherited GroupBox2: TGroupBox
Position.X = 462.000000000000000000
inherited Label3: TLabel
TabOrder = 38
end
inherited Label4: TLabel
TabOrder = 39
end
inherited edtKandiKey: TEdit
TabOrder = 40
end
inherited edtKandiSecret: TEdit
TabOrder = 41
TabOrder = 46
end
end
end
@@ -225,35 +248,46 @@ object TTW_Bot: TTTW_Bot
inherited btnAddUserName: TButton
Images = ImageList1
ImageIndex = 11
TabOrder = 38
end
inherited btnGetDateFollow: TButton
Images = ImageList1
ImageIndex = 15
TabOrder = 39
end
inherited btnGetAgeAccaunt: TButton
Images = ImageList1
ImageIndex = 15
TabOrder = 40
end
inherited btnCounterAddtoText: TButton
Images = ImageList1
ImageIndex = 23
TabOrder = 41
end
inherited cbCounterName: TComboBox
TabOrder = 42
end
inherited btnGPT: TButton
Images = ImageList1
ImageIndex = 19
TabOrder = 43
end
inherited btnRandomUserName: TButton
Images = ImageList1
ImageIndex = 11
TabOrder = 44
end
inherited btnGetChannelStat: TButton
Images = ImageList1
ImageIndex = 22
Size.Width = 136.000000000000000000
TabOrder = 45
end
inherited btnAIPic: TButton
Images = ImageList1
ImageIndex = 5
TabOrder = 46
end
end
inherited btnAddCommand: TButton
@@ -268,6 +302,9 @@ object TTW_Bot: TTTW_Bot
Images = ImageList1
ImageIndex = 12
end
inherited cbHelloTTS: TCheckBox
Position.X = 241.000000000000000000
end
end
end
inherited GroupBox9: TGroupBox
@@ -283,17 +320,17 @@ object TTW_Bot: TTTW_Bot
inherited btnRandomAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 29
TabOrder = 28
end
inherited btnRandomDel: TButton
Images = ImageList1
ImageIndex = 12
TabOrder = 30
TabOrder = 29
end
inherited btnRmGroup: TButton
Images = ImageList1
ImageIndex = 4
TabOrder = 32
TabOrder = 30
end
inherited Label4: TLabel
TabOrder = 33
@@ -388,8 +425,8 @@ object TTW_Bot: TTTW_Bot
end
end
inherited OpenDialog1: TOpenDialog
Left = 664
Top = 368
Left = 672
Top = 320
end
inherited GroupBox2: TGroupBox
TabOrder = 7
@@ -505,6 +542,14 @@ object TTW_Bot: TTTW_Bot
ImageIndex = 12
Position.X = 737.000000000000000000
end
inherited PopupMenu1: TPopupMenu
Left = 616
Top = 32
end
inherited OpenDialog1: TOpenDialog
Left = 432
Top = 24
end
inherited pVKGenerate: TPanel
Visible = True
end
@@ -593,8 +638,8 @@ object TTW_Bot: TTTW_Bot
inherited sgWebChats: TStringGrid
Size.Width = 968.000000000000000000
Size.Height = 282.000000000000000000
Viewport.Width = 964.000000000000000000
Viewport.Height = 257.000000000000000000
Viewport.Width = 968.000000000000000000
Viewport.Height = 282.000000000000000000
inherited StringColumn2: TStringColumn
Size.Width = 200.000000000000000000
end
@@ -615,7 +660,7 @@ object TTW_Bot: TTTW_Bot
OnClick = frOBS1btnDeleteeChatClick
end
inherited Label1: TLabel
TabOrder = 19
TabOrder = 23
end
inherited btnCreateOBSNotify: TButton
Images = ImageList1
@@ -626,12 +671,11 @@ object TTW_Bot: TTTW_Bot
Images = ImageList1
ImageIndex = 5
Position.X = 264.000000000000000000
TabOrder = 18
TabOrder = 22
end
inherited btnCreateOBSGame: TButton
Images = ImageList1
ImageIndex = 20
TabOrder = 5
end
object btnCreateChat: TButton
Images = ImageList1
@@ -724,8 +768,7 @@ object TTW_Bot: TTTW_Bot
Text = ''
end
inherited OpenDialog1: TOpenDialog
Left = 472
Top = 32
Left = 424
end
end
end
@@ -766,34 +809,23 @@ object TTW_Bot: TTTW_Bot
Size.Height = 718.000000000000000000
Size.PlatformDefault = False
inherited GroupBox20: TGroupBox
inherited edtMessage: TEdit
TabOrder = 37
end
inherited edtInterval: TEdit
TabOrder = 38
end
inherited btnAddMessage: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 39
end
inherited btnRmMessage: TButton
Images = ImageList1
ImageIndex = 4
TabOrder = 40
end
inherited btnEditMessage: TButton
Images = ImageList1
ImageIndex = 3
TabOrder = 41
end
inherited btnNotifyTest: TButton
Images = ImageList1
ImageIndex = 25
TabOrder = 42
end
inherited sgTimers: TStringGrid
TabOrder = 43
Viewport.Width = 463.000000000000000000
Viewport.Height = 225.000000000000000000
inherited scTimerMessage: TStringColumn
@@ -805,26 +837,19 @@ object TTW_Bot: TTTW_Bot
end
end
inherited GroupBox23: TGroupBox
inherited edtBanWords: TEdit
TabOrder = 37
end
inherited btnBanWordsAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 38
end
inherited btnBanWordsEdt: TButton
Images = ImageList1
ImageIndex = 3
TabOrder = 39
end
inherited btnBanWordsDel: TButton
Images = ImageList1
ImageIndex = 4
TabOrder = 40
end
inherited sgBanWords: TStringGrid
TabOrder = 41
Viewport.Width = 297.000000000000000000
Viewport.Height = 225.000000000000000000
inherited scRegEx: TStringColumn
@@ -837,26 +862,25 @@ object TTW_Bot: TTTW_Bot
Position.X = 217.000000000000000000
Size.Width = 88.000000000000000000
Size.PlatformDefault = False
TabOrder = 42
end
inherited Label6: TLabel
TabOrder = 43
end
inherited edtBanWordsCheck: TEdit
TabOrder = 44
Size.Width = 201.000000000000000000
end
inherited Label7: TLabel
TabOrder = 45
end
inherited lBanWordsCheck: TLabel
TabOrder = 46
end
end
inherited GroupBox17: TGroupBox
inherited edtCounterName: TEdit
TabOrder = 41
end
inherited edtCounterTrigger: TEdit
TabOrder = 39
end
inherited edtCounterCount: TEdit
TabOrder = 38
end
inherited btnCounterAdd: TButton
Images = ImageList1
ImageIndex = 0
TabOrder = 40
OnClick = frAutoActions1btnCounterAddClick
end
inherited btnCounterDelete: TButton
@@ -870,7 +894,6 @@ object TTW_Bot: TTTW_Bot
ImageIndex = 0
Position.X = 416.000000000000000000
Size.Width = 22.000000000000000000
TabOrder = 42
Text = ''
end
inherited btnCounterM: TButton
@@ -878,17 +901,14 @@ object TTW_Bot: TTTW_Bot
ImageIndex = 12
Position.X = 449.000000000000000000
Size.Width = 22.000000000000000000
TabOrder = 43
Text = ''
end
inherited btnCounterEdit: TButton
Images = ImageList1
ImageIndex = 3
TabOrder = 44
OnClick = frAutoActions1btnCounterEditClick
end
inherited sgCounter: TStringGrid
TabOrder = 45
Viewport.Width = 463.000000000000000000
Viewport.Height = 121.000000000000000000
inherited scCounterTrigger: TStringColumn
@@ -1040,6 +1060,7 @@ object TTW_Bot: TTTW_Bot
Size.Width = 65.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = #1058#1086#1082#1077#1085' '#1073#1086#1090#1072':'
TabOrder = 8
end
@@ -1049,6 +1070,7 @@ object TTW_Bot: TTTW_Bot
Size.Width = 97.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = #1058#1086#1082#1077#1085' '#1089#1090#1088#1080#1084#1077#1088#1072':'
TabOrder = 9
end
@@ -1058,6 +1080,7 @@ object TTW_Bot: TTTW_Bot
Size.Width = 32.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = '0'
TabOrder = 10
end
@@ -1067,6 +1090,7 @@ object TTW_Bot: TTTW_Bot
Size.Width = 48.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = '0'
TabOrder = 11
end
@@ -1074,6 +1098,7 @@ object TTW_Bot: TTTW_Bot
Anchors = [akTop, akRight]
Position.X = 819.000000000000000000
Position.Y = 8.000000000000000000
TextSettings.Trimming = None
Text = #1054#1090#1076#1077#1083#1100#1085#1086#1077' '#1089#1087#1072#1089#1080#1073#1086':'
TabOrder = 12
end
@@ -22436,7 +22461,7 @@ object TTW_Bot: TTTW_Bot
SourceRect.Bottom = 512.000000000000000000
end>
end>
Left = 520
Top = 42
Left = 536
Top = 66
end
end
+42 -3
View File
@@ -91,6 +91,11 @@ type
procedure frAutoActions1btnCounterAddClick(Sender: TObject);
procedure frAutoActions1btnCounterEditClick(Sender: TObject);
procedure frAutoActions1btnCounterDeleteClick(Sender: TObject);
procedure frSettings1btnOpenRomaningClick(Sender: TObject);
procedure frSettings1btnOpenStreamClick(Sender: TObject);
procedure frSettings1btnGetTokenClick(Sender: TObject);
procedure frSettings1btnGetTokenStreamerClick(Sender: TObject);
procedure frSettings1btnImportSettingsClick(Sender: TObject);
private
{ Private declarations }
procedure toSpeech(aText: string);
@@ -167,13 +172,13 @@ end;
procedure TTTW_Bot.toSpeech(aText: string);
var
tts: ttts;
s, s1: string;
s: string;
begin
s := ExtractFilePath(ParamStr(0)) + 'piper\piper.exe';
s1 := ExtractFilePath(ParamStr(0)) + 'piper\voices';
if frTTS1.cbVoices.ItemIndex = -1 then
exit;
tts := ttts.Create(s, s1);
tts := ttts.Create(s, myConst.VoicesPath);
try
tts.SetModel(frTTS1.cbVoices.text);
tts.TextToSpeech(aText, true);
@@ -496,6 +501,10 @@ begin
CreateDir(myConst.AppDataPath + 'ytSongs');
myConst.ytSongsPath := myConst.AppDataPath + 'ytSongs\';
if not DirectoryExists(myConst.AppDataPath + 'Voices') then
CreateDir(myConst.AppDataPath + 'Voices');
myConst.VoicesPath := myConst.AppDataPath + 'Voices\';
myConst.SilentPlay := myConst.GeneralPath + 'SilentPlayer.exe';
myConst.ytPlay := myConst.GeneralPath + 'Player.exe';
myConst.cfg1 := myConst.GeneralPath + 'botapp.cfg';
@@ -884,6 +893,36 @@ begin
end;
procedure TTTW_Bot.frSettings1btnGetTokenClick(Sender: TObject);
begin
frSettings1.btnGetTokenClick(Sender);
end;
procedure TTTW_Bot.frSettings1btnGetTokenStreamerClick(Sender: TObject);
begin
frSettings1.btnGetTokenStreamerClick(Sender);
end;
procedure TTTW_Bot.frSettings1btnImportSettingsClick(Sender: TObject);
begin
frSettings1.btnImportSettingsClick(Sender);
end;
procedure TTTW_Bot.frSettings1btnOpenRomaningClick(Sender: TObject);
begin
frSettings1.btnOpenRomaningClick(Sender);
end;
procedure TTTW_Bot.frSettings1btnOpenStreamClick(Sender: TObject);
begin
frSettings1.btnOpenStreamClick(Sender);
end;
procedure TTTW_Bot.frTTS1btnSendClick(Sender: TObject);
begin
frTTS1.btnSendClick(Sender);
+32 -32
View File
@@ -12,7 +12,7 @@ object frAutoActions: TfrAutoActions
TabOrder = 1
object edtMessage: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 38
TabOrder = 37
Position.X = 8.000000000000000000
Position.Y = 257.000000000000000000
Size.Width = 406.000000000000000000
@@ -21,7 +21,7 @@ object frAutoActions: TfrAutoActions
end
object edtInterval: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 39
TabOrder = 38
Text = '10'
Position.X = 412.000000000000000000
Position.Y = 257.000000000000000000
@@ -32,7 +32,7 @@ object frAutoActions: TfrAutoActions
object btnAddMessage: TButton
Position.X = 8.000000000000000000
Position.Y = 287.000000000000000000
TabOrder = 40
TabOrder = 39
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnAddMessageClick
@@ -40,7 +40,7 @@ object frAutoActions: TfrAutoActions
object btnRmMessage: TButton
Position.X = 184.000000000000000000
Position.Y = 287.000000000000000000
TabOrder = 41
TabOrder = 40
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnRmMessageClick
@@ -48,7 +48,7 @@ object frAutoActions: TfrAutoActions
object btnEditMessage: TButton
Position.X = 96.000000000000000000
Position.Y = 287.000000000000000000
TabOrder = 42
TabOrder = 41
Text = #1048#1079#1084#1077#1085#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnEditMessageClick
@@ -59,7 +59,7 @@ object frAutoActions: TfrAutoActions
Size.Width = 55.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 43
TabOrder = 42
Text = #1058#1077#1089#1090
TextSettings.Trimming = None
OnClick = btnNotifyTestClick
@@ -72,12 +72,12 @@ object frAutoActions: TfrAutoActions
Size.Width = 463.000000000000000000
Size.Height = 225.000000000000000000
Size.PlatformDefault = False
TabOrder = 44
TabOrder = 43
RowCount = 0
OnEditingDone = sgTimersEditingDone
OnCellClick = sgTimersCellClick
Viewport.Width = 459.000000000000000000
Viewport.Height = 200.000000000000000000
Viewport.Width = 463.000000000000000000
Viewport.Height = 225.000000000000000000
object ccTimerEnable: TCheckColumn
Header = #1042#1082#1083
HeaderSettings.TextSettings.WordWrap = False
@@ -110,7 +110,7 @@ object frAutoActions: TfrAutoActions
TabOrder = 2
object edtBanWords: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 38
TabOrder = 37
Position.X = 8.000000000000000000
Position.Y = 257.000000000000000000
Size.Width = 297.000000000000000000
@@ -120,7 +120,7 @@ object frAutoActions: TfrAutoActions
object btnBanWordsAdd: TButton
Position.X = 8.000000000000000000
Position.Y = 367.000000000000000000
TabOrder = 39
TabOrder = 38
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnBanWordsAddClick
@@ -128,7 +128,7 @@ object frAutoActions: TfrAutoActions
object btnBanWordsEdt: TButton
Position.X = 96.000000000000000000
Position.Y = 367.000000000000000000
TabOrder = 40
TabOrder = 39
Text = #1048#1079#1084#1077#1085#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnBanWordsEdtClick
@@ -136,7 +136,7 @@ object frAutoActions: TfrAutoActions
object btnBanWordsDel: TButton
Position.X = 184.000000000000000000
Position.Y = 367.000000000000000000
TabOrder = 41
TabOrder = 40
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnBanWordsDelClick
@@ -149,11 +149,11 @@ object frAutoActions: TfrAutoActions
Size.Width = 297.000000000000000000
Size.Height = 225.000000000000000000
Size.PlatformDefault = False
TabOrder = 42
TabOrder = 41
RowCount = 0
OnCellClick = sgBanWordsCellClick
Viewport.Width = 293.000000000000000000
Viewport.Height = 200.000000000000000000
Viewport.Width = 297.000000000000000000
Viewport.Height = 225.000000000000000000
object scRegEx: TStringColumn
Header = #1056#1077#1075#1091#1083#1103#1088#1085#1086#1077' '#1074#1099#1088#1072#1078#1077#1085#1080#1077
HeaderSettings.TextSettings.WordWrap = False
@@ -164,7 +164,7 @@ object frAutoActions: TfrAutoActions
object btnBanWordsCheck: TButton
Position.X = 225.000000000000000000
Position.Y = 312.000000000000000000
TabOrder = 43
TabOrder = 42
Text = #1055#1088#1086#1074#1077#1088#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnBanWordsCheckClick
@@ -174,11 +174,11 @@ object frAutoActions: TfrAutoActions
Position.Y = 287.000000000000000000
TextSettings.Trimming = None
Text = #1055#1088#1086#1074#1077#1088#1082#1072':'
TabOrder = 44
TabOrder = 43
end
object edtBanWordsCheck: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 45
TabOrder = 44
Position.X = 8.000000000000000000
Position.Y = 312.000000000000000000
Size.Width = 209.000000000000000000
@@ -193,14 +193,14 @@ object frAutoActions: TfrAutoActions
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = #1056#1077#1079#1091#1083#1100#1090#1072#1090':'
TabOrder = 46
TabOrder = 45
end
object lBanWordsCheck: TLabel
Position.X = 81.000000000000000000
Position.Y = 342.000000000000000000
TextSettings.Trimming = None
Text = #1085#1077#1090' '#1073#1072#1085#1074#1086#1088#1076#1072
TabOrder = 47
TabOrder = 46
end
end
object GroupBox17: TGroupBox
@@ -213,7 +213,7 @@ object frAutoActions: TfrAutoActions
TabOrder = 0
object edtCounterName: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 41
TabOrder = 40
Position.X = 8.000000000000000000
Position.Y = 153.000000000000000000
Size.Width = 102.000000000000000000
@@ -222,7 +222,7 @@ object frAutoActions: TfrAutoActions
end
object edtCounterTrigger: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 39
TabOrder = 38
Position.X = 118.000000000000000000
Position.Y = 153.000000000000000000
Size.Width = 290.000000000000000000
@@ -231,7 +231,7 @@ object frAutoActions: TfrAutoActions
end
object edtCounterCount: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 38
TabOrder = 37
Text = '0'
Position.X = 416.000000000000000000
Position.Y = 153.000000000000000000
@@ -242,7 +242,7 @@ object frAutoActions: TfrAutoActions
object btnCounterAdd: TButton
Position.X = 8.000000000000000000
Position.Y = 183.000000000000000000
TabOrder = 40
TabOrder = 39
Text = #1044#1086#1073#1072#1074#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnCounterAddClick
@@ -250,7 +250,7 @@ object frAutoActions: TfrAutoActions
object btnCounterDelete: TButton
Position.X = 184.000000000000000000
Position.Y = 183.000000000000000000
TabOrder = 42
TabOrder = 41
Text = #1059#1076#1072#1083#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnCounterDeleteClick
@@ -261,7 +261,7 @@ object frAutoActions: TfrAutoActions
Size.Width = 25.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 43
TabOrder = 42
Text = '+'
TextSettings.Trimming = None
OnClick = btnCounterPClick
@@ -272,7 +272,7 @@ object frAutoActions: TfrAutoActions
Size.Width = 24.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 44
TabOrder = 43
Text = '-'
TextSettings.Trimming = None
OnClick = btnCounterMClick
@@ -280,7 +280,7 @@ object frAutoActions: TfrAutoActions
object btnCounterEdit: TButton
Position.X = 96.000000000000000000
Position.Y = 183.000000000000000000
TabOrder = 45
TabOrder = 44
Text = #1048#1079#1084#1077#1085#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnCounterEditClick
@@ -293,11 +293,11 @@ object frAutoActions: TfrAutoActions
Size.Width = 463.000000000000000000
Size.Height = 121.000000000000000000
Size.PlatformDefault = False
TabOrder = 46
TabOrder = 45
RowCount = 0
OnCellClick = sgCounterCellClick
Viewport.Width = 459.000000000000000000
Viewport.Height = 96.000000000000000000
Viewport.Width = 463.000000000000000000
Viewport.Height = 121.000000000000000000
object scCounterName: TStringColumn
Header = #1053#1072#1079#1074#1072#1085#1080#1077
HeaderSettings.TextSettings.WordWrap = False
+6 -6
View File
@@ -12,7 +12,7 @@ object frColorSettings: TfrColorSettings
Size.Width = 120.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 39
TabOrder = 37
end
object cpStyleBlockColor: TColorPanel
Color = claWhite
@@ -38,25 +38,25 @@ object frColorSettings: TfrColorSettings
Position.Y = 10.000000000000000000
TextSettings.Trimming = None
Text = #1062#1074#1077#1090' '#1088#1072#1084#1082#1080
TabOrder = 37
TabOrder = 36
end
object Label44: TLabel
Position.X = 177.000000000000000000
Position.Y = 120.000000000000000000
TextSettings.Trimming = None
Text = #1054#1090#1089#1090#1091#1087#1099
TabOrder = 41
TabOrder = 39
end
object Label48: TLabel
Position.X = 177.000000000000000000
Position.Y = 65.000000000000000000
TextSettings.Trimming = None
Text = #1058#1086#1083#1097#1080#1085#1072' '#1088#1072#1084#1082#1080
TabOrder = 42
TabOrder = 41
end
object sbStyleBlockBorderSize: TSpinBox
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 44
TabOrder = 42
Cursor = crIBeam
Value = 2.000000000000000000
Position.X = 177.000000000000000000
@@ -67,7 +67,7 @@ object frColorSettings: TfrColorSettings
end
object sbStyleBlockPadding: TSpinBox
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 45
TabOrder = 44
Cursor = crIBeam
Value = 10.000000000000000000
Position.X = 177.000000000000000000
+29 -8
View File
@@ -49,8 +49,32 @@ object frCommands: TfrCommands
Viewport.Height = 161.000000000000000000
end
inherited GroupBox7: TGroupBox
inherited btnAddUserName: TButton
TabOrder = 37
end
inherited btnGetDateFollow: TButton
TabOrder = 38
end
inherited btnGetAgeAccaunt: TButton
TabOrder = 39
end
inherited btnCounterAddtoText: TButton
TabOrder = 40
end
inherited cbCounterName: TComboBox
TabOrder = 41
end
inherited btnGPT: TButton
TabOrder = 42
end
inherited btnRandomUserName: TButton
TabOrder = 43
end
inherited btnGetChannelStat: TButton
TabOrder = 44
end
inherited btnAIPic: TButton
TabOrder = 46
TabOrder = 45
end
end
inherited btnAddCommand: TButton
@@ -62,9 +86,6 @@ object frCommands: TfrCommands
inherited btnRmCommand: TButton
OnClick = frContruct1btnRmCommandClick
end
inherited cbHelloTTS: TCheckBox
OnClick = nil
end
end
end
object GroupBox9: TGroupBox
@@ -94,16 +115,16 @@ object frCommands: TfrCommands
Viewport.Height = 116.000000000000000000
end
inherited btnRandomAdd: TButton
TabOrder = 31
TabOrder = 30
end
inherited btnRandomDel: TButton
TabOrder = 32
TabOrder = 31
end
inherited btnRmGroup: TButton
TabOrder = 34
TabOrder = 33
end
inherited Label4: TLabel
TabOrder = 36
TabOrder = 35
end
end
end
+1
View File
@@ -13,6 +13,7 @@ object frPlayerWeb: TfrPlayerWeb
Size.Width = 187.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = #1057#1089#1099#1083#1082#1072' '#1076#1083#1103' OBS '#1044#1086#1082'-'#1087#1072#1085#1077#1083#1080
TabOrder = 3
end
+3 -3
View File
@@ -7,7 +7,7 @@ uses
System.Variants, FMX.Styles, IdHTTPWebBrokerBridge, IdGlobal, Web.HTTPApp,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Layouts, FMX.ListBox, uPlayerThread,
bass_simple, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, FMX.Edit;
{bass_simple,} FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, FMX.Edit;
type
TfrPlayerWeb = class(TFrame)
@@ -15,7 +15,7 @@ type
Edit1: TEdit;
private
mp: TBassSimple;
{ mp: TBassSimple;}
Player: TPlayerThread;
FServer: TIdHTTPWebBrokerBridge;
procedure StartServer;
@@ -33,7 +33,7 @@ begin
FServer.Active := False;
FServer.Bindings.Clear;
Player.Free;
mp.Free;
{mp.Free;}
end;
procedure TfrPlayerWeb.init;
+15 -15
View File
@@ -138,7 +138,7 @@ object frSettings: TfrSettings
Size.Width = 128.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 31
TabOrder = 29
Text = #1054#1090#1082#1088#1099#1090#1100' '#1089#1090#1088#1080#1084
TextSettings.Trimming = None
OnClick = btnOpenStreamClick
@@ -149,7 +149,7 @@ object frSettings: TfrSettings
Size.Width = 128.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 32
TabOrder = 31
Text = #1055#1086#1083#1091#1095#1080#1090#1100' Token'
TextSettings.Trimming = None
OnClick = btnGetTokenStreamerClick
@@ -173,7 +173,7 @@ object frSettings: TfrSettings
Size.PlatformDefault = False
TextSettings.Trimming = None
Text = 'API Token '#1057#1090#1088#1080#1084#1077#1088#1072
TabOrder = 38
TabOrder = 37
end
object cbTTVAutoLogin: TCheckBox
Position.X = 8.000000000000000000
@@ -197,7 +197,7 @@ object frSettings: TfrSettings
object btnDAGetCode: TButton
Position.X = 200.000000000000000000
Position.Y = 216.000000000000000000
TabOrder = 40
TabOrder = 33
Text = #1055#1086#1083#1091#1095#1080#1090#1100
TextSettings.Trimming = None
OnClick = btnDAGetCodeClick
@@ -207,11 +207,11 @@ object frSettings: TfrSettings
Position.Y = 24.000000000000000000
TextSettings.Trimming = None
Text = 'Client ID'
TabOrder = 33
TabOrder = 28
end
object edtDAClientID: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 35
TabOrder = 30
Password = True
Position.X = 8.000000000000000000
Position.Y = 49.000000000000000000
@@ -225,11 +225,11 @@ object frSettings: TfrSettings
Position.Y = 79.000000000000000000
TextSettings.Trimming = None
Text = 'Client Secret'
TabOrder = 34
TabOrder = 29
end
object edtDAClientSecret: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 36
TabOrder = 31
Password = True
Position.X = 8.000000000000000000
Position.Y = 104.000000000000000000
@@ -243,11 +243,11 @@ object frSettings: TfrSettings
Position.Y = 134.000000000000000000
TextSettings.Trimming = None
Text = 'Redirect URL'
TabOrder = 38
TabOrder = 32
end
object edtDARedirectURL: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 39
TabOrder = 34
Password = True
Position.X = 8.000000000000000000
Position.Y = 159.000000000000000000
@@ -258,7 +258,7 @@ object frSettings: TfrSettings
end
object edtDACode: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 41
TabOrder = 35
Password = True
Position.X = 8.000000000000000000
Position.Y = 214.000000000000000000
@@ -271,7 +271,7 @@ object frSettings: TfrSettings
Position.Y = 189.000000000000000000
TextSettings.Trimming = None
Text = 'Code'
TabOrder = 42
TabOrder = 37
end
object btnDAStart: TButton
Position.X = 8.000000000000000000
@@ -279,7 +279,7 @@ object frSettings: TfrSettings
Size.Width = 121.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 43
TabOrder = 39
Text = #1055#1086#1076#1082#1083#1102#1095#1080#1090#1100#1089#1103
TextSettings.Trimming = None
OnClick = btnDAStartClick
@@ -291,7 +291,7 @@ object frSettings: TfrSettings
Size.Width = 209.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 46
TabOrder = 43
Text = #1055#1086#1083#1091#1095#1080#1090#1100' '#1076#1072#1085#1085#1099#1077' Donation Alerts'
TextSettings.Trimming = None
Visible = False
@@ -345,7 +345,7 @@ object frSettings: TfrSettings
Size.Width = 193.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 7
TabOrder = 6
Text = #1047#1072#1087#1091#1089#1090#1080#1090#1100' '#1084#1072#1089#1090#1077#1088' '#1085#1072#1089#1090#1088#1086#1081#1082#1080
TextSettings.Trimming = None
OnClick = btnMasterClick
+37 -35
View File
@@ -4,11 +4,12 @@ interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants, uQ,
System.Variants, uQ, IdHTTP, IdComponent, System.Zip,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
winapi.ShellAPI, System.IOUtils, uDataBase,
FMX.Controls.Presentation, FMX.Edit, uTWAuth, uRecords, uAPIDA, uShowText,
System.json, uWSDA, fLog;
System.json, uWSDA, fLog, IdBaseComponent, IdIOHandler, IdIOHandlerSocket,
IdIOHandlerStack, IdSSL, IdSSLOpenSSL;
type
TfrSettings = class(TFrame)
@@ -83,18 +84,18 @@ uses uGeneral;
procedure TfrSettings.btnDAGetCodeClick(Sender: TObject);
var
twa: TTTWAuth;
Url: string;
URL: string;
begin
if (edtDAClientSecret.text = '') or (edtDAClientID.text = '') or
(edtDARedirectURL.text = '') then
exit;
Url := 'https://www.donationalerts.com/oauth/authorize?client_id=' +
URL := 'https://www.donationalerts.com/oauth/authorize?client_id=' +
edtDAClientID.text +
'&redirect_uri=http://localhost/da&response_type=code&scope=oauth-user-show+oauth-donation-subscribe';
twa := TTTWAuth.Create;
twa.OnToken := OnTokenDA;
twa.StartServer(Url);
twa.StartServer(URL);
// ttw_Auth áóäåò îñâîáîæäåí àâòîìàòè÷åñêè ïîñëå ïîëó÷åíèÿ òîêåíà (ñì. uTWAuth)
end;
@@ -107,7 +108,6 @@ begin
end;
end;
procedure TfrSettings.btnDAStartClick(Sender: TObject);
var
UserInfo: TJSONObject;
@@ -124,17 +124,14 @@ begin
if FAPIClient.Token = '' then
begin
try
FAPIClient.Token := FAPIClient.GetAccessToken(
edtDAClientID.text,
edtDAClientSecret.text,
edtDARedirectURL.text,
edtDACode.text
);
FAPIClient.Token := FAPIClient.GetAccessToken(edtDAClientID.text,
edtDAClientSecret.text, edtDARedirectURL.text, edtDACode.text);
except
on E: Exception do
begin
TTW_Bot.toLog('fSettings', 'btnDAStartClick', 'Îøèáêà ïîëó÷åíèÿ òîêåíà: ' + E.Message,2);
Exit;
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
'Îøèáêà ïîëó÷åíèÿ òîêåíà: ' + E.Message, 2);
exit;
end;
end;
@@ -143,31 +140,34 @@ begin
try
UserInfo := FAPIClient.GetUserInfo;
Data := UserInfo.GetValue<TJSONObject>('data');
FWSClient.Wsstoken := Data.GetValue<string>('socket_connection_token');
FWSClient.Wsstoken := Data.GetValue<string>
('socket_connection_token');
FWSClient.WSID := Data.GetValue<string>('id');
except
on E: Exception do
begin
TTW_Bot.toLog( 'fSettings','btnDAStartClick', 'Îøèáêà ïîëó÷åíèÿ UserInfo: ' + E.Message,2);
Exit;
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
'Îøèáêà ïîëó÷åíèÿ UserInfo: ' + E.Message, 2);
exit;
end;
end;
end;
try
FWSClient.Connect('wss://centrifugo.donationalerts.com/connection/websocket');
FWSClient.Send(Format(
'{"params":{"token":"%s"},"id":1}',
[FWSClient.Wsstoken]
));
FWSClient.Connect
('wss://centrifugo.donationalerts.com/connection/websocket');
FWSClient.Send(Format('{"params":{"token":"%s"},"id":1}',
[FWSClient.Wsstoken]));
except
on E: Exception do
TTW_Bot.toLog( 'fSettings','btnDAStartClick', 'Îøèáêà ïîäêëþ÷åíèÿ ê WebSocket: ' + E.Message,2);
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
'Îøèáêà ïîäêëþ÷åíèÿ ê WebSocket: ' + E.Message, 2);
end;
except
on E: Exception do
TTW_Bot.toLog('fSettings', 'btnDAStartClick', 'Íåèçâåñòíàÿ îøèáêà: ' + E.Message,2);
TTW_Bot.toLog('fSettings', 'btnDAStartClick', 'Íåèçâåñòíàÿ îøèáêà: ' +
E.Message, 2);
end;
finally
UserInfo.Free;
@@ -176,14 +176,15 @@ begin
else
begin
try
edtDACode.Text:='';
edtDACode.text := '';
if Assigned(FWSClient) then
begin
try
FWSClient.Disconnect;
except
on E: Exception do
TTW_Bot.toLog( 'fSettings', 'btnDAStartClick', 'Îøèáêà ïðè îòêëþ÷åíèè WS: ' + E.Message,2);
TTW_Bot.toLog('fSettings', 'btnDAStartClick',
'Îøèáêà ïðè îòêëþ÷åíèè WS: ' + E.Message, 2);
end;
FreeAndNil(FWSClient);
end;
@@ -204,7 +205,7 @@ begin
if SaveDialog1.Execute then
begin
DestinationFile := SaveDialog1.FileName;
TFile.Copy(myConst.DBPath, DestinationFile, True);
TFile.Copy(myConst.DBPath, DestinationFile, true);
end;
end;
@@ -227,10 +228,10 @@ begin
s := 'https://id.twitch.tv/oauth2/authorize?client_id=' + edtBotClientID.text
+ '&redirect_uri=http://localhost&response_type=token&' + 'scope=' + sope;
ttw_Auth.StartServer('');
forbot := True;
forbot := true;
fShowText.Memo1.Lines.text := s;
fShowText.Show;
fShowText.Memo1.WordWrap := True;
fShowText.Memo1.WordWrap := true;
end;
@@ -261,7 +262,7 @@ begin
SourceFile := OpenDialog1.FileName;
DestinationDir := myConst.DBPath;
DestinationFile := myConst.DBPath;
TFile.Copy(SourceFile, DestinationFile, True);
TFile.Copy(SourceFile, DestinationFile, true);
DB := TSettingsDatabase.Create(myConst.DBPath);
end;
end;
@@ -315,11 +316,12 @@ end;
destructor TfrSettings.Destroy;
begin
if Assigned(FWSClient) then
if Assigned(FWSClient) then
begin
try
FWSClient.Disconnect; // åñëè åñòü ìåòîä îòêëþ÷åíèÿ
except end;
except
end;
FreeAndNil(FWSClient);
end;
FreeAndNil(FAPIClient);
@@ -339,7 +341,7 @@ end;
procedure TfrSettings.init;
begin
if not Assigned(FAPIClient) then
if not Assigned(FAPIClient) then
FAPIClient := TAPIClient.Create;
if not Assigned(FWSClient) then
begin
@@ -369,14 +371,14 @@ end;
procedure TfrSettings.HandleWSDonate(aNick, aMessage, aSum: string);
begin
// fDonats.OnDADonate(aNick, aMessage, aSum);
TTW_Bot.frOBS1.toEventWebServer(aNick,aSum,aMessage);
TTW_Bot.frOBS1.toEventWebServer(aNick, aSum, aMessage);
TTW_Bot.frEvents1.OnDonate(aNick, aMessage, aSum);
end;
procedure TfrSettings.HandleWSStatus(AStatusText: string; AStatusCode: integer);
begin
TTW_Bot.tolog('fSettings','HandleWSStatus',AStatusText,3);
TTW_Bot.toLog('fSettings', 'HandleWSStatus', AStatusText, 3);
TTW_Bot.Label8.text := AStatusText;
case AStatusCode of
0:
+14
View File
@@ -5,6 +5,7 @@ object frTTS: TfrTTS
object Label1: TLabel
Position.X = 8.000000000000000000
Position.Y = 8.000000000000000000
TextSettings.Trimming = None
Text = #1043#1086#1083#1086#1089
TabOrder = 0
end
@@ -31,6 +32,7 @@ object frTTS: TfrTTS
object Label2: TLabel
Position.X = 8.000000000000000000
Position.Y = 63.000000000000000000
TextSettings.Trimming = None
Text = #1058#1077#1082#1089#1090' '#1076#1083#1103' '#1086#1079#1074#1091#1095#1082#1080
TabOrder = 3
end
@@ -46,6 +48,7 @@ object frTTS: TfrTTS
object Label3: TLabel
Position.X = 8.000000000000000000
Position.Y = 118.000000000000000000
TextSettings.Trimming = None
Text = #1048#1089#1090#1086#1095#1085#1080#1082
TabOrder = 5
end
@@ -70,4 +73,15 @@ object frTTS: TfrTTS
TextSettings.Trimming = None
OnClick = btnSendClick
end
object btnGetVoices: TButton
Position.X = 177.000000000000000000
Position.Y = 63.000000000000000000
Size.Width = 128.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 8
Text = #1055#1086#1083#1091#1095#1080#1090#1100' '#1075#1086#1083#1086#1089#1072
TextSettings.Trimming = None
OnClick = btnGetVoicesClick
end
end
+15 -7
View File
@@ -6,7 +6,7 @@ uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants, winapi.shellapi,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
FMX.Edit, FMX.ListBox, FMX.Controls.Presentation, uTTS, bass_simple;
FMX.Edit, FMX.ListBox, FMX.Controls.Presentation, uTTS;
type
TfrTTS = class(TFrame)
@@ -18,10 +18,12 @@ type
Label3: TLabel;
btnSend: TButton;
cbOutput: TComboBox;
btnGetVoices: TButton;
procedure btnUpdateVoicesClick(Sender: TObject);
procedure btnSendClick(Sender: TObject);
procedure cbVoicesChange(Sender: TObject);
procedure cbOutputChange(Sender: TObject);
procedure btnGetVoicesClick(Sender: TObject);
private
{ Private declarations }
tts: TTTS;
@@ -34,19 +36,26 @@ implementation
{$R *.fmx}
uses ugeneral;
procedure TfrTTS.btnGetVoicesClick(Sender: TObject);
begin
ShellExecute(0, 'open', pwidechar(ExtractFilePath(myConst.VoicesPath)),
nil, nil, 1);
ShellExecute(0, 'open', pwidechar('https://huggingface.co/rhasspy/piper-voices/tree/v1.0.0'),
nil, nil, 1);
end;
procedure TfrTTS.btnSendClick(Sender: TObject);
var
s, s1: string;
s: string;
begin
case cbOutput.ItemIndex of
0:
begin // this
s := ExtractFilePath(ParamStr(0)) + 'piper\piper.exe';
s1 := ExtractFilePath(ParamStr(0)) + 'piper\voices';
if cbVoices.ItemIndex = -1 then
exit;
tts := TTTS.Create(s, s1);
tts := TTTS.Create(s, myConst.VoicesPath);
try
tts.SetModel(cbVoices.Text);
tts.TextToSpeech(edtText.Text, true);
@@ -67,13 +76,12 @@ end;
procedure TfrTTS.btnUpdateVoicesClick(Sender: TObject);
var
s, s1: string;
s: string;
List: TStringList;
begin
s := ExtractFilePath(ParamStr(0)) + 'piper\piper.exe';
s1 := ExtractFilePath(ParamStr(0)) + 'piper\voices';
tts := TTTS.Create(s, s1);
tts := TTTS.Create(s, myConst.VoicesPath);
List := TStringList.Create;
try
cbVoices.Items.Clear;
+211
View File
@@ -0,0 +1,211 @@
{\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff0\deff0\stshfdbch0\stshfloch31506\stshfhich31506\stshfbi31506\deflang1049\deflangfe1049\themelang1049\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}{\flomajor\f31500\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset204\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f363\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\f361\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\f364\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f365\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f366\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f367\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f368\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f369\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f373\fbidi \fswiss\fcharset0\fprq2 Arial;}{\f371\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
{\f374\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f375\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f376\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f377\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
{\f378\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f379\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f373\fbidi \fswiss\fcharset0\fprq2 Arial;}{\f371\fbidi \fswiss\fcharset238\fprq2 Arial CE;}
{\f374\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f375\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f376\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f377\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}
{\f378\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f379\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\flomajor\f31510\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fdbmajor\f31520\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31530\fbidi \froman\fcharset0\fprq2 Cambria;}
{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}
{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31540\fbidi \froman\fcharset0\fprq2 Times New Roman;}
{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31550\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fdbminor\f31560\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31570\fbidi \fswiss\fcharset0\fprq2 Calibri;}
{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31580\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \f31506\fs22\lang1049\langfe1033\langfenp1033 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\f31506\fs22\lang1049\langfe1033\cgrid\langnp1049\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31506\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1049\langfe1033\cgrid\langnp1049\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}}
{\*\rsidtbl \rsid7365210\rsid7484679\rsid9062840\rsid10493932\rsid12407344\rsid13573742}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author PTyTb}{\operator PTyTb}
{\creatim\yr2025\mo4\dy23\hr14\min49}{\revtim\yr2025\mo4\dy23\hr14\min56}{\version5}{\edmins6}{\nofpages2}{\nofwords171}{\nofchars976}{\nofcharsws1145}{\vern49247}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw11906\paperh16838\margl1701\margr850\margt1134\margb1134\gutter0\ltrsect
\deftab708\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1
\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1701\dgvorigin1134\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot10493932\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0
{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7365210 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
\f31506\fs22\lang1049\langfe1033\cgrid\langnp1049\langfenp1033 {\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 \'cb\'c8\'d6\'c5\'cd\'c7\'c8\'ce\'cd\'cd\'ce\'c5 \'d1\'ce\'c3\'cb\'c0\'d8\'c5\'cd\'c8\'c5}{\rtlch\fcs1 \af1 \ltrch\fcs0
\b\f1\insrsid9062840\charrsid7484679
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9062840 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'e4\'eb\'ff }{\rtlch\fcs1 \af1 \ltrch\fcs0
\b\f1\insrsid7365210\charrsid7484679 TTW Bot}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\lang1033\langfe1033\langnp1033\insrsid9062840\charrsid7484679
\par }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid7365210 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\lang1033\langfe1033\langnp1033\insrsid9062840\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 1. \'cf\'f0\'e0\'e2\'e0 \'ed\'e0 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par \'cf\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'fe \'ef\'f0\'e5\'e4\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'e5\'f2\'f1\'ff \'ed\'e5\'e8\'f1\'ea\'eb\'fe\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee\'e5, \'ed\'e5\'ef\'e5\'f0\'e5\'e4\'e0\'e2\'e0\'e5\'ec\'ee\'e5 \'ef\'f0\'e0\'e2\'ee
\'ed\'e0 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5 \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'ed\'ee\'e3\'ee \'ee\'e1\'e5\'f1\'ef\'e5\'f7\'e5\'ed\'e8\'ff "TTW Bot" \'e8\'f1\'ea\'eb\'fe\'f7\'e8\'f2\'e5\'eb\'fc\'ed\'ee \'e2 \'f1\'ee\'ee\'f2\'e2\'e5\'f2
\'f1\'f2\'e2\'e8\'e8 \'f1:
\par - \'cf\'f0\'e0\'e2\'e8\'eb\'e0\'ec\'e8 \'ef\'eb\'e0\'f2\'f4\'ee\'f0\'ec\'fb Twitch
\par - \'c4\'e5\'e9\'f1\'f2\'e2\'f3\'fe\'f9\'e8\'ec \'e7\'e0\'ea\'ee\'ed\'ee\'e4\'e0\'f2\'e5\'eb\'fc\'f1\'f2\'e2\'ee\'ec \'d0\'d4
\par
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 2. \'ce\'f2\'ea\'e0\'e7 \'ee\'f2 \'e3\'e0\'f0\'e0\'ed\'f2\'e8\'e9}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par \'cf\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'ed\'ee\'e5 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ee\'e1\'e5\'f1\'ef\'e5\'f7\'e5\'ed\'e8\'e5 \'ef\'f0\'e5\'e4\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'e5\'f2\'f1\'ff "\'ca\'c0\'ca \'c5\'d1\'d2\'dc}{
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 ". \'c0\'e2\'f2\'ee\'f0 \'ed\'e5 \'ef\'f0\'e5\'e4\'ee\'f1\'f2\'e0\'e2\'eb\'ff\'e5\'f2 \'e3\'e0\'f0\'e0\'ed\'f2\'e8\'e9:
\par \'d0\'e0\'e1\'ee\'f2\'ee\'f1\'ef\'ee\'f1\'ee\'e1\'ed\'ee\'f1\'f2\'e8 \'e8 \'f1\'ee\'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e8\'ff \'ee\'e6\'e8\'e4\'e0\'ed\'e8\'e9
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'ce\'f2\'f1\'f3\'f2\'f1\'f2\'e2\'e8\'ff \'ee\'f8\'e8\'e1\'ee\'ea \'e8 \'e2\'f0\'e5\'e4\'ee\'ed\'ee\'f1\'ed\'ee\'e3\'ee
\'ea\'ee\'e4\'e0
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d1\'ee\'e2\'ec\'e5\'f1\'f2\'e8\'ec\'ee\'f1\'f2\'e8 \'f1 \'eb\'fe\'e1\'fb\'ec \'ee\'e1\'ee\'f0\'f3\'e4\'ee\'e2\'e0\'ed
\'e8\'e5\'ec/\'cf\'ce
\par
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 3. \'ce\'e3\'f0\'e0\'ed\'e8\'f7\'e5\'ed\'e8\'e5 \'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'f1\'f2\'e8}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid9062840\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c0\'e2\'f2}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ee\'f0 \'ed\'e5 \'ed\'e5\'f1\'e5\'f2 \'ee\'f2\'e2\'e5\'f2\'f1\'f2\'e2\'e5\'ed\'ed\'ee\'f1\'f2\'e8 \'e7\'e0:}{
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'cf\'f0\'ff\'ec\'ee\'e9/\'ea\'ee\'f1\'e2\'e5\'ed\'ed\'fb\'e9 \'f3\'f9\'e5\'f0\'e1
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'cf\'ee\'f2\'e5\'f0\'fe \'e4\'e0\'ed\'ed\'fb\'f5 \'e8\'eb\'e8 \'e4\'ee\'f5\'ee\'e4\'e0
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *\'cd\'e0\'f0\'f3\'f8\'e5\'ed\'e8\'ff \'ef\'f0\'e0\'e2\'e8\'eb Twitch}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 4. \'ce\'e1\'ff\'e7\'e0\'ed\'ed\'ee\'f1\'f2\'e8 \'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'f2\'e5\'eb\'ff}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid9062840\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c7\'e0\'ef\'f0\'e5\'f9\'e0\'e5\'f2\'f1\'ff:
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d0\'e5\'e2\'e5\'f0\'f1\'e8\'e2\'ed\'e0\'ff \'e8\'ed\'e6\'e5\'ed\'e5\'f0\'e8\'ff
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'ca\'ee\'ec\'ec\'e5\'f0\'f7\'e5\'f1\'ea\'ee\'e5 \'e8\'f1\'ef\'ee\'eb\'fc\'e7\'ee\'e2\'e0\'ed\'e8\'e5
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d0\'e0\'f1\'ef\'f0\'ee\'f1\'f2\'f0\'e0\'ed\'e5\'ed\'e8\'e5 \'ec\'ee\'e4\'e8\'f4\'e8\'f6\'e8\'f0\'ee\'e2\'e0\'ed\'ed\'fb
\'f5 \'e2\'e5\'f0\'f1\'e8\'e9
\par
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 5. \'c8\'e7\'ec\'e5\'ed\'e5\'ed\'e8\'e5 \'f3\'f1\'eb\'ee\'e2\'e8\'e9
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c0\'e2\'f2\'ee\'f0 \'e2\'ef\'f0\'e0\'e2\'e5 \'ec\'e5\'ed\'ff\'f2\'fc \'f1\'ee\'e3\'eb\'e0\'f8\'e5\'ed\'e8\'e5 \'e1\'e5\'e7 \'ef\'f0\'e5\'e4\'f3\'ef\'f0\'e5\'e6\'e4\'e5\'ed\'e8\'ff. \'c0}{
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ea\'f2\'f3\'e0\'eb\'fc\'ed\'e0\'ff \'e2\'e5\'f0\'f1\'e8\'ff \'e4\'ee\'f1\'f2\'f3\'ef\'ed\'e0:}{\rtlch\fcs1 \af1 \ltrch\fcs0
\f1\lang1033\langfe1033\langnp1033\insrsid7365210\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid7365210\charrsid7484679 6. \'cf\'f0\'e5\'ea\'f0\'e0\'f9\'e5\'ed\'e8\'e5 \'eb\'e8\'f6\'e5\'ed\'e7\'e8\'e8}{\rtlch\fcs1 \af1 \ltrch\fcs0 \b\f1\insrsid9062840\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'c4\'ee\'f1\'f2\'f3\'ef \'ea \'cf\'ce}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'ec\'ee\'e6\'e5\'f2 \'e1\'fb\'f2\'fc \'ef\'f0\'e5\'ea\'f0\'e0\'f9\'e5\'ed \'ef\'f0
\'e8:}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\lang1033\langfe1033\langnp1033\insrsid7365210\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'cd\'e0\'f0\'f3\'f8\'e5\'ed\'e8\'e8 \'f3\'f1\'eb\'ee\'e2\'e8\'e9 \'f1\'ee\'e3\'eb\'e0\'f8\'e5\'ed\'e8\'ff
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 *\'d2\'e5\'f5\'ed\'e8\'f7\'e5\'f1\'ea\'e8\'f5 \'f0\'e8\'f1\'ea\'e0\'f5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 \'c2\'cd\'c8\'cc\'c0\'cd\'c8\'c5: }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 \'d3\'f1\'f2\'e0\'ed\'e0\'e2\'eb\'e8\'e2\'e0\'ff \'ef\'f0\'ee\'e3\'f0\'e0\'ec\'ec\'f3,
\'e2\'fb \'ef\'ee\'e4\'f2\'e2\'e5\'f0\'e6\'e4\'e0\'e5\'f2\'e5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid9062840\charrsid7484679 ,}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par \'f7\'f2\'ee \'ef\'f0\'ee\'f7\'e8\'f2\'e0\'eb\'e8 \'e8 \'ef\'ee\'eb\'ed\'ee\'f1\'f2\'fc\'fe \'f1\'ee\'e3\'eb\'e0\'f1\'ed\'fb \'f1 \'f3\'f1\'eb\'ee\'e2\'e8\'ff\'ec\'e8!
\par
\par \'c2\'e5\'f0\'f1\'e8\'ff 1.0 \'ee\'f2 }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid12407344\charrsid7484679 23}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 .0}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid12407344\charrsid7484679 4}{
\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679 .202}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid12407344\charrsid7484679 5}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid7365210\charrsid7484679
\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid13573742\charrsid7484679
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100a55e7d2dc7060000d71b0000160000007468656d652f7468656d652f
7468656d65312e786d6cec59cf6e1b4518bf23f10ea3bdb7b113278da33a55ecd80db469a3d82dea71bc1eef4e33bbb39a1927f5ad4a8f482044411ca8045c38
2020528bb8b4efe03e43a0088ad457e09b99ddf54ebca1491b4105cd21de9dfd7dffffcc37bb172fdd8918da2542521e37bceaf98a8748ecf3018d838677a3d7
39b7ec21a9703cc08cc7a4e18d89f42eadbefbce45bca242121104f4b15cc10d2f542a59999b933e2c63799e27248667432e22ace05604730381f7806fc4e6e6
2b95a5b908d3d843318e80ede49bc94f93c79303747d38a43ef15633fe6d06426225f582cf4457732719d1d74ff72707932793479383a777e1fa09fc7e6c6807
3b554d21c7b2c504dac5ace181e801dfeb913bca430c4b050f1a5ec5fc7973ab17e7f04a4ac4d431b405ba8ef94be95282c1cebc9129827e2eb4daa9d52face7
fc0d80a9595cbbdd6eb5ab393f03c0be0f965b5d8a3c6b9de56a33e35900d9cb59deadca62a5e6e20bfc176674ae379bcdc57aaa8b656a40f6b236835fae2cd5
d6e61dbc0159fce20cbed65c6bb5961cbc0159fcd20cbe73a1be5473f10614321aefcca075403b9d947b0e1972b6510a5f06f87225854f51900d79b66911431e
ab93e65e846f73d101024dc8b0a23152e3840cb10f89dec2515f50ac05e215820b4fec922f6796b46c247d4113d5f0de4f3014cd94df8bc7dfbf78fc101dee3f
3adcfff9f0debdc3fd1f2d23876a03c74191eaf9b79ffcf9e02efae3e157cfef7f568e9745fcaf3f7cf8cb934fcb81504e53759e7d7ef0dba383675f7cf4fb77
f74be06b02f78bf01e8d8844d7c81edae6111866bce26a4efae27414bd10d322c55a1c481c632da5847f5b850efada18b3343a8e1e4de27af0a680765206bc3c
baed28dc0dc548d112c957c2c8016e72ce9a5c947ae18a965570736f1407e5c2c5a888dbc678b74c760bc74e7cdba304fa6a96968ee1ad90386a6e311c2b1c90
9828a49ff11d424aacbb45a9e3d74dea0b2ef950a15b1435312d75498ff69d6c9a126dd008e2322eb319e2edf866f3266a725666f53ad975915015989528df23
cc71e3653c52382a63d9c3112b3afc2a56619992ddb1f08bb8b65410e980308eda03226519cd7501f616827e0543072b0dfb261b472e5228ba53c6f32ae6bc88
5ce73bad10474919b64be3b0887d4fee408a62b4c555197c93bb15a2ef210e383e36dc372971c2fdf26e7083068e4ad304d14f46a22496970977f2b73b66434c
4cab8126eff4ea88c67fd7b81985ce6d259c5de38656f9eccb07257abfa92d7b0d76afb29ad938d2a88fc31d6dcf2d2e06f4cdefceeb78146f112888d92dea6d
737edb9cbdff7c733eae9ecfbe254fbb3034683d8bd8c1db8ce1d189a7f02165acabc68c5c95661097b0170d3ab0a8f998432ac94f69490897bab241a0830b04
36344870f501556137c4090cf1554f330964ca3a9028e1120e9366b994b7c6c34140d9a3e8a23ea4d84e22b1dae403bbbca097b3b348cec66815980370266841
3338a9b0850b2953b0ed558455b55227965635aa9926e948cb4dd62e36877870796e1a2ce6de842107c168045e5e82d7045a341c7e302303ed771ba32c2c260a
67192219e2014963a4ed9e8d51d50429cb951943b41d3619f4c1f2255e2b48ab6bb6af21ed24412a8aab1d232e8bdeeb4429cbe0699480dbd1726471b138598c
f61a5e7d717ed1433e4e1ade10cecd7019251075a9e74acc02783fe52b61d3fea5c56caa7c1acd7a66985b0455783562fd3e63b0d3071221d53a96a14d0df328
4d01166b4956fff94570eb591950d28d4ea6c5c23224c3bfa605f8d10d2d190e89af8ac12eac68dfd9dbb495f29122a21b0ef6509f8dc43686f0eb54057b0654
c2eb0fd311f40dbcbbd3de368fdce69c165df18d99c1d975cc9210a7ed56976856c9166e1a52ae83b92ba807b695ea6e8c3bbd29a6e4cfc894621affcf4cd1fb
09bc8d5818e808f8f0365960a42ba5e171a1420e5d2809a9df11304898de01d902ef7fe1312415bcd336bf82ecea5f5b739687296b3854aa6d1a2041613f52a1
20640bda92c9be9730aba67b9765c9524626a30aeacac4aadd27bb84f5740f5cd27bbb87424875d34dd236607047f3cfbd4f2ba81fe821a7586f4e27cbf75e5b
03fff4e4638b198c72fbb0196832ffe72ae6e3c17457b5f4863cdb7b8b86e807d331ab965505082b6c05f5b4ec5f5185536eb5b663cd583cbf982907519cb518
16f3812881774a48ff83fd8f0a9fd9af237a43edf16de8ad083e6e6866903690d5e7ece0817483b48b7d189ceca24d26cdcaba361d9db4d7b2cdfa8c27dd5cee
11676bcd4e12ef533a3b1fce5c714e2d9ea5b3530f3bbeb66bc7ba1a227bb4446169981d6c4c60cc97b5e2972fdebf0d815e876f0823a6a44926f88e2530ccd0
5d530750fc56a2215dfd0b0000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c73
2f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761
be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f9
80ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca
5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e7465
6e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c73
2f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f
7468656d654d616e616765722e786d6c504b01022d0014000600080000002100a55e7d2dc7060000d71b00001600000000000000000000000000d60200007468
656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d10900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cc0a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;
\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;
\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;
\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000a04f
04c046b4db01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
+8 -8
View File
@@ -5,7 +5,7 @@ interface
uses
System.SysUtils, System.Classes, Web.HTTPApp, FMX.Types,
FMX.Controls3D, FMX.Objects3D, FMX.Controls, FMX.Forms, FMX.StdCtrls,
FMX.Edit, FMX.ListBox, uPlayerThread, bass_simple;
FMX.Edit, FMX.ListBox, uPlayerThread;
type
TOBS_Doc_Player = class(TWebModule)
@@ -35,7 +35,7 @@ var
ProgressBar1: TProgressBar;
TrackBar1: TTrackBar;
ListBox1: TListBox;
b: TBassSimple;
player: TPlayerThread;
mVolume: Integer;
isplay: string;
@@ -67,7 +67,7 @@ end;
procedure TOBS_Doc_Player.Button1Click(Sender: TObject);
begin
b.Pause;
//b.Pause;
if isplay = '0' then
isplay := '1'
else
@@ -179,7 +179,7 @@ end;
procedure TOBS_Doc_Player.TrackBar1Change(Sender: TObject);
begin
mVolume := Round(TrackBar1.Value);
b.Volume := mVolume;
//b.Volume := mVolume;
end;
procedure TOBS_Doc_Player.WebModule1DefaultHandlerAction(Sender: TObject;
@@ -217,7 +217,7 @@ begin
// Åñëè óäàëîñü ïðåîáðàçîâàòü, îáíîâëÿåì ïåðåìåííóþ mVolume
mVolume := VolumeValue;
// Îáíîâëÿåì çâóê íà ñåðâåðå (åñëè íóæíî, íàïðèìåð, ÷åðåç áèáëèîòåêó bass)
b.Volume := mVolume;
//b.Volume := mVolume;
// Âîçâðàùàåì îáíîâëåííîå ñîñòîÿíèå íà ñòðàíèöó
Response.Content := gethtml;
end
@@ -253,8 +253,8 @@ end;
procedure TOBS_Doc_Player.WebModuleCreate(Sender: TObject);
begin
mySoundPath := GetPathToTestExe + 'TTW_Bot\ytSongs';
b := TBassSimple.Create(0);
player := TPlayerThread.Create(b, mySoundPath);
//b := TBassSimple.Create(0);
player := TPlayerThread.Create({b,} mySoundPath);
player.OnAddAd := add;
player.OnSkip := del;
mVolume := 0;
@@ -266,7 +266,7 @@ end;
procedure TOBS_Doc_Player.WebModuleDestroy(Sender: TObject);
begin
player.Free;
b.Free;
// b.Free;
ListBox1.Free;
end;
+12 -12
View File
@@ -3,7 +3,7 @@ unit uPlayerThread;
interface
uses
System.Classes, System.SysUtils, System.SyncObjs, System.Generics.Collections, bass_simple,
System.Classes, System.SysUtils, System.SyncObjs, System.Generics.Collections, {bass_simple,}
System.IOUtils, System.Types;
type
@@ -12,7 +12,7 @@ type
TPlayerThread = class(TThread)
private
b: tbasssimple;
{b: tbasssimple;}
FFilesQueue: TList<string>;
FQueueCS: TCriticalSection;
FCurrentFile: string;
@@ -29,7 +29,7 @@ type
protected
procedure Execute; override;
public
constructor Create(var ab: tbasssimple; const aFolder: string);
constructor Create({var ab: tbasssimple;} const aFolder: string);
destructor Destroy; override;
procedure Skip;
property OnError: TOnError read FOnError write FOnError;
@@ -39,15 +39,15 @@ type
implementation
constructor TPlayerThread.Create(var ab: tbasssimple; const aFolder: string);
constructor TPlayerThread.Create({var ab: tbasssimple;} const aFolder: string);
begin
inherited Create(True);
b := ab;
{b := ab;}
FMusicFolder := aFolder;
FIsPlaying := False;
b.OnPlay := OnPlayHandler;
{b.OnPlay := OnPlayHandler;
b.OnStop := OnStopHandler;
b.OnEndPlay := OnEndPlayHandler;
b.OnEndPlay := OnEndPlayHandler;}
FFilesQueue := TList<string>.Create;
FQueueCS := TCriticalSection.Create;
end;
@@ -103,7 +103,7 @@ begin
TThread.Synchronize(nil,
procedure
begin
b.Play(FCurrentFile);
{b.Play(FCurrentFile);}
end);
FIsPlaying := True;
@@ -148,8 +148,8 @@ end;
procedure TPlayerThread.OnEndPlayHandler(Sender: TObject);
begin
try
b.Stop;
b.FreeStream;
{ b.Stop;
b.FreeStream;}
if FileExists(FCurrentFile) then
begin
DeleteFile(FCurrentFile);
@@ -167,8 +167,8 @@ procedure TPlayerThread.Skip;
begin
if FIsPlaying then
begin
b.Stop;
b.FreeStream;
{ b.Stop;
b.FreeStream;}
if FileExists(FCurrentFile) then
begin
DeleteFile(FCurrentFile);
+1
View File
@@ -116,6 +116,7 @@ type
fontsPath: string;
imgsPath: string;
soundsPath: string;
VoicesPath: string;
stlPath: string;
ytSongsPath: string;
SilentPlay: string;
+12 -11
View File
@@ -2,7 +2,7 @@ unit uSoundManager;
interface
uses System.classes, winapi.ShellAPI, bass_simple, winapi.windows, System.SysUtils;
uses System.classes, winapi.ShellAPI, {bass_simple,} winapi.windows, System.SysUtils;
type
TSongMachine = class(TObject)
@@ -21,20 +21,21 @@ implementation
uses uGeneral;
var
mp: TBassSimple;
{ var
mp: TBassSimple;}
{ SongMachine }
constructor TSongMachine.Create;
begin
mp := TBassSimple.Create(0);
inherited;
{ mp := TBassSimple.Create(0);}
end;
destructor TSongMachine.Destroy;
begin
mp.FreeStream;
mp.Free;
{ mp.FreeStream;
mp.Free;}
end;
function TimeToSeconds(const timeStr: string): Integer;
@@ -55,7 +56,7 @@ end;
procedure TSongMachine.PlaySilent(AFileName: string; aVolume: string);
var
sec: string;
mm: TBassSimple;
{ mm: TBassSimple;}
begin
try
if not FileExists(AFileName) then
@@ -63,14 +64,14 @@ begin
TTW_Bot.toLog( 'TSongMachine', 'PlayPublic', 'Íåò ôàéëà ' + AFileName,2);
exit;
end;
mm := TBassSimple.Create(0);
{ mm := TBassSimple.Create(0);
try
mm.OpenFile(AFileName);
sec := inttostr(TimeToSeconds(mm.TimeLength) + 1);
finally
mm.FreeStream;
mm.Free;
end;
end;}
ShellExecute(0, 'open', PChar(myConst.SilentPlay),
PChar(Format('%s %s "%s"', [sec, aVolume, AFileName])), nil, SW_HIDE);
except
@@ -87,8 +88,8 @@ begin
TTW_Bot.toLog( 'TSongMachine', 'PlayPublic', 'Íåò ôàéëà ' + AFileName,2);
exit;
end;
mp.Volume := strtoint(aVolume);
mp.Play(AFileName)
{ mp.Volume := strtoint(aVolume);
mp.Play(AFileName)}
except
on e: Exception do
TTW_Bot.toLog( 'TSongMachine', 'PlaySilent', e.message,2)
+2 -1
View File
@@ -17,7 +17,7 @@ type
type
TTTW_Chat = class(TObject)
msgStyle: TStyleChat;
fFontsList: tstringlist;
IdHTTPServer1: TIdHTTPServer;
procedure IdHTTPServer1CommandGet(AContext: TIdContext;
@@ -31,6 +31,7 @@ type
function GenerateJSON: string;
procedure CleanupOldMessages;
public
msgStyle: TStyleChat;
constructor Create(FontList: tstrings; aPort:integer; aColor:string);
destructor Destroy;
procedure addMessage(newMsg: TStyleChat);