G

filetolink

public
Guest Mar 23, 2025 Never 39
Clone
PHP index.php 126 lines (92 loc) | 3.44 KB
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);