Skip to content

Commit 87ac34f

Browse files
authored
Added MySQL session support and restart plugin
1 parent e033685 commit 87ac34f

1 file changed

Lines changed: 51 additions & 21 deletions

File tree

src/bot.php

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -493,27 +493,27 @@ public function send_broadcast(callbackQuery $query): void {
493493
);
494494

495495
$sentMessage2 = $this->extractMessageId($sentMessage);
496-
Amp\File\write(__DIR__."/data/messagetoeditbroadcast1.txt", "$sentMessage2");
497-
Amp\File\write(__DIR__."/data/messagetoeditbroadcast2.txt", "$senderId");
496+
\Amp\File\write(__DIR__."/data/messagetoeditbroadcast1.txt", "$sentMessage2");
497+
\Amp\File\write(__DIR__."/data/messagetoeditbroadcast2.txt", "$senderId");
498498

499499
if (file_exists(__DIR__."/data/$senderId/txt.txt")) {
500-
$filexmsgidtxt = Amp\File\read(__DIR__."/data/$senderId/txt.txt");
500+
$filexmsgidtxt = \Amp\File\read(__DIR__."/data/$senderId/txt.txt");
501501
}else{
502502
$filexmsgidtxt = null;
503503
}
504504
if (file_exists(__DIR__."/data/$senderId/ent.txt")) {
505-
$filexmsgident = json_decode(Amp\File\read(__DIR__."/data/$senderId/ent.txt"),true);
505+
$filexmsgident = json_decode(\Amp\File\read(__DIR__."/data/$senderId/ent.txt"),true);
506506
}else{
507507
$filexmsgident = null;
508508
}
509509
if (file_exists(__DIR__."/data/$senderId/media.txt")) {
510-
$filexmsgidmedia = Amp\File\read(__DIR__."/data/$senderId/media.txt");
510+
$filexmsgidmedia = \Amp\File\read(__DIR__."/data/$senderId/media.txt");
511511
}else{
512512
$filexmsgidmedia = null;
513513
}
514514

