mirror of
https://github.com/danog/TelegramApiServer.git
synced 2024-11-30 04:19:13 +01:00
Feat: unsubscribeFromUpdates
This commit is contained in:
parent
6fadafc8de
commit
55506d6ec1
@ -8,7 +8,9 @@ use Amp\Http\Server\FormParser\StreamedField;
|
|||||||
use Amp\Http\Server\Request;
|
use Amp\Http\Server\Request;
|
||||||
use Amp\Http\Server\Response;
|
use Amp\Http\Server\Response;
|
||||||
use danog\MadelineProto;
|
use danog\MadelineProto;
|
||||||
|
use danog\MadelineProto\PeerNotInDbException;
|
||||||
use danog\MadelineProto\StrTools;
|
use danog\MadelineProto\StrTools;
|
||||||
|
use http\Exception\InvalidArgumentException;
|
||||||
use TelegramApiServer\Client;
|
use TelegramApiServer\Client;
|
||||||
use TelegramApiServer\EventObservers\EventHandler;
|
use TelegramApiServer\EventObservers\EventHandler;
|
||||||
use TelegramApiServer\Exceptions\MediaTooBig;
|
use TelegramApiServer\Exceptions\MediaTooBig;
|
||||||
@ -529,4 +531,39 @@ class ApiExtensions
|
|||||||
return $this->madelineProto->getUpdates($params);
|
return $this->madelineProto->getUpdates($params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function unsubscribeFromUpdates(?string $channel = null): array {
|
||||||
|
$inputChannelId = null;
|
||||||
|
if ($channel) {
|
||||||
|
$id = (string) $this->madelineProto->getId($channel);
|
||||||
|
|
||||||
|
$inputChannelId = (int)str_replace(['-100', '-'], '', $id);
|
||||||
|
if (!$inputChannelId) {
|
||||||
|
throw new InvalidArgumentException('Invalid id');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$counter = 0;
|
||||||
|
foreach (Client::getWrapper($this->madelineProto)->getAPI()->feeders as $channelId => $_) {
|
||||||
|
if ($channelId === 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($inputChannelId && $inputChannelId !== $channelId) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Client::getWrapper($this->madelineProto)->getAPI()->feeders[$channelId]->stop();
|
||||||
|
Client::getWrapper($this->madelineProto)->getAPI()->updaters[$channelId]->stop();
|
||||||
|
unset(
|
||||||
|
Client::getWrapper($this->madelineProto)->getAPI()->feeders[$channelId],
|
||||||
|
Client::getWrapper($this->madelineProto)->getAPI()->updaters[$channelId]
|
||||||
|
);
|
||||||
|
Client::getWrapper($this->madelineProto)->getAPI()->getChannelStates()->remove($channelId);
|
||||||
|
$counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return [
|
||||||
|
'disabled_update_loops' => $counter,
|
||||||
|
'current_update_loops' => count(Client::getWrapper($this->madelineProto)->getAPI()->feeders),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user