filetolink
public
Mar 23, 2025
Never
39
1 <?php declare(strict_types=1); 2 3 4 use danog\MadelineProto\API; 5 use danog\MadelineProto\Broadcast\Progress; 6 use danog\MadelineProto\Broadcast\Status; 7 use danog\MadelineProto\EventHandler\Attributes\Handler; 8 use danog\MadelineProto\EventHandler\Filter\FilterCommand; 9 use danog\MadelineProto\EventHandler\Message; 10 use danog\MadelineProto\EventHandler\Message\PrivateMessage; 11 use danog\MadelineProto\EventHandler\SimpleFilter\FromAdmin; 12 use danog\MadelineProto\EventHandler\SimpleFilter\Incoming; 13 use danog\MadelineProto\Logger; 14 use danog\MadelineProto\ParseMode; 15 use danog\MadelineProto\Settings; 16 use danog\MadelineProto\Settings\Database\Mysql; 17 use danog\MadelineProto\SimpleEventHandler; 18 19 use function Amp\Socket\SocketAddress\fromString; 20 21 $TOKEN = "1234567890:ABCDEFGHJI-LMNOPQRSTUVWXYZ"; #⚠️Bot token 22 23 if (class_exists(API::class)) { 24 25 } elseif (file_exists('vendor/autoload.php')) { 26 require_once 'vendor/autoload.php'; 27 } else { 28 29 if (!file_exists('madeline.php')) { 30 copy('https://phar.madelineproto.xyz/madeline.php', 'madeline.php'); 31 } 32 require_once 'madeline.php'; 33 } 34 class MyEventHandler extends SimpleEventHandler 35 { 36 public const ADMIN = "AdminUsername"; // !!! ⚠️ Change this to your username !!! 37 38 39 40 public function getReportPeers() 41 { 42 return [self::ADMIN]; 43 } 44 /** 45 * Initialization logic. 46 */ 47 public function onStart(): void 48 { 49 $this->logger("The bot was started!"); 50 51 52 } 53 54 #[Handler] 55 public function handleMessage(Incoming&PrivateMessage $message): void 56 { 57 58 if ($message->media) { 59 $message->addReaction('👌'); 60 $message->reply("**✅️ Permanent Link Generated :\n\n**".$message->media->getDownloadLink()); 61 } 62 } 63 64 65 #[FilterCommand('sendall')] 66 public function broadcastCommand(Message & FromAdmin $message): void 67 { 68 // We can broadcast messages to all users with /broadcast 69 if (!$message->replyToMsgId) { 70 $message->reply("You should reply to the message you want to broadcast."); 71 return; 72 } 73 $this->broadcastForwardMessages( 74 from_peer: $message->senderId, 75 message_ids: [$message->replyToMsgId], 76 drop_author: true, 77 pin: true, 78 ); 79 } 80 81 private int $lastLog = 0; 82 83 #[Handler] 84 public function handleBroadcastProgress(Progress $progress): void 85 { 86 if (time() - $this->lastLog > 5 || $progress->status === Status::FINISHED) { 87 $this->lastLog = time(); 88 $this->sendMessageToAdmins((string) $progress); 89 } 90 } 91 92 93 94 95 96 97 #[FilterCommand('start')] 98 public function responder(Message $message): void 99 { 100 $x = $this->getInfo($message->senderId); 101 $name = $x['User']['first_name']; 102 $message->addReaction('👌'); 103 $message->reply("👋Hi {$name}\n Send your media here"); 104 105 } 106 107 #[FilterCommand('reboot')] 108 public function reboot(Message & FromAdmin $message): void 109 { 110 $message->reply("ok"); 111 $this->restart(); 112 113 } 114 115 116 } 117 118 $settings = new Settings; 119 $settings->getLogger()->setLevel(Logger::LEVEL_ULTRA_VERBOSE); 120 121 #⚠️Mysql_Database_credential 122 123 $settings->setDb((new Mysql)->setDatabase('dbName')->setUsername('dbUser')->setPassword('dbPass')); 124 125 126 MyEventHandler::startAndLoopBot('bot.madeline', $TOKEN, $settings);