515515
if (file_exists(__DIR__."/data/broadcastsend.txt")) {
516-
$check2 = Amp\File\read(__DIR__."/data/broadcastsend.txt");
516+
$check2 = \Amp\File\read(__DIR__."/data/broadcastsend.txt");
517517
if($check2 == "USERS"){
518518

519519

@@ -811,9 +811,9 @@ public function handleBroadcastProgress(Progress $progress): void {
811811
if (time() - $this->lastLog > 5 || $progress->status === Status::GATHERING_PEERS) {
812812
$this->lastLog = time();
813813
if (file_exists(__DIR__."/data/messagetoeditbroadcast2.txt")) {
814-
$filexmsgid1 = Amp\File\read(__DIR__."/data/messagetoeditbroadcast2.txt");
814+
$filexmsgid1 = \Amp\File\read(__DIR__."/data/messagetoeditbroadcast2.txt");
815815
if (file_exists(__DIR__."/data/messagetoeditbroadcast1.txt")) {
816-
$filexmsgid2 = Amp\File\read(__DIR__."/data/messagetoeditbroadcast1.txt");
816+
$filexmsgid2 = \Amp\File\read(__DIR__."/data/messagetoeditbroadcast1.txt");
817817
try {
818818
$this->messages->editMessage(peer: $filexmsgid1, id: $filexmsgid2, message: "$progressStr", reply_markup: null);
819819
} catch (Throwable $e) {}
@@ -824,7 +824,7 @@ public function handleBroadcastProgress(Progress $progress): void {
824824
if (time() - $this->lastLog > 5 || $progress->status === Status::FINISHED) {
825825
$this->lastLog = time();
826826
if (file_exists(__DIR__."/data/broadcastsend.txt")) {
827-
$broadcast_send = Amp\File\read(__DIR__."/data/broadcastsend.txt");
827+
$broadcast_send = \Amp\File\read(__DIR__."/data/broadcastsend.txt");
828828
}
829829
if (!file_exists(__DIR__."/data/broadcastsend.txt")) {
830830
$broadcast_send = "ALL";
@@ -835,10 +835,10 @@ public function handleBroadcastProgress(Progress $progress): void {
835835
$sucessCount2 = $progress->failCount;
836836

837837
if (file_exists(__DIR__."/data/messagetoeditbroadcast2.txt")) {
838-
$filexmsgid1 = Amp\File\read(__DIR__."/data/messagetoeditbroadcast2.txt");
838+
$filexmsgid1 = \Amp\File\read(__DIR__."/data/messagetoeditbroadcast2.txt");
839839

840840
if (file_exists(__DIR__."/data/messagetoeditbroadcast1.txt")) {
841-
$filexmsgid2 = Amp\File\read(__DIR__."/data/messagetoeditbroadcast1.txt");
841+
$filexmsgid2 = \Amp\File\read(__DIR__."/data/messagetoeditbroadcast1.txt");
842842

843843
$bot_API_markup = ['inline_keyboard' => [[['text'=>"🔙",'callback_data'=>"admin_back"]]]];
844844

@@ -864,31 +864,61 @@ public function handleBroadcastProgress(Progress $progress): void {
864864
} catch (Throwable $e) {}
865865
}
866866

867-
867+
public static function getPlugins(): array {
868+
return [\danog\MadelineProto\EventHandler\Plugin\RestartPlugin::class];
869+
}
870+
public static function getPluginPaths(): string|array|null {
871+
return null;
872+
}
868873
}
869874

870875
function RunBot(): void {
871876
try {
872-
873-
$env = parse_ini_file(__DIR__ . '/.env');
874-
877+
$env = parse_ini_file(__DIR__."/".'.env');
875878
if (!isset($env['API_ID'], $env['API_HASH'], $env['BOT_TOKEN'])) {
876879
die("Missing environment variables in .env\n");
877880
}
878881

879-
$API_ID = $env['API_ID'];
880-
$API_HASH = $env['API_HASH'];
882+
$API_ID = $env['API_ID'];
883+
$API_HASH = $env['API_HASH'];
881884
$BOT_TOKEN = $env['BOT_TOKEN'];
885+
$DB_FLAG = $env['DB_FLAG'] ?? 'no';
886+
$BOT_NAME = $env['BOT_NAME'] ?? 'GetAnyMessage';
887+
$dbHost = $env['DB_HOST'] ?? 'localhost';
888+
$dbPort = $env['DB_PORT'] ?? 3306;
889+
$dbUser = $env['DB_USER'] ?? 'mpuser';
890+
$dbPass = $env['DB_PASS'] ?? 'mp_pass';
891+
$dbName = $env['DB_NAME'] ?? 'madelineproto';
882892

883893
$settings = new \danog\MadelineProto\Settings;
884-
885894
$settings->setAppInfo((new \danog\MadelineProto\Settings\AppInfo)->setApiId((int)$API_ID)->setApiHash($API_HASH));
886895

887-
GetAnyMessage::startAndLoopBot(__DIR__.'/bot.madeline', $BOT_TOKEN, $settings);
896+
$connection = (new \danog\MadelineProto\Settings\Connection())->setTimeout(600.0)->setRetry(true)->setMaxMediaSocketCount(1000);
897+
$settings->setConnection($connection);
898+
899+
$files = (new \danog\MadelineProto\Settings\Files())->setUploadParallelChunks(7)->setDownloadParallelChunks(12);
900+
$settings->setFiles($files);
901+
902+
$logger = (new \danog\MadelineProto\Settings\Logger)->setLevel(\danog\MadelineProto\Logger::ERROR);
903+
$settings->setLogger($logger);
904+
905+
if($DB_FLAG != 'no'){
906+
$db = (new \danog\MadelineProto\Settings\Database\Mysql())
907+
->setUri("tcp://$dbHost:$dbPort")
908+
->setUsername($dbUser)
909+
->setPassword($dbPass)
910+
->setDatabase($dbName)
911+
->setEphemeralFilesystemPrefix("Session_{$BOT_NAME}");
912+
$settings->setDb($db);
913+
}
914+
915+
GetAnyMessage::startAndLoopBot(__DIR__."/bot_{$BOT_NAME}.madeline", $BOT_TOKEN, $settings);
888916

889917
} catch (\Throwable $e) {
890-
// if ($e instanceof \Amp\TimeoutException) {
891-
echo "\n" . $e->getMessage() . "\n";
918+
919+
if (strpos($e->getMessage(), 'bad_msg_notification') !== false) exit(1);
920+
if ($e instanceof \Amp\TimeoutException || $e instanceof \Amp\CancelledException) exit(1);
921+
892922
}
893923
}
894924
RunBot();

0 commit comments

Comments
 (0)