BotApi::resetCurlOptions()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 6
ccs 0
cts 0
cp 0
rs 10
cc 2
nc 2
nop 0
crap 6
1
<?php
2
3
namespace TelegramBot\Api;
4
5
use TelegramBot\Api\Http\CurlHttpClient;
6
use TelegramBot\Api\Http\HttpClientInterface;
7
use TelegramBot\Api\Types\ArrayOfBotCommand;
8
use TelegramBot\Api\Types\ArrayOfChatMemberEntity;
9
use TelegramBot\Api\Types\ArrayOfMessageEntity;
10
use TelegramBot\Api\Types\ArrayOfMessages;
11
use TelegramBot\Api\Types\ArrayOfSticker;
12
use TelegramBot\Api\Types\ArrayOfUpdates;
13
use TelegramBot\Api\Types\BotCommand;
14
use TelegramBot\Api\Types\Chat;
15
use TelegramBot\Api\Types\ChatInviteLink;
16
use TelegramBot\Api\Types\ChatMember;
17
use TelegramBot\Api\Types\File;
18
use TelegramBot\Api\Types\ForceReply;
19
use TelegramBot\Api\Types\ForumTopic;
20
use TelegramBot\Api\Types\Inline\InlineKeyboardMarkup;
21
use TelegramBot\Api\Types\Inline\QueryResult\AbstractInlineQueryResult;
22
use TelegramBot\Api\Types\InputMedia\ArrayOfInputMedia;
23
use TelegramBot\Api\Types\InputMedia\InputMedia;
24
use TelegramBot\Api\Types\MaskPosition;
25
use TelegramBot\Api\Types\Message;
26
use TelegramBot\Api\Types\MessageId;
27
use TelegramBot\Api\Types\Poll;
28
use TelegramBot\Api\Types\ReplyKeyboardMarkup;
29
use TelegramBot\Api\Types\ReplyKeyboardRemove;
30
use TelegramBot\Api\Types\SentWebAppMessage;
31
use TelegramBot\Api\Types\Sticker;
32
use TelegramBot\Api\Types\StickerSet;
33
use TelegramBot\Api\Types\Update;
34
use TelegramBot\Api\Types\User;
35
use TelegramBot\Api\Types\UserProfilePhotos;
36
use TelegramBot\Api\Types\WebhookInfo;
37
38
/**
39
 * Class BotApi
40
 *
41
 * @package TelegramBot\Api
42
 */
43
class BotApi
44
{
45
    /**
46
     * @deprecated
47
     *
48
     * HTTP codes
49
     *
50
     * @var array
51
     */
52
    public static $codes = [
53
        // Informational 1xx
54
        100 => 'Continue',
55
        101 => 'Switching Protocols',
56
        102 => 'Processing',            // RFC2518
57
        // Success 2xx
58
        200 => 'OK',
59
        201 => 'Created',
60
        202 => 'Accepted',
61
        203 => 'Non-Authoritative Information',
62
        204 => 'No Content',
63
        205 => 'Reset Content',
64
        206 => 'Partial Content',
65
        207 => 'Multi-Status',          // RFC4918
66
        208 => 'Already Reported',      // RFC5842
67
        226 => 'IM Used',               // RFC3229
68
        // Redirection 3xx
69
        300 => 'Multiple Choices',
70
        301 => 'Moved Permanently',
71
        302 => 'Found', // 1.1
72
        303 => 'See Other',
73
        304 => 'Not Modified',
74
        305 => 'Use Proxy',
75
        // 306 is deprecated but reserved
76
        307 => 'Temporary Redirect',
77
        308 => 'Permanent Redirect',    // RFC7238
78
        // Client Error 4xx
79
        400 => 'Bad Request',
80
        401 => 'Unauthorized',
81
        402 => 'Payment Required',
82
        403 => 'Forbidden',
83
        404 => 'Not Found',
84
        405 => 'Method Not Allowed',
85
        406 => 'Not Acceptable',
86
        407 => 'Proxy Authentication Required',
87
        408 => 'Request Timeout',
88
        409 => 'Conflict',
89
        410 => 'Gone',
90
        411 => 'Length Required',
91
        412 => 'Precondition Failed',
92
        413 => 'Payload Too Large',
93
        414 => 'URI Too Long',
94
        415 => 'Unsupported Media Type',
95
        416 => 'Range Not Satisfiable',
96
        417 => 'Expectation Failed',
97
        422 => 'Unprocessable Entity',                                        // RFC4918
98
        423 => 'Locked',                                                      // RFC4918
99
        424 => 'Failed Dependency',                                           // RFC4918
100
        425 => 'Reserved for WebDAV advanced collections expired proposal',   // RFC2817
101
        426 => 'Upgrade Required',                                            // RFC2817
102
        428 => 'Precondition Required',                                       // RFC6585
103
        429 => 'Too Many Requests',                                           // RFC6585
104
        431 => 'Request Header Fields Too Large',                             // RFC6585
105
        // Server Error 5xx
106
        500 => 'Internal Server Error',
107
        501 => 'Not Implemented',
108
        502 => 'Bad Gateway',
109
        503 => 'Service Unavailable',
110
        504 => 'Gateway Timeout',
111
        505 => 'HTTP Version Not Supported',
112
        506 => 'Variant Also Negotiates (Experimental)',                      // RFC2295
113
        507 => 'Insufficient Storage',                                        // RFC4918
114
        508 => 'Loop Detected',                                               // RFC5842
115
        510 => 'Not Extended',                                                // RFC2774
116
        511 => 'Network Authentication Required',                             // RFC6585
117
    ];
118
119
    /**
120
     * Url prefixes
121
     */
122
    const URL_PREFIX = 'https://api.telegram.org/bot';
123
124
    /**
125
     * Url prefix for files
126
     */
127
    const FILE_URL_PREFIX = 'https://api.telegram.org/file/bot';
128
129
    /**
130
     * @deprecated
131
     *
132
     * Default http status code
133
     */
134
    const DEFAULT_STATUS_CODE = 200;
135
136
    /**
137
     * @deprecated
138
     *
139
     * Not Modified http status code
140
     */
141
    const NOT_MODIFIED_STATUS_CODE = 304;
142
143
    /**
144
     * @deprecated
145
     *
146
     * Limits for tracked ids
147
     */
148
    const MAX_TRACKED_EVENTS = 200;
149
150
    /**
151
     * @var HttpClientInterface
152
     */
153
    private $httpClient;
154
155
    /**
156
     * @var string
157
     */
158
    private $token;
159
160
    /**
161
     * @var string
162
     */
163
    private $endpoint;
164
165
    /**
166
     * @var string|null
167
     */
168
    private $fileEndpoint;
169
170
    /**
171
     * @deprecated
172
     *
173
     * Botan tracker
174
     *
175
     * @var Botan|null
176
     */
177
    protected $tracker;
178
179
    /**
180
     * @deprecated
181
     *
182
     * list of event ids
183
     *
184
     * @var array
185
     */
186
    protected $trackedEvents = [];
187
188 9
    /**
189
     * @param string $token Telegram Bot API token
190 9
     * @param string|null $trackerToken Yandex AppMetrica application api_key
191 9
     * @param HttpClientInterface|null $httpClient
192
     * @param string|null $endpoint
193 9
     */
194
    public function __construct($token, $trackerToken = null, HttpClientInterface $httpClient = null, $endpoint = null)
195
    {
196 9
        $this->token = $token;
197
        $this->endpoint = ($endpoint ?: self::URL_PREFIX) . $token;
198
        $this->fileEndpoint = $endpoint ? null : (self::FILE_URL_PREFIX . $token);
199
200
        $this->httpClient = $httpClient ?: new CurlHttpClient();
201
202
        if ($trackerToken) {
203
            @trigger_error(sprintf('Passing $trackerToken to %s is deprecated', self::class), \E_USER_DEPRECATED);
204
            $this->tracker = new Botan($trackerToken);
0 ignored issues
show
Deprecated Code introduced by
The class TelegramBot\Api\Botan has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

204
            $this->tracker = /** @scrutinizer ignore-deprecated */ new Botan($trackerToken);
Loading history...
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$tracker has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

204
            /** @scrutinizer ignore-deprecated */ $this->tracker = new Botan($trackerToken);
Loading history...
205
        }
206
    }
207
208
    /**
209
     * @param string $rawData
210
     * @param int|null $authDateDiff
211
     * @return bool
212
     */
213
    public function validateWebAppData($rawData, $authDateDiff = null)
214
    {
215
        parse_str($rawData, $data);
216
217
        $sign = $data['hash'];
218
        unset($data['hash']);
219
220
        if ($authDateDiff && (time() - $data['auth_date'] > $authDateDiff)) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $authDateDiff of type integer|null is loosely compared to true; this is ambiguous if the integer can be 0. You might want to explicitly use !== null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For integer values, zero is a special case, in particular the following results might be unexpected:

0   == false // true
0   == null  // true
123 == false // false
123 == null  // false

// It is often better to use strict comparison
0 === false // false
0 === null  // false
Loading history...
221
            return false;
222
        }
223
224
        ksort($data);
225
        $checkString = '';
226
        foreach ($data as $k => $v) {
227
            $checkString .= "$k=$v\n";
228
        }
229
        $checkString = trim($checkString);
230
231
        $secret = hash_hmac('sha256', $this->token, 'WebAppData', true);
232
233
        return bin2hex(hash_hmac('sha256', $checkString, $secret, true)) === $sign;
234
    }
235
236
    /**
237
     * @deprecated
238
     *
239
     * Set return array
240
     *
241
     * @param bool $mode
242
     *
243
     * @return $this
244
     */
245
    public function setModeObject($mode = true)
246
    {
247
        @trigger_error(sprintf('Method "%s::%s" is deprecated', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
248
249
        return $this;
250
    }
251
252
    /**
253
     * @deprecated
254
     *
255
     * Call method
256
     *
257
     * @param string $method
258
     * @param array|null $data
259
     * @param int|null $timeout
260
     *
261
     * @return mixed
262
     * @throws Exception
263
     * @throws HttpException
264
     * @throws InvalidJsonException
265
     */
266
    public function call($method, array $data = null, $timeout = null)
267
    {
268
        if ($timeout !== null) {
269
            @trigger_error(sprintf('Passing $timeout parameter in %s::%s is deprecated. Use http client options', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
270
        }
271
272
        $endpoint = $this->endpoint . '/' . $method;
273
274
        return $this->httpClient->request($endpoint, $data);
275
    }
276
277
    /**
278
     * Get file contents via cURL
279
     *
280
     * @param string $fileId
281
     *
282
     * @return string
283
     *
284
     * @throws HttpException
285
     * @throws Exception
286
     */
287
    public function downloadFile($fileId)
288
    {
289
        $file = $this->getFile($fileId);
290
        if (!$path = $file->getFilePath()) {
291
            throw new Exception('Empty file_path property');
292
        }
293
        if (!$this->fileEndpoint) {
294
            return file_get_contents($path);
295
        }
296
297
        return $this->httpClient->download($this->fileEndpoint . '/' . $path);
298
    }
299
300
    /**
301
     * @deprecated
302
     *
303
     * Response validation
304
     *
305
     * @param resource $curl
306
     * @param string|false|null $response
307
     *
308
     * @throws HttpException
309
     *
310
     * @return void
311
     */
312
    public static function curlValidate($curl, $response = null)
313
    {
314
        @trigger_error(sprintf('Method "%s::%s" is deprecated', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
315
316
        if ($response) {
317
            $json = json_decode($response, true) ?: [];
318
        } else {
319
            $json = [];
320
        }
321
        if (($httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE))
322
            && !in_array($httpCode, [self::DEFAULT_STATUS_CODE, self::NOT_MODIFIED_STATUS_CODE])
0 ignored issues
show
introduced by
The constant TelegramBot\Api\BotApi::DEFAULT_STATUS_CODE has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

322
            && !in_array($httpCode, [/** @scrutinizer ignore-deprecated */ self::DEFAULT_STATUS_CODE, self::NOT_MODIFIED_STATUS_CODE])
Loading history...
introduced by
The constant TelegramBot\Api\BotApi::NOT_MODIFIED_STATUS_CODE has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

322
            && !in_array($httpCode, [self::DEFAULT_STATUS_CODE, /** @scrutinizer ignore-deprecated */ self::NOT_MODIFIED_STATUS_CODE])
Loading history...
323
        ) {
324
            $errorDescription = array_key_exists('description', $json) ? $json['description'] : self::$codes[$httpCode];
325
            $errorParameters = array_key_exists('parameters', $json) ? $json['parameters'] : [];
326
            throw new HttpException($errorDescription, $httpCode, null, $errorParameters);
327
        }
328
    }
329
330
    /**
331
     * JSON validation
332
     *
333
     * @param string $jsonString
334
     * @param bool $asArray
335
     *
336
     * @return object|array
337
     * @throws InvalidJsonException
338
     */
339
    public static function jsonValidate($jsonString, $asArray)
340
    {
341
        $json = json_decode($jsonString, $asArray);
342
343
        if (json_last_error() != JSON_ERROR_NONE) {
344
            throw new InvalidJsonException(json_last_error_msg(), json_last_error());
345
        }
346
347
        return $json;
348
    }
349
350
    /**
351
     * Use this method to send text messages. On success, the sent \TelegramBot\Api\Types\Message is returned.
352
     *
353
     * @param int|float|string $chatId
354
     * @param string $text
355
     * @param string|null $parseMode
356
     * @param bool $disablePreview
357
     * @param int|null $replyToMessageId
358
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
359
     * @param bool $disableNotification
360
     * @param int|null $messageThreadId
361
     * @param bool|null $protectContent
362
     * @param bool|null $allowSendingWithoutReply
363
     *
364
     * @return Message
365
     * @throws InvalidArgumentException
366
     * @throws Exception
367
     */
368
    public function sendMessage(
369
        $chatId,
370
        $text,
371
        $parseMode = null,
372
        $disablePreview = false,
373
        $replyToMessageId = null,
374
        $replyMarkup = null,
375
        $disableNotification = false,
376
        $messageThreadId = null,
377
        $protectContent = null,
378
        $allowSendingWithoutReply = null
379
    ) {
380
        return Message::fromResponse($this->call('sendMessage', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

380
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendMessage', [
Loading history...
381
            'chat_id' => $chatId,
382
            'text' => $text,
383
            'message_thread_id' => $messageThreadId,
384
            'parse_mode' => $parseMode,
385
            'disable_web_page_preview' => $disablePreview,
386
            'reply_to_message_id' => (int) $replyToMessageId,
387
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
388
            'disable_notification' => (bool) $disableNotification,
389
            'protect_content' => (bool) $protectContent,
390
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
391
        ]));
392
    }
393
394
    /**
395
     * @param int|string $chatId
396
     * @param int|string $fromChatId
397
     * @param int $messageId
398
     * @param string|null $caption
399
     * @param string|null $parseMode
400
     * @param ArrayOfMessageEntity|null $captionEntities
401
     * @param bool $disableNotification
402
     * @param int|null $replyToMessageId
403
     * @param bool $allowSendingWithoutReply
404
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
405
     * @param int|null $messageThreadId
406
     * @param bool|null $protectContent
407
     *
408
     * @return MessageId
409
     * @throws Exception
410
     * @throws HttpException
411
     * @throws InvalidJsonException
412
     */
413
    public function copyMessage(
414
        $chatId,
415
        $fromChatId,
416
        $messageId,
417
        $caption = null,
418
        $parseMode = null,
419
        $captionEntities = null,
420
        $disableNotification = false,
421
        $replyToMessageId = null,
422
        $allowSendingWithoutReply = false,
423
        $replyMarkup = null,
424
        $messageThreadId = null,
425
        $protectContent = null
426
    ) {
427
        return MessageId::fromResponse($this->call('copyMessage', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

427
        return MessageId::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('copyMessage', [
Loading history...
428
            'chat_id' => $chatId,
429
            'from_chat_id' => $fromChatId,
430
            'message_id' => (int) $messageId,
431
            'caption' => $caption,
432
            'parse_mode' => $parseMode,
433
            'caption_entities' => $captionEntities,
434
            'disable_notification' => (bool) $disableNotification,
435
            'message_thread_id' => $messageThreadId,
436
            'reply_to_message_id' => (int) $replyToMessageId,
437
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
438
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
439
            'protect_content' => (bool) $protectContent,
440
        ]));
441
    }
442
443
    /**
444
     * Use this method to send phone contacts
445
     *
446
     * @param int|string $chatId chat_id or @channel_name
447
     * @param string $phoneNumber
448
     * @param string $firstName
449
     * @param string $lastName
450
     * @param int|null $replyToMessageId
451
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
452
     * @param bool $disableNotification
453
     * @param int|null $messageThreadId
454
     * @param bool|null $protectContent
455
     * @param bool|null $allowSendingWithoutReply
456
     *
457
     * @return Message
458
     * @throws Exception
459
     */
460
    public function sendContact(
461
        $chatId,
462
        $phoneNumber,
463
        $firstName,
464
        $lastName = null,
465
        $replyToMessageId = null,
466
        $replyMarkup = null,
467
        $disableNotification = false,
468
        $messageThreadId = null,
469
        $protectContent = null,
470
        $allowSendingWithoutReply = null
471
    ) {
472
        return Message::fromResponse($this->call('sendContact', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

472
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendContact', [
Loading history...
473
            'chat_id' => $chatId,
474
            'phone_number' => $phoneNumber,
475
            'first_name' => $firstName,
476
            'last_name' => $lastName,
477
            'message_thread_id' => $messageThreadId,
478
            'reply_to_message_id' => $replyToMessageId,
479
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
480
            'disable_notification' => (bool) $disableNotification,
481
            'protect_content' => (bool) $protectContent,
482
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
483
        ]));
484
    }
485
486
    /**
487
     * Use this method when you need to tell the user that something is happening on the bot's side.
488
     * The status is set for 5 seconds or less (when a message arrives from your bot,
489
     * Telegram clients clear its typing status).
490
     *
491
     * We only recommend using this method when a response from the bot will take a noticeable amount of time to arrive.
492
     *
493
     * Type of action to broadcast. Choose one, depending on what the user is about to receive:
494
     * `typing` for text messages, `upload_photo` for photos, `record_video` or `upload_video` for videos,
495
     * `record_audio` or upload_audio for audio files, `upload_document` for general files,
496
     * `find_location` for location data.
497
     *
498
     * @param int $chatId
499
     * @param string $action
500
     *
501
     * @return bool
502
     * @throws Exception
503
     */
504
    public function sendChatAction($chatId, $action)
505
    {
506
        return $this->call('sendChatAction', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

506
        return /** @scrutinizer ignore-deprecated */ $this->call('sendChatAction', [
Loading history...
507
            'chat_id' => $chatId,
508
            'action' => $action,
509
        ]);
510
    }
511
512
    /**
513
     * Use this method to get a list of profile pictures for a user.
514
     *
515
     * @param int $userId
516
     * @param int $offset
517
     * @param int $limit
518
     *
519
     * @return UserProfilePhotos
520
     * @throws Exception
521
     */
522
    public function getUserProfilePhotos($userId, $offset = 0, $limit = 100)
523
    {
524
        return UserProfilePhotos::fromResponse($this->call('getUserProfilePhotos', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

524
        return UserProfilePhotos::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getUserProfilePhotos', [
Loading history...
525
            'user_id' => (int) $userId,
526
            'offset' => (int) $offset,
527
            'limit' => (int) $limit,
528
        ]));
529
    }
530
531
    /**
532
     * Use this method to specify a url and receive incoming updates via an outgoing webhook.
533
     * Whenever there is an update for the bot, we will send an HTTPS POST request to the specified url,
534
     * containing a JSON-serialized Update.
535
     * In case of an unsuccessful request, we will give up after a reasonable amount of attempts.
536
     *
537
     * @param string $url HTTPS url to send updates to. Use an empty string to remove webhook integration
538
     * @param \CURLFile|string $certificate Upload your public key certificate
539
     *                                      so that the root certificate in use can be checked
540
     * @param string|null $ipAddress The fixed IP address which will be used to send webhook requests
541
     *                               instead of the IP address resolved through DNS
542
     * @param int|null $maxConnections The maximum allowed number of simultaneous HTTPS connections to the webhook
543
     *                                 for update delivery, 1-100. Defaults to 40. Use lower values to limit
544
     *                                 the load on your bot's server, and higher values to increase your bot's throughput.
545
     * @param array|string|null $allowedUpdates A JSON-serialized list of the update types you want your bot to receive.
546
     *                                          For example, specify [“message”, “edited_channel_post”, “callback_query”]
547
     *                                          to only receive updates of these types. See Update for a complete list of available update types.
548
     *                                          Specify an empty list to receive all update types except chat_member (default).
549
     *                                          If not specified, the previous setting will be used.
550
     *                                          Please note that this parameter doesn't affect updates created before the call to the setWebhook,
551
     *                                          so unwanted updates may be received for a short period of time.
552
     * @param bool|null $dropPendingUpdates Pass True to drop all pending updates
553
     * @param string|null $secretToken A secret token to be sent in a header “X-Telegram-Bot-Api-Secret-Token” in every webhook request,
554
     *                                 1-256 characters. Only characters A-Z, a-z, 0-9, _ and - are allowed.
555
     *                                 The header is useful to ensure that the request comes from a webhook set by you.
556
     *
557
     * @return string
558
     *
559
     * @throws Exception
560
     */
561
    public function setWebhook(
562
        $url = '',
563
        $certificate = null,
564
        $ipAddress = null,
565
        $maxConnections = 40,
566
        $allowedUpdates = null,
567
        $dropPendingUpdates = false,
568
        $secretToken = null
569
    ) {
570
        return $this->call('setWebhook', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

570
        return /** @scrutinizer ignore-deprecated */ $this->call('setWebhook', [
Loading history...
571
            'url' => $url,
572
            'certificate' => $certificate,
573
            'ip_address' => $ipAddress,
574
            'max_connections' => $maxConnections,
575
            'allowed_updates' => \is_array($allowedUpdates) ? json_encode($allowedUpdates) : $allowedUpdates,
576
            'drop_pending_updates' => $dropPendingUpdates,
577
            'secret_token' => $secretToken
578
        ]);
579
    }
580
581
    /**
582
     * Use this method to clear webhook and use getUpdates again!
583
     *
584
     * @param bool $dropPendingUpdates Pass True to drop all pending updates
585
     *
586
     * @return mixed
587
     *
588
     * @throws Exception
589
     */
590
    public function deleteWebhook($dropPendingUpdates = false)
591
    {
592
        return $this->call('deleteWebhook', ['drop_pending_updates' => $dropPendingUpdates]);
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

592
        return /** @scrutinizer ignore-deprecated */ $this->call('deleteWebhook', ['drop_pending_updates' => $dropPendingUpdates]);
Loading history...
593
    }
594
595 2
    /**
596
     * Use this method to get current webhook status. Requires no parameters.
597 2
     * On success, returns a WebhookInfo object. If the bot is using getUpdates,
598 2
     * will return an object with the url field empty.
599 2
     *
600 2
     * @return WebhookInfo
601 2
     * @throws Exception
602
     * @throws InvalidArgumentException
603 2
     */
604
    public function getWebhookInfo()
605
    {
606
        return WebhookInfo::fromResponse($this->call('getWebhookInfo'));
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

606
        return WebhookInfo::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getWebhookInfo'));
Loading history...
607
    }
608
609 2
    /**
610
     * A simple method for testing your bot's auth token.Requires no parameters.
611
     * Returns basic information about the bot in form of a User object.
612
     *
613
     * @return User
614
     * @throws Exception
615
     * @throws InvalidArgumentException
616
     */
617
    public function getMe()
618
    {
619
        return User::fromResponse($this->call('getMe'));
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

619
        return User::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getMe'));
Loading history...
620
    }
621
622
    /**
623
     * Use this method to receive incoming updates using long polling.
624
     * An Array of Update objects is returned.
625
     *
626
     * Notes
627
     * 1. This method will not work if an outgoing webhook is set up.
628
     * 2. In order to avoid getting duplicate updates, recalculate offset after each server response.
629
     *
630
     * @param int $offset
631
     * @param int $limit
632
     * @param int $timeout
633
     *
634
     * @return Update[]
635
     * @throws Exception
636
     * @throws InvalidArgumentException
637
     */
638
    public function getUpdates($offset = 0, $limit = 100, $timeout = 0)
639
    {
640
        $updates = ArrayOfUpdates::fromResponse($this->call('getUpdates', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

640
        $updates = ArrayOfUpdates::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getUpdates', [
Loading history...
641
            'offset' => $offset,
642
            'limit' => $limit,
643
            'timeout' => $timeout,
644
        ]));
645
646
        if ($this->tracker instanceof Botan) {
0 ignored issues
show
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$tracker has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

646
        if (/** @scrutinizer ignore-deprecated */ $this->tracker instanceof Botan) {
Loading history...
647
            foreach ($updates as $update) {
648
                $this->trackUpdate($update);
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::trackUpdate() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

648
                /** @scrutinizer ignore-deprecated */ $this->trackUpdate($update);
Loading history...
649
            }
650
        }
651
652
        return $updates;
653
    }
654
655
    /**
656
     * Use this method to send point on the map. On success, the sent Message is returned.
657
     *
658
     * @param int|string $chatId
659
     * @param float $latitude
660
     * @param float $longitude
661
     * @param int|null $replyToMessageId
662
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
663
     * @param bool $disableNotification
664
     * @param null|int $livePeriod
665
     * @param int|null $messageThreadId
666
     * @param bool|null $protectContent
667
     * @param bool|null $allowSendingWithoutReply
668
     *
669
     * @return Message
670
     *
671
     * @throws Exception
672
     */
673
    public function sendLocation(
674
        $chatId,
675
        $latitude,
676
        $longitude,
677
        $replyToMessageId = null,
678
        $replyMarkup = null,
679
        $disableNotification = false,
680
        $livePeriod = null,
681
        $messageThreadId = null,
682
        $protectContent = null,
683
        $allowSendingWithoutReply = null
684
    ) {
685
        return Message::fromResponse($this->call('sendLocation', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

685
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendLocation', [
Loading history...
686
            'chat_id' => $chatId,
687
            'latitude' => $latitude,
688
            'longitude' => $longitude,
689
            'live_period' => $livePeriod,
690
            'message_thread_id' => $messageThreadId,
691
            'reply_to_message_id' => $replyToMessageId,
692
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
693
            'disable_notification' => (bool) $disableNotification,
694
            'protect_content' => (bool) $protectContent,
695
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
696
        ]));
697
    }
698
699
    /**
700
     * Use this method to edit live location messages sent by the bot or via the bot (for inline bots).
701
     * On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.
702
     *
703
     * @param int|string $chatId
704
     * @param int $messageId
705
     * @param string $inlineMessageId
706
     * @param float $latitude
707
     * @param float $longitude
708
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
709
     *
710
     * @return Message|true
711
     *
712
     * @throws Exception
713
     */
714
    public function editMessageLiveLocation(
715
        $chatId,
716
        $messageId,
717
        $inlineMessageId,
718
        $latitude,
719
        $longitude,
720
        $replyMarkup = null
721
    ) {
722
        $response = $this->call('editMessageLiveLocation', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

722
        $response = /** @scrutinizer ignore-deprecated */ $this->call('editMessageLiveLocation', [
Loading history...
723
            'chat_id' => $chatId,
724
            'message_id' => $messageId,
725
            'inline_message_id' => $inlineMessageId,
726
            'latitude' => $latitude,
727
            'longitude' => $longitude,
728
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
729
        ]);
730
        if ($response === true) {
731
            return true;
732
        }
733
734
        return Message::fromResponse($response);
735
    }
736
737
    /**
738
     * Use this method to stop updating a live location message sent by the bot or via the bot (for inline bots) before
739
     * live_period expires.
740
     * On success, if the message is not an inline message, the edited Message is returned, otherwise True is returned.
741
     *
742
     * @param int|string $chatId
743
     * @param int $messageId
744
     * @param string $inlineMessageId
745
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
746
     *
747
     * @return Message|true
748
     *
749
     * @throws Exception
750
     */
751
    public function stopMessageLiveLocation(
752
        $chatId,
753
        $messageId,
754
        $inlineMessageId,
755
        $replyMarkup = null
756
    ) {
757
        $response = $this->call('stopMessageLiveLocation', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

757
        $response = /** @scrutinizer ignore-deprecated */ $this->call('stopMessageLiveLocation', [
Loading history...
758
            'chat_id' => $chatId,
759
            'message_id' => $messageId,
760
            'inline_message_id' => $inlineMessageId,
761
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
762
        ]);
763
        if ($response === true) {
764
            return true;
765
        }
766
767
        return Message::fromResponse($response);
768
    }
769
770
    /**
771
     * Use this method to send information about a venue. On success, the sent Message is returned.
772
     *
773
     * @param int|string $chatId chat_id or @channel_name
774
     * @param float $latitude
775
     * @param float $longitude
776
     * @param string $title
777
     * @param string $address
778
     * @param string|null $foursquareId
779
     * @param int|null $replyToMessageId
780
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
781
     * @param bool $disableNotification
782
     * @param int|null $messageThreadId
783
     * @param bool|null $protectContent
784
     * @param bool|null $allowSendingWithoutReply
785
     *
786
     * @return Message
787
     * @throws Exception
788
     */
789
    public function sendVenue(
790
        $chatId,
791
        $latitude,
792
        $longitude,
793
        $title,
794
        $address,
795
        $foursquareId = null,
796
        $replyToMessageId = null,
797
        $replyMarkup = null,
798
        $disableNotification = false,
799
        $messageThreadId = null,
800
        $protectContent = null,
801
        $allowSendingWithoutReply = null
802
    ) {
803
        return Message::fromResponse($this->call('sendVenue', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

803
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendVenue', [
Loading history...
804
            'chat_id' => $chatId,
805
            'latitude' => $latitude,
806
            'longitude' => $longitude,
807
            'title' => $title,
808
            'address' => $address,
809
            'foursquare_id' => $foursquareId,
810
            'message_thread_id' => $messageThreadId,
811
            'reply_to_message_id' => $replyToMessageId,
812
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
813
            'disable_notification' => (bool) $disableNotification,
814
            'protect_content' => (bool) $protectContent,
815
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
816
        ]));
817
    }
818
819
    /**
820
     * Use this method to send .webp stickers. On success, the sent Message is returned.
821
     *
822
     * @param int|string $chatId chat_id or @channel_name
823
     * @param \CURLFile|string $sticker
824
     * @param int|null $replyToMessageId
825
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
826
     * @param bool $disableNotification Sends the message silently. Users will receive a notification with no sound.
827
     * @param bool $protectContent Protects the contents of the sent message from forwarding and saving
828
     * @param bool $allowSendingWithoutReply Pass True if the message should be sent even if the specified replied-to message is not found
829
     * @param string|null $messageThreadId
830
     *
831
     * @return Message
832
     * @throws InvalidArgumentException
833
     * @throws Exception
834
     */
835
    public function sendSticker(
836
        $chatId,
837
        $sticker,
838
        $replyToMessageId = null,
839
        $replyMarkup = null,
840
        $disableNotification = false,
841
        $protectContent = false,
842
        $allowSendingWithoutReply = false,
843
        $messageThreadId = null
844
    ) {
845
        return Message::fromResponse($this->call('sendSticker', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

845
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendSticker', [
Loading history...
846
            'chat_id' => $chatId,
847
            'sticker' => $sticker,
848
            'message_thread_id' => $messageThreadId,
849
            'reply_to_message_id' => $replyToMessageId,
850
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
851
            'disable_notification' => (bool) $disableNotification,
852
            'protect_content' => (bool) $protectContent,
853
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
854
        ]));
855
    }
856
857
    /**
858
     * @param string $name Name of the sticker set
859
     * @return StickerSet
860
     * @throws InvalidArgumentException
861
     * @throws Exception
862
     */
863
    public function getStickerSet($name)
864
    {
865
        return StickerSet::fromResponse($this->call('getStickerSet', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

865
        return StickerSet::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getStickerSet', [
Loading history...
866
            'name' => $name,
867
        ]));
868
    }
869
870
    /**
871
     * @param array[] $customEmojiIds List of custom emoji identifiers.
872
     *                                At most 200 custom emoji identifiers can be specified.
873
     * @return StickerSet
874
     * @throws InvalidArgumentException
875
     * @throws Exception
876
     *
877
     * @author bernard-ng <[email protected]>
878
     */
879
    public function getCustomEmojiStickers($customEmojiIds = [])
880
    {
881
        return StickerSet::fromResponse($this->call('getCustomEmojiStickers', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

881
        return StickerSet::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getCustomEmojiStickers', [
Loading history...
882
            'custom_emoji_ids' => $customEmojiIds,
883
        ]));
884
    }
885
886
    /**
887
     * Use this method to create a new sticker set owned by a user.
888
     * The bot will be able to edit the sticker set thus created.
889
     * You must use exactly one of the fields png_sticker, tgs_sticker, or webm_sticker.
890
     * Returns True on success.
891
     *
892
     * @param int $userId User identifier of created sticker set owner
893
     * @param string $pngSticker PNG image with the sticker, must be up to 512 kilobytes in size,
894
     *                           dimensions must not exceed 512px, and either width or height must be exactly 512px.
895
     *
896
     * @return File
897
     *
898
     * @throws InvalidArgumentException
899
     * @throws Exception
900
     */
901
    public function uploadStickerFile($userId, $pngSticker)
902
    {
903
        return File::fromResponse($this->call('uploadStickerFile', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

903
        return File::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('uploadStickerFile', [
Loading history...
904
            'user_id' => $userId,
905
            'png_sticker' => $pngSticker,
906
        ]));
907
    }
908
909
    /**
910
     * Use this method to create a new sticker set owned by a user.
911
     * The bot will be able to edit the sticker set thus created.
912
     * You must use exactly one of the fields png_sticker, tgs_sticker, or webm_sticker. Returns True on success.
913
     *
914
     * @param int $userId User identifier of created sticker set owner
915
     * @param string $name Short name of sticker set, to be used in t.me/addstickers/ URLs (e.g., animals).
916
     *                     Can contain only english letters, digits and underscores. Must begin with a letter,
917
     *                     can't contain consecutive underscores and must end in “_by_<bot username>”.
918
     *                     <bot_username> is case insensitive. 1-64 characters.
919
     * @param string $title Sticker set title, 1-64 characters
920
     * @param string $pngSticker PNG image with the sticker, must be up to 512 kilobytes in size,
921
     *                           dimensions must not exceed 512px, and either width or height must be exactly 512px.
922
     *                           Pass a file_id as a String to send a file that already exists on the Telegram servers,
923
     *                           pass an HTTP URL as a String for Telegram to get a file from the Internet,
924
     *                           or upload a new one using multipart/form-data.
925
     * @param string $tgsSticker TGS animation with the sticker, uploaded using multipart/form-data.
926
     *                           See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements
927
     * @param string $webmSticker WebP animation with the sticker, uploaded using multipart/form-data.
928
     *                            See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements
929
     * @param string $stickerType Sticker type, one of “png”, “tgs”, or “webp”
930
     * @param string $emojis One or more emoji corresponding to the sticker
931
     * @param MaskPosition|null $maskPosition A JSON-serialized object for position where the mask should be placed on faces
932
     * @param array<string, \CURLFile|\CURLStringFile> $attachments Attachments to use in attach://<attachment>
933
     *
934
     * @throws InvalidArgumentException
935
     * @throws Exception
936
     *
937
     * @return bool
938
     *
939
     * @author bernard-ng <[email protected]>
940
     */
941
    public function createNewStickerSet(
942
        $userId,
943
        $name,
944
        $title,
945
        $emojis,
946
        $pngSticker,
947
        $tgsSticker = null,
948
        $webmSticker = null,
949
        $stickerType = null,
950
        $maskPosition = null,
951
        $attachments = []
952
    ) {
953
        return $this->call('createNewStickerSet', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

953
        return /** @scrutinizer ignore-deprecated */ $this->call('createNewStickerSet', [
Loading history...
954
            'user_id' => $userId,
955
            'name' => $name,
956
            'title' => $title,
957
            'png_sticker' => $pngSticker,
958
            'tgs_sticker' => $tgsSticker,
959
            'webm_sticker' => $webmSticker,
960
            'sticker_type' => $stickerType,
961
            'emojis' => $emojis,
962
            'mask_position' => is_null($maskPosition) ? $maskPosition : $maskPosition->toJson(),
963
        ] + $attachments);
964
    }
965
966
    /**
967
     * Use this method to add a new sticker to a set created by the bot.
968
     * You must use exactly one of the fields png_sticker, tgs_sticker, or webm_sticker.
969
     * Animated stickers can be added to animated sticker sets and only to them.
970
     * Animated sticker sets can have up to 50 stickers.
971
     * Static sticker sets can have up to 120 stickers. Returns True on success.
972
     *
973
     * @param string $userId
974
     * @param string $name
975
     * @param string $emojis
976
     * @param string $pngSticker
977
     * @param string|null $tgsSticker
978
     * @param string|null $webmSticker
979
     * @param MaskPosition|null $maskPosition
980
     * @param array<string, \CURLFile|\CURLStringFile> $attachments Attachments to use in attach://<attachment>
981
     *
982
     * @return bool
983
     * @throws Exception
984
     * @throws HttpException
985
     * @throws InvalidJsonException
986
     */
987
    public function addStickerToSet(
988
        $userId,
989
        $name,
990
        $emojis,
991
        $pngSticker,
992
        $tgsSticker = null,
993
        $webmSticker = null,
994
        $maskPosition = null,
995
        $attachments = []
996
    ) {
997
        return $this->call('addStickerToSet', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

997
        return /** @scrutinizer ignore-deprecated */ $this->call('addStickerToSet', [
Loading history...
998
            'user_id' => $userId,
999
            'name' => $name,
1000
            'png_sticker' => $pngSticker,
1001
            'tgs_sticker' => $tgsSticker,
1002
            'webm_sticker' => $webmSticker,
1003
            'emojis' => $emojis,
1004
            'mask_position' => is_null($maskPosition) ? $maskPosition : $maskPosition->toJson(),
1005
        ] + $attachments);
1006
    }
1007
1008
    /**
1009
     * Use this method to move a sticker in a set created by the bot to a specific position.
1010
     * Returns True on success.
1011
     *
1012
     * @param string $sticker File identifier of the sticker
1013
     * @param int $position New sticker position in the set, zero-based
1014
     *
1015
     * @return bool
1016
     *
1017
     * @throws InvalidArgumentException
1018
     * @throws Exception
1019
     */
1020
    public function setStickerPositionInSet($sticker, $position)
1021
    {
1022
        return $this->call('setStickerPositionInSet', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1022
        return /** @scrutinizer ignore-deprecated */ $this->call('setStickerPositionInSet', [
Loading history...
1023
            'sticker' => $sticker,
1024
            'position' => $position,
1025
        ]);
1026
    }
1027
1028
    /**
1029
     * Use this method to delete a sticker from a set created by the bot.
1030
     * Returns True on success.
1031
     *
1032
     * @param string $name Sticker set name
1033
     * @param string $userId User identifier of sticker set owner
1034
     * @param File|null $thumbnail A PNG image with the thumbnail,
1035
     *                             must be up to 128 kilobytes in size and have width and height exactly 100px,
1036
     *                             or a TGS animation with the thumbnail up to 32 kilobytes in size
1037
     *
1038
     * @return bool
1039
     *
1040
     * @throws InvalidArgumentException
1041
     * @throws Exception
1042
     */
1043
    public function setStickerSetThumbnail($name, $userId, $thumbnail = null)
1044
    {
1045
        return $this->call('setStickerSetThumb', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1045
        return /** @scrutinizer ignore-deprecated */ $this->call('setStickerSetThumb', [
Loading history...
1046
            'name' => $name,
1047
            'user_id' => $userId,
1048
            'thumbnail' => $thumbnail,
1049
        ]);
1050
    }
1051
1052
    /**
1053
     * @deprecated Use setStickerSetThumbnail
1054
     *
1055
     * Use this method to delete a sticker from a set created by the bot.
1056
     * Returns True on success.
1057
     *
1058
     * @param string $name Sticker set name
1059
     * @param string $userId User identifier of sticker set owner
1060
     * @param File|null $thumb A PNG image with the thumbnail,
1061
     *                         must be up to 128 kilobytes in size and have width and height exactly 100px,
1062
     *                         or a TGS animation with the thumbnail up to 32 kilobytes in size
1063
     *
1064
     * @return bool
1065
     *
1066
     * @throws InvalidArgumentException
1067
     * @throws Exception
1068
     */
1069
    public function setStickerSetThumb($name, $userId, $thumb = null)
1070
    {
1071
        return $this->setStickerSetThumbnail($name, $userId, $thumb);
1072
    }
1073
1074
    /**
1075
     * Use this method to send video files,
1076
     * Telegram clients support mp4 videos (other formats may be sent as Document).
1077
     * On success, the sent Message is returned.
1078
     *
1079
     * @param int|string $chatId chat_id or @channel_name
1080
     * @param \CURLFile|string $video
1081
     * @param int|null $duration
1082
     * @param string|null $caption
1083
     * @param int|null $replyToMessageId
1084
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1085
     * @param bool $disableNotification
1086
     * @param bool $supportsStreaming Pass True, if the uploaded video is suitable for streaming
1087
     * @param string|null $parseMode
1088
     * @param int|null $messageThreadId
1089
     * @param bool|null $protectContent
1090
     * @param bool|null $allowSendingWithoutReply
1091
     * @param \CURLFile|\CURLStringFile|string|null $thumbnail
0 ignored issues
show
Bug introduced by
The type CURLStringFile was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1092
     *
1093
     * @return Message
1094
     * @throws InvalidArgumentException
1095
     * @throws Exception
1096
     */
1097
    public function sendVideo(
1098
        $chatId,
1099
        $video,
1100
        $duration = null,
1101
        $caption = null,
1102
        $replyToMessageId = null,
1103
        $replyMarkup = null,
1104
        $disableNotification = false,
1105
        $supportsStreaming = false,
1106
        $parseMode = null,
1107
        $messageThreadId = null,
1108
        $protectContent = null,
1109
        $allowSendingWithoutReply = null,
1110
        $thumbnail = null
1111
    ) {
1112
        return Message::fromResponse($this->call('sendVideo', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1112
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendVideo', [
Loading history...
1113
            'chat_id' => $chatId,
1114
            'video' => $video,
1115
            'duration' => $duration,
1116
            'caption' => $caption,
1117
            'message_thread_id' => $messageThreadId,
1118
            'reply_to_message_id' => $replyToMessageId,
1119
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1120
            'disable_notification' => (bool) $disableNotification,
1121
            'supports_streaming' => (bool) $supportsStreaming,
1122
            'parse_mode' => $parseMode,
1123
            'protect_content' => (bool) $protectContent,
1124
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
1125
            'thumbnail' => $thumbnail,
1126
        ]));
1127
    }
1128
1129
    /**
1130
     * Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound),
1131
     * On success, the sent Message is returned.
1132
     * Bots can currently send animation files of up to 50 MB in size, this limit may be changed in the future.
1133
     *
1134
     * @param int|string $chatId chat_id or @channel_name
1135
     * @param \CURLFile|string $animation
1136
     * @param int|null $duration
1137
     * @param string|null $caption
1138
     * @param int|null $replyToMessageId
1139
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1140
     * @param bool $disableNotification
1141
     * @param string|null $parseMode,
1142
     * @param int|null $messageThreadId
1143
     * @param bool|null $protectContent
1144
     * @param bool|null $allowSendingWithoutReply
1145
     * @param \CURLFile|\CURLStringFile|string|null $thumbnail
1146
     *
1147
     * @return Message
1148
     * @throws InvalidArgumentException
1149
     * @throws Exception
1150
     */
1151
    public function sendAnimation(
1152
        $chatId,
1153
        $animation,
1154
        $duration = null,
1155
        $caption = null,
1156
        $replyToMessageId = null,
1157
        $replyMarkup = null,
1158
        $disableNotification = false,
1159
        $parseMode = null,
1160
        $messageThreadId = null,
1161
        $protectContent = null,
1162
        $allowSendingWithoutReply = null,
1163
        $thumbnail = null
1164
    ) {
1165
        return Message::fromResponse($this->call('sendAnimation', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1165
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendAnimation', [
Loading history...
1166
            'chat_id' => $chatId,
1167
            'animation' => $animation,
1168
            'duration' => $duration,
1169
            'caption' => $caption,
1170
            'message_thread_id' => $messageThreadId,
1171
            'reply_to_message_id' => $replyToMessageId,
1172
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1173
            'disable_notification' => (bool) $disableNotification,
1174
            'parse_mode' => $parseMode,
1175
            'protect_content' => (bool) $protectContent,
1176
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
1177
            'thumbnail' => $thumbnail,
1178
        ]));
1179
    }
1180
1181
    /**
1182
     * Use this method to send audio files,
1183
     * if you want Telegram clients to display the file as a playable voice message.
1184
     * For this to work, your audio must be in an .ogg file encoded with OPUS
1185
     * (other formats may be sent as Audio or Document).
1186
     * On success, the sent Message is returned.
1187
     * Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future.
1188
     *
1189
     * @param int|string $chatId chat_id or @channel_name
1190
     * @param \CURLFile|string $voice
1191
     * @param string $caption Voice message caption, 0-1024 characters after entities parsing
1192
     * @param int|null $duration
1193
     * @param int|null $replyToMessageId
1194
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1195
     * @param bool $disableNotification
1196
     * @param bool $allowSendingWithoutReply Pass True, if the message should be sent even if the specified
1197
     *                                       replied-to message is not found
1198
     * @param string|null $parseMode
1199
     * @param int|null $messageThreadId
1200
     * @param bool|null $protectContent
1201
     *
1202
     * @return Message
1203
     * @throws InvalidArgumentException
1204
     * @throws Exception
1205
     */
1206
    public function sendVoice(
1207
        $chatId,
1208
        $voice,
1209
        $caption = null,
1210
        $duration = null,
1211
        $replyToMessageId = null,
1212
        $replyMarkup = null,
1213
        $disableNotification = false,
1214
        $allowSendingWithoutReply = false,
1215
        $parseMode = null,
1216
        $messageThreadId = null,
1217
        $protectContent = null
1218
    ) {
1219
        return Message::fromResponse($this->call('sendVoice', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1219
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendVoice', [
Loading history...
1220
            'chat_id' => $chatId,
1221
            'voice' => $voice,
1222
            'caption' => $caption,
1223
            'duration' => $duration,
1224
            'message_thread_id' => $messageThreadId,
1225
            'reply_to_message_id' => $replyToMessageId,
1226
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1227
            'disable_notification' => (bool) $disableNotification,
1228
            'allow_sending_without_reply' => $allowSendingWithoutReply,
1229
            'parse_mode' => $parseMode,
1230
            'protect_content' => (bool) $protectContent,
1231
        ]));
1232
    }
1233
1234
    /**
1235
     * Use this method to forward messages of any kind. Service messages can't be forwarded.
1236
     * On success, the sent Message is returned.
1237
     *
1238
     * @param int|string $chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername)
1239
     * @param int $fromChatId Unique identifier for the chat where the original message was sent (or channel username in the format @channelusername)
1240
     * @param string $messageId Message identifier in the chat specified in from_chat_id
1241
     * @param bool $protectContent Protects the contents of the forwarded message from forwarding and saving
1242
     * @param bool $disableNotification Sends the message silently. Users will receive a notification with no sound.
1243
     * @param int|null $messageThreadId Unique identifier for the target message thread (topic) of the forum; for forum supergroups only
1244
     *
1245
     * @return Message
1246
     * @throws Exception
1247
     * @throws HttpException
1248
     * @throws InvalidJsonException
1249
     */
1250
    public function forwardMessage(
1251
        $chatId,
1252
        $fromChatId,
1253
        $messageId,
1254
        $protectContent = false,
1255
        $disableNotification = false,
1256
        $messageThreadId = null
1257
    ) {
1258
        return Message::fromResponse($this->call('forwardMessage', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1258
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('forwardMessage', [
Loading history...
1259
            'chat_id' => $chatId,
1260
            'from_chat_id' => $fromChatId,
1261
            'message_id' => $messageId,
1262
            'message_thread_id' => $messageThreadId,
1263
            'protect_content' => $protectContent,
1264
            'disable_notification' => (bool) $disableNotification,
1265
        ]));
1266
    }
1267
1268
    /**
1269
     * Use this method to send audio files,
1270
     * if you want Telegram clients to display them in the music player.
1271
     * Your audio must be in the .mp3 format.
1272
     * On success, the sent Message is returned.
1273
     * Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future.
1274
     *
1275
     * For backward compatibility, when the fields title and performer are both empty
1276
     * and the mime-type of the file to be sent is not audio/mpeg, the file will be sent as a playable voice message.
1277
     * For this to work, the audio must be in an .ogg file encoded with OPUS.
1278
     * This behavior will be phased out in the future. For sending voice messages, use the sendVoice method instead.
1279
     *
1280
     * @param int|string $chatId chat_id or @channel_name
1281
     * @param \CURLFile|string $audio
1282
     * @param int|null $duration
1283
     * @param string|null $performer
1284
     * @param string|null $title
1285
     * @param int|null $replyToMessageId
1286
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1287
     * @param bool $disableNotification
1288
     * @param string|null $parseMode
1289
     * @param bool|null $protectContent
1290
     * @param bool|null $allowSendingWithoutReply
1291
     * @param \CURLFile|\CURLStringFile|string|null $thumbnail
1292
     *
1293
     * @return Message
1294
     * @throws InvalidArgumentException
1295
     * @throws Exception
1296
     * @deprecated since 20th February. Removed backward compatibility from the method sendAudio.
1297
     * Voice messages now must be sent using the method sendVoice.
1298
     * There is no more need to specify a non-empty title or performer while sending the audio by file_id.
1299
     *
1300
     */
1301
    public function sendAudio(
1302
        $chatId,
1303
        $audio,
1304
        $duration = null,
1305
        $performer = null,
1306
        $title = null,
1307
        $replyToMessageId = null,
1308
        $replyMarkup = null,
1309
        $disableNotification = false,
1310
        $parseMode = null,
1311
        $protectContent = null,
1312
        $allowSendingWithoutReply = null,
1313
        $thumbnail = null
1314
    ) {
1315
        return Message::fromResponse($this->call('sendAudio', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1315
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendAudio', [
Loading history...
1316
            'chat_id' => $chatId,
1317
            'audio' => $audio,
1318
            'duration' => $duration,
1319
            'performer' => $performer,
1320
            'title' => $title,
1321
            'reply_to_message_id' => $replyToMessageId,
1322
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1323
            'disable_notification' => (bool) $disableNotification,
1324
            'parse_mode' => $parseMode,
1325
            'protect_content' => (bool) $protectContent,
1326
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
1327
            'thumbnail' => $thumbnail,
1328
        ]));
1329
    }
1330
1331
    /**
1332
     * Use this method to send photos. On success, the sent Message is returned.
1333
     *
1334
     * @param int|string $chatId chat_id or @channel_name
1335
     * @param \CURLFile|string $photo
1336
     * @param string|null $caption
1337
     * @param int|null $replyToMessageId
1338
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1339
     * @param bool $disableNotification
1340
     * @param string|null $parseMode
1341
     * @param int|null $messageThreadId
1342
     * @param bool|null $protectContent
1343
     * @param bool|null $allowSendingWithoutReply
1344
     *
1345
     * @return Message
1346
     * @throws InvalidArgumentException
1347
     * @throws Exception
1348
     */
1349
    public function sendPhoto(
1350
        $chatId,
1351
        $photo,
1352
        $caption = null,
1353
        $replyToMessageId = null,
1354
        $replyMarkup = null,
1355
        $disableNotification = false,
1356
        $parseMode = null,
1357
        $messageThreadId = null,
1358
        $protectContent = null,
1359
        $allowSendingWithoutReply = null
1360
    ) {
1361
        return Message::fromResponse($this->call('sendPhoto', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1361
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendPhoto', [
Loading history...
1362
            'chat_id' => $chatId,
1363
            'photo' => $photo,
1364
            'caption' => $caption,
1365
            'message_thread_id' => $messageThreadId,
1366
            'reply_to_message_id' => $replyToMessageId,
1367
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1368
            'disable_notification' => (bool) $disableNotification,
1369
            'parse_mode' => $parseMode,
1370
            'protect_content' => (bool) $protectContent,
1371
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
1372
        ]));
1373
    }
1374
1375
    /**
1376
     * Use this method to send general files. On success, the sent Message is returned.
1377
     * Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future.
1378
     *
1379
     * @param int|string $chatId chat_id or @channel_name
1380
     * @param \CURLFile|\CURLStringFile|string $document
1381
     * @param string|null $caption
1382
     * @param int|null $replyToMessageId
1383
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1384
     * @param bool $disableNotification
1385
     * @param string|null $parseMode
1386
     * @param int|null $messageThreadId
1387
     * @param bool|null $protectContent
1388
     * @param bool|null $allowSendingWithoutReply
1389
     * @param \CURLFile|\CURLStringFile|string|null $thumbnail
1390
     *
1391
     * @return Message
1392
     * @throws InvalidArgumentException
1393
     * @throws Exception
1394
     */
1395
    public function sendDocument(
1396
        $chatId,
1397
        $document,
1398
        $caption = null,
1399
        $replyToMessageId = null,
1400
        $replyMarkup = null,
1401
        $disableNotification = false,
1402
        $parseMode = null,
1403
        $messageThreadId = null,
1404
        $protectContent = null,
1405
        $allowSendingWithoutReply = null,
1406
        $thumbnail = null
1407
    ) {
1408
        return Message::fromResponse($this->call('sendDocument', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1408
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendDocument', [
Loading history...
1409
            'chat_id' => $chatId,
1410
            'document' => $document,
1411
            'caption' => $caption,
1412
            'message_thread_id' => $messageThreadId,
1413
            'reply_to_message_id' => $replyToMessageId,
1414
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1415
            'disable_notification' => (bool) $disableNotification,
1416
            'parse_mode' => $parseMode,
1417
            'protect_content' => (bool) $protectContent,
1418
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
1419
            'thumbnail' => $thumbnail,
1420
        ]));
1421
    }
1422
1423
    /**
1424
     * Use this method to get basic info about a file and prepare it for downloading.
1425
     * For the moment, bots can download files of up to 20MB in size.
1426
     * On success, a File object is returned.
1427
     * The file can then be downloaded via the link https://api.telegram.org/file/bot<token>/<file_path>,
1428
     * where <file_path> is taken from the response.
1429
     * It is guaranteed that the link will be valid for at least 1 hour.
1430
     * When the link expires, a new one can be requested by calling getFile again.
1431
     *
1432
     * @param string $fileId
1433
     *
1434
     * @return File
1435
     * @throws InvalidArgumentException
1436
     * @throws Exception
1437
     */
1438
    public function getFile($fileId)
1439
    {
1440
        return File::fromResponse($this->call('getFile', ['file_id' => $fileId]));
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1440
        return File::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getFile', ['file_id' => $fileId]));
Loading history...
1441
    }
1442
1443
    /**
1444
     * Use this method to send answers to an inline query. On success, True is returned.
1445
     * No more than 50 results per query are allowed.
1446
     *
1447
     * @param string $inlineQueryId
1448
     * @param AbstractInlineQueryResult[] $results
1449
     * @param int $cacheTime
1450
     * @param bool $isPersonal
1451
     * @param string $nextOffset
1452
     * @param string $switchPmText
1453
     * @param string $switchPmParameter
1454
     *
1455
     * @return mixed
1456
     * @throws Exception
1457
     */
1458
    public function answerInlineQuery(
1459
        $inlineQueryId,
1460
        $results,
1461
        $cacheTime = 300,
1462
        $isPersonal = false,
1463
        $nextOffset = '',
1464
        $switchPmText = null,
1465
        $switchPmParameter = null
1466
    ) {
1467
        $results = array_map(
1468
            /**
1469
             * @param AbstractInlineQueryResult $item
1470
             * @return array
1471
             */
1472
            function ($item) {
1473
                /** @var array $array */
1474
                $array = $item->toJson(true);
1475
1476
                return $array;
1477
            },
1478
            $results
1479
        );
1480
1481
        return $this->call('answerInlineQuery', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1481
        return /** @scrutinizer ignore-deprecated */ $this->call('answerInlineQuery', [
Loading history...
1482
            'inline_query_id' => $inlineQueryId,
1483
            'results' => json_encode($results),
1484
            'cache_time' => $cacheTime,
1485
            'is_personal' => $isPersonal,
1486
            'next_offset' => $nextOffset,
1487
            'switch_pm_text' => $switchPmText,
1488
            'switch_pm_parameter' => $switchPmParameter,
1489
        ]);
1490
    }
1491
1492
    /**
1493
     * Use this method to kick a user from a group or a supergroup.
1494
     * In the case of supergroups, the user will not be able to return to the group
1495
     * on their own using invite links, etc., unless unbanned first.
1496
     * The bot must be an administrator in the group for this to work. Returns True on success.
1497
     *
1498
     * @param int|string $chatId Unique identifier for the target group
1499
     *                           or username of the target supergroup (in the format @supergroupusername)
1500
     * @param int $userId Unique identifier of the target user
1501
     * @param null|int $untilDate Date when the user will be unbanned, unix time.
1502
     *                            If user is banned for more than 366 days or less than 30 seconds from the current time
1503
     *                            they are considered to be banned forever
1504
     *
1505
     * @return bool
1506
     * @throws Exception
1507
     */
1508
    public function kickChatMember($chatId, $userId, $untilDate = null)
1509
    {
1510
        @trigger_error(sprintf('Method "%s::%s" is deprecated. Use "banChatMember"', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
1511
1512
        return $this->call('kickChatMember', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1512
        return /** @scrutinizer ignore-deprecated */ $this->call('kickChatMember', [
Loading history...
1513
            'chat_id' => $chatId,
1514
            'user_id' => $userId,
1515
            'until_date' => $untilDate
1516
        ]);
1517
    }
1518
1519
    /**
1520
     * Use this method to ban a user in a group, a supergroup or a channel. In the case of supergroups and channels,
1521
     * the user will not be able to return to the chat on their own using invite links, etc., unless unbanned first.
1522
     * The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights.
1523
     * Returns True on success.
1524
     *
1525
     * @param int|string $chatId Unique identifier for the target group or username of the
1526
     *                           target supergroup or channel (in the format @channelusername)
1527
     * @param int $userId Unique identifier of the target user
1528
     * @param null|int $untilDate Date when the user will be unbanned, unix time.
1529
     *                            If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever.
1530
     *                            Applied for supergroups and channels only.
1531
     * @param bool|null $revokeMessages Pass True to delete all messages from the chat for the user that is being removed.
1532
     *                                  If False, the user will be able to see messages in the group that were sent before the user was removed.
1533
     *                                  Always True for supergroups and channels.
1534
     *
1535
     * @return bool
1536
     * @throws Exception
1537
     */
1538
    public function banChatMember($chatId, $userId, $untilDate = null, $revokeMessages = null)
1539
    {
1540
        return $this->call('banChatMember', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1540
        return /** @scrutinizer ignore-deprecated */ $this->call('banChatMember', [
Loading history...
1541
            'chat_id' => $chatId,
1542
            'user_id' => $userId,
1543
            'until_date' => $untilDate,
1544
            'revoke_messages' => $revokeMessages,
1545
        ]);
1546
    }
1547
1548
    /**
1549
     * Use this method to unban a previously kicked user in a supergroup.
1550
     * The user will not return to the group automatically, but will be able to join via link, etc.
1551
     * The bot must be an administrator in the group for this to work. Returns True on success.
1552
     *
1553
     * @param int|string $chatId Unique identifier for the target group
1554
     *                           or username of the target supergroup (in the format @supergroupusername)
1555
     * @param int $userId Unique identifier of the target user
1556
     *
1557
     * @return bool
1558
     * @throws Exception
1559
     */
1560
    public function unbanChatMember($chatId, $userId)
1561
    {
1562
        return $this->call('unbanChatMember', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1562
        return /** @scrutinizer ignore-deprecated */ $this->call('unbanChatMember', [
Loading history...
1563
            'chat_id' => $chatId,
1564
            'user_id' => $userId,
1565
        ]);
1566
    }
1567
1568
    /**
1569
     * Use this method to send answers to callback queries sent from inline keyboards.
1570
     * The answer will be displayed to the user as a notification at the top of the chat screen or as an alert.
1571
     *
1572
     * @param string $callbackQueryId
1573
     * @param string|null $text
1574
     * @param bool $showAlert
1575
     * @param string|null $url
1576
     * @param int $cacheTime
1577
     *
1578
     * @return bool
1579
     * @throws Exception
1580
     */
1581
    public function answerCallbackQuery($callbackQueryId, $text = null, $showAlert = false, $url = null, $cacheTime = 0)
1582
    {
1583
        return $this->call('answerCallbackQuery', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1583
        return /** @scrutinizer ignore-deprecated */ $this->call('answerCallbackQuery', [
Loading history...
1584
            'callback_query_id' => $callbackQueryId,
1585
            'text' => $text,
1586
            'show_alert' => (bool) $showAlert,
1587
            'url' => $url,
1588
            'cache_time' => $cacheTime
1589
        ]);
1590
    }
1591
1592
    /**
1593
     * Use this method to change the list of the bot's commands. Returns True on success.
1594
     *
1595
     * @param ArrayOfBotCommand|BotCommand[] $commands
1596
     * @param string|null $scope
1597
     * @param string|null $languageCode
1598
     *
1599
     * @return mixed
1600
     * @throws Exception
1601
     * @throws HttpException
1602
     * @throws InvalidJsonException
1603
     */
1604
    public function setMyCommands($commands, $scope = null, $languageCode = null)
1605
    {
1606
        if (!$commands instanceof ArrayOfBotCommand) {
1607
            @trigger_error(sprintf('Passing array of BotCommand to "%s::%s" is deprecated. Use %s', __CLASS__, __METHOD__, ArrayOfBotCommand::class), \E_USER_DEPRECATED);
1608
            $commands = new ArrayOfBotCommand($commands);
1609
        }
1610
1611 9
        return $this->call('setMyCommands', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1611
        return /** @scrutinizer ignore-deprecated */ $this->call('setMyCommands', [
Loading history...
1612
            'commands' => $commands->toJson(),
1613 9
            'scope' => $scope,
1614 9
            'language_code' => $languageCode,
1615
        ]);
1616
    }
1617
1618
    /**
1619
     * Use this method to get the current list of the bot's commands. Requires no parameters.
1620
     * Returns Array of BotCommand on success.
1621
     *
1622
     * @return ArrayOfBotCommand
1623
     *
1624
     * @throws Exception
1625
     * @throws HttpException
1626
     * @throws InvalidJsonException
1627
     */
1628
    public function getMyCommands()
1629
    {
1630
        return ArrayOfBotCommand::fromResponse($this->call('getMyCommands'));
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1630
        return ArrayOfBotCommand::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getMyCommands'));
Loading history...
1631
    }
1632
1633
    /**
1634
     * Use this method to edit text messages sent by the bot or via the bot
1635
     * On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.
1636
     *
1637
     * @param int|string $chatId
1638
     * @param int $messageId
1639
     * @param string $text
1640
     * @param string $inlineMessageId
1641
     * @param string|null $parseMode
1642
     * @param bool $disablePreview
1643
     * @param InlineKeyboardMarkup|null $replyMarkup
1644
     *
1645
     * @return Message|true
1646
     * @throws Exception
1647
     */
1648
    public function editMessageText(
1649
        $chatId,
1650
        $messageId,
1651
        $text,
1652
        $parseMode = null,
1653
        $disablePreview = false,
1654
        $replyMarkup = null,
1655
        $inlineMessageId = null
1656
    ) {
1657
        $response = $this->call('editMessageText', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1657
        $response = /** @scrutinizer ignore-deprecated */ $this->call('editMessageText', [
Loading history...
1658
            'chat_id' => $chatId,
1659
            'message_id' => $messageId,
1660
            'text' => $text,
1661
            'inline_message_id' => $inlineMessageId,
1662
            'parse_mode' => $parseMode,
1663
            'disable_web_page_preview' => $disablePreview,
1664
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1665
        ]);
1666
        if ($response === true) {
1667
            return true;
1668
        }
1669
1670
        return Message::fromResponse($response);
1671
    }
1672
1673
    /**
1674
     * Use this method to edit text messages sent by the bot or via the bot
1675
     * On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.
1676
     *
1677
     * @param int|string $chatId
1678
     * @param int $messageId
1679
     * @param string|null $caption
1680
     * @param InlineKeyboardMarkup|null $replyMarkup
1681
     * @param string $inlineMessageId
1682
     * @param string|null $parseMode
1683
     *
1684
     * @return Message|true
1685
     * @throws InvalidArgumentException
1686
     * @throws Exception
1687
     */
1688
    public function editMessageCaption(
1689
        $chatId,
1690
        $messageId,
1691
        $caption = null,
1692
        $replyMarkup = null,
1693
        $inlineMessageId = null,
1694
        $parseMode = null
1695
    ) {
1696
        $response = $this->call('editMessageCaption', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1696
        $response = /** @scrutinizer ignore-deprecated */ $this->call('editMessageCaption', [
Loading history...
1697
            'chat_id' => $chatId,
1698
            'message_id' => $messageId,
1699
            'inline_message_id' => $inlineMessageId,
1700
            'caption' => $caption,
1701
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1702
            'parse_mode' => $parseMode
1703
        ]);
1704
        if ($response === true) {
1705
            return true;
1706
        }
1707
1708
        return Message::fromResponse($response);
1709
    }
1710
1711
    /**
1712
     * Use this method to edit animation, audio, document, photo, or video messages.
1713
     * If a message is a part of a message album, then it can be edited only to a photo or a video.
1714
     * Otherwise, message type can be changed arbitrarily.
1715
     * When inline message is edited, new file can't be uploaded.
1716
     * Use previously uploaded file via its file_id or specify a URL.
1717
     * On success, if the edited message was sent by the bot, the edited Message is returned, otherwise True is returned
1718
     *
1719
     * @param string $chatId
1720
     * @param string $messageId
1721
     * @param InputMedia $media
1722
     * @param string|null $inlineMessageId
1723
     * @param InlineKeyboardMarkup|null $replyMarkup
1724
     * @param array<string, \CURLFile|\CURLStringFile> $attachments Attachments to use in attach://<attachment>
1725
     *
1726
     * @return Message|true
1727
     *
1728
     * @throws Exception
1729
     * @throws HttpException
1730
     * @throws InvalidJsonException
1731
     */
1732
    public function editMessageMedia(
1733
        $chatId,
1734
        $messageId,
1735
        InputMedia $media,
1736
        $inlineMessageId = null,
1737
        $replyMarkup = null,
1738
        $attachments = []
1739
    ) {
1740
        $response = $this->call('editMessageMedia', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1740
        $response = /** @scrutinizer ignore-deprecated */ $this->call('editMessageMedia', [
Loading history...
1741
            'chat_id' => $chatId,
1742
            'message_id' => $messageId,
1743
            'inline_message_id' => $inlineMessageId,
1744
            'media' => $media->toJson(),
1745
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1746
        ] + $attachments);
1747
        if ($response === true) {
1748
            return true;
1749
        }
1750
1751
        return Message::fromResponse($response);
1752
    }
1753
1754
    /**
1755
     * Use this method to edit only the reply markup of messages sent by the bot or via the bot
1756
     * On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.
1757
     *
1758
     * @param int|string $chatId
1759
     * @param int $messageId
1760
     * @param InlineKeyboardMarkup|null $replyMarkup
1761
     * @param string $inlineMessageId
1762
     *
1763
     * @return Message|true
1764
     * @throws Exception
1765
     */
1766
    public function editMessageReplyMarkup(
1767
        $chatId,
1768
        $messageId,
1769
        $replyMarkup = null,
1770
        $inlineMessageId = null
1771
    ) {
1772
        $response = $this->call('editMessageReplyMarkup', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1772
        $response = /** @scrutinizer ignore-deprecated */ $this->call('editMessageReplyMarkup', [
Loading history...
1773
            'chat_id' => $chatId,
1774
            'message_id' => $messageId,
1775
            'inline_message_id' => $inlineMessageId,
1776
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1777
        ]);
1778
        if ($response === true) {
1779
            return true;
1780
        }
1781
1782
        return Message::fromResponse($response);
1783
    }
1784
1785
    /**
1786
     * Use this method to delete a message, including service messages, with the following limitations:
1787
     *  - A message can only be deleted if it was sent less than 48 hours ago.
1788
     *  - Bots can delete outgoing messages in groups and supergroups.
1789
     *  - Bots granted can_post_messages permissions can delete outgoing messages in channels.
1790
     *  - If the bot is an administrator of a group, it can delete any message there.
1791
     *  - If the bot has can_delete_messages permission in a supergroup or a channel, it can delete any message there.
1792
     *
1793
     * @param int|string $chatId
1794
     * @param int $messageId
1795
     *
1796
     * @return bool
1797
     * @throws Exception
1798
     */
1799
    public function deleteMessage($chatId, $messageId)
1800
    {
1801
        return $this->call('deleteMessage', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1801
        return /** @scrutinizer ignore-deprecated */ $this->call('deleteMessage', [
Loading history...
1802
            'chat_id' => $chatId,
1803
            'message_id' => $messageId,
1804
        ]);
1805
    }
1806
1807
    /**
1808
     * @deprecated
1809
     *
1810
     * @param Update $update
1811
     * @param string $eventName
1812
     *
1813
     * @throws Exception
1814
     *
1815
     * @return void
1816
     */
1817
    public function trackUpdate(Update $update, $eventName = 'Message')
1818
    {
1819
        @trigger_error(sprintf('Method "%s::%s" is deprecated', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
1820
1821
        if (!in_array($update->getUpdateId(), $this->trackedEvents)) {
0 ignored issues
show
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$trackedEvents has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1821
        if (!in_array($update->getUpdateId(), /** @scrutinizer ignore-deprecated */ $this->trackedEvents)) {
Loading history...
1822
            $message = $update->getMessage();
1823
            if (!$message) {
1824
                return;
1825
            }
1826
            $this->trackedEvents[] = $update->getUpdateId();
0 ignored issues
show
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$trackedEvents has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1826
            /** @scrutinizer ignore-deprecated */ $this->trackedEvents[] = $update->getUpdateId();
Loading history...
1827
1828
            $this->track($message, $eventName);
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::track() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1828
            /** @scrutinizer ignore-deprecated */ $this->track($message, $eventName);
Loading history...
1829
1830
            if (count($this->trackedEvents) > self::MAX_TRACKED_EVENTS) {
0 ignored issues
show
introduced by
The constant TelegramBot\Api\BotApi::MAX_TRACKED_EVENTS has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1830
            if (count($this->trackedEvents) > /** @scrutinizer ignore-deprecated */ self::MAX_TRACKED_EVENTS) {
Loading history...
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$trackedEvents has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1830
            if (count(/** @scrutinizer ignore-deprecated */ $this->trackedEvents) > self::MAX_TRACKED_EVENTS) {
Loading history...
1831
                $this->trackedEvents = array_slice($this->trackedEvents, (int) round(self::MAX_TRACKED_EVENTS / 4));
0 ignored issues
show
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$trackedEvents has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1831
                $this->trackedEvents = array_slice(/** @scrutinizer ignore-deprecated */ $this->trackedEvents, (int) round(self::MAX_TRACKED_EVENTS / 4));
Loading history...
introduced by
The constant TelegramBot\Api\BotApi::MAX_TRACKED_EVENTS has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1831
                $this->trackedEvents = array_slice($this->trackedEvents, (int) round(/** @scrutinizer ignore-deprecated */ self::MAX_TRACKED_EVENTS / 4));
Loading history...
1832
            }
1833
        }
1834
    }
1835
1836
    /**
1837
     * @deprecated
1838
     *
1839
     * Wrapper for tracker
1840
     *
1841
     * @param Message $message
1842
     * @param string $eventName
1843
     *
1844
     * @throws Exception
1845
     *
1846
     * @return void
1847
     */
1848
    public function track(Message $message, $eventName = 'Message')
1849
    {
1850
        @trigger_error(sprintf('Method "%s::%s" is deprecated', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
1851
1852
        if ($this->tracker instanceof Botan) {
0 ignored issues
show
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$tracker has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1852
        if (/** @scrutinizer ignore-deprecated */ $this->tracker instanceof Botan) {
Loading history...
1853
            $this->tracker->track($message, $eventName);
0 ignored issues
show
Deprecated Code introduced by
The property TelegramBot\Api\BotApi::$tracker has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1853
            /** @scrutinizer ignore-deprecated */ $this->tracker->track($message, $eventName);
Loading history...
1854
        }
1855
    }
1856
1857
    /**
1858
     * Use this method to send invoices. On success, the sent Message is returned.
1859
     *
1860
     * @param int|string $chatId
1861
     * @param string $title
1862
     * @param string $description
1863
     * @param string $payload
1864
     * @param string $providerToken
1865
     * @param string $startParameter
1866
     * @param string $currency
1867
     * @param array $prices
1868
     * @param bool $isFlexible
1869
     * @param string|null $photoUrl
1870
     * @param int|null $photoSize
1871
     * @param int|null $photoWidth
1872
     * @param int|null $photoHeight
1873
     * @param bool $needName
1874
     * @param bool $needPhoneNumber
1875
     * @param bool $needEmail
1876
     * @param bool $needShippingAddress
1877
     * @param int|null $replyToMessageId
1878
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
1879
     * @param bool $disableNotification
1880
     * @param string|null $providerData
1881
     * @param bool $sendPhoneNumberToProvider
1882
     * @param bool $sendEmailToProvider
1883
     * @param int|null $messageThreadId
1884
     * @param bool|null $protectContent
1885
     * @param bool|null $allowSendingWithoutReply
1886
     *
1887
     * @return Message
1888
     * @throws Exception
1889
     */
1890
    public function sendInvoice(
1891
        $chatId,
1892
        $title,
1893
        $description,
1894
        $payload,
1895
        $providerToken,
1896
        $startParameter,
1897
        $currency,
1898
        $prices,
1899
        $isFlexible = false,
1900
        $photoUrl = null,
1901
        $photoSize = null,
1902
        $photoWidth = null,
1903
        $photoHeight = null,
1904
        $needName = false,
1905
        $needPhoneNumber = false,
1906
        $needEmail = false,
1907
        $needShippingAddress = false,
1908
        $replyToMessageId = null,
1909
        $replyMarkup = null,
1910
        $disableNotification = false,
1911
        $providerData = null,
1912
        $sendPhoneNumberToProvider = false,
1913
        $sendEmailToProvider = false,
1914
        $messageThreadId = null,
1915
        $protectContent = null,
1916
        $allowSendingWithoutReply = null
1917
    ) {
1918
        return Message::fromResponse($this->call('sendInvoice', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1918
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendInvoice', [
Loading history...
1919
            'chat_id' => $chatId,
1920
            'title' => $title,
1921
            'description' => $description,
1922
            'payload' => $payload,
1923
            'provider_token' => $providerToken,
1924
            'start_parameter' => $startParameter,
1925
            'currency' => $currency,
1926
            'prices' => json_encode($prices),
1927
            'is_flexible' => $isFlexible,
1928
            'photo_url' => $photoUrl,
1929
            'photo_size' => $photoSize,
1930
            'photo_width' => $photoWidth,
1931
            'photo_height' => $photoHeight,
1932
            'need_name' => $needName,
1933
            'need_phone_number' => $needPhoneNumber,
1934
            'need_email' => $needEmail,
1935
            'need_shipping_address' => $needShippingAddress,
1936
            'message_thread_id' => $messageThreadId,
1937
            'reply_to_message_id' => $replyToMessageId,
1938
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
1939
            'disable_notification' => (bool) $disableNotification,
1940
            'provider_data' => $providerData,
1941
            'send_phone_number_to_provider' => (bool) $sendPhoneNumberToProvider,
1942
            'send_email_to_provider' => (bool) $sendEmailToProvider,
1943
            'protect_content' => (bool) $protectContent,
1944
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
1945
        ]));
1946
    }
1947
1948
    /**
1949
     * If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the Bot API
1950
     * will send an Update with a shipping_query field to the bot. Use this method to reply to shipping queries.
1951
     * On success, True is returned.
1952
     *
1953
     * @param string $shippingQueryId
1954
     * @param bool $ok
1955
     * @param array $shippingOptions
1956
     * @param null|string $errorMessage
1957
     *
1958
     * @return bool
1959
     * @throws Exception
1960
     */
1961
    public function answerShippingQuery($shippingQueryId, $ok = true, $shippingOptions = [], $errorMessage = null)
1962
    {
1963
        return $this->call('answerShippingQuery', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1963
        return /** @scrutinizer ignore-deprecated */ $this->call('answerShippingQuery', [
Loading history...
1964
            'shipping_query_id' => $shippingQueryId,
1965
            'ok' => (bool) $ok,
1966
            'shipping_options' => json_encode($shippingOptions),
1967
            'error_message' => $errorMessage
1968
        ]);
1969
    }
1970
1971
    /**
1972
     * Use this method to respond to such pre-checkout queries. On success, True is returned.
1973
     * Note: The Bot API must receive an answer within 10 seconds after the pre-checkout query was sent.
1974
     *
1975
     * @param string $preCheckoutQueryId
1976
     * @param bool $ok
1977
     * @param null|string $errorMessage
1978
     *
1979
     * @return bool
1980
     * @throws Exception
1981
     */
1982
    public function answerPreCheckoutQuery($preCheckoutQueryId, $ok = true, $errorMessage = null)
1983
    {
1984
        return $this->call('answerPreCheckoutQuery', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

1984
        return /** @scrutinizer ignore-deprecated */ $this->call('answerPreCheckoutQuery', [
Loading history...
1985
            'pre_checkout_query_id' => $preCheckoutQueryId,
1986
            'ok' => (bool) $ok,
1987
            'error_message' => $errorMessage
1988
        ]);
1989
    }
1990
1991
    /**
1992
     * Use this method to restrict a user in a supergroup.
1993
     * The bot must be an administrator in the supergroup for this to work and must have the appropriate admin rights.
1994
     * Pass True for all boolean parameters to lift restrictions from a user.
1995
     *
1996
     * @param string|int $chatId Unique identifier for the target chat or username of the target supergroup
1997
     *                           (in the format @supergroupusername)
1998
     * @param int $userId Unique identifier of the target user
1999
     * @param null|integer $untilDate Date when restrictions will be lifted for the user, unix time.
2000
     *                                If user is restricted for more than 366 days or less than 30 seconds from the current time,
2001
     *                                they are considered to be restricted forever
2002
     * @param bool $canSendMessages Pass True, if the user can send text messages, contacts, locations and venues
2003
     * @param bool $canSendMediaMessages No Pass True, if the user can send audios, documents, photos, videos,
2004
     *                                   video notes and voice notes, implies can_send_messages
2005
     * @param bool $canSendOtherMessages Pass True, if the user can send animations, games, stickers and
2006
     *                                   use inline bots, implies can_send_media_messages
2007
     * @param bool $canAddWebPagePreviews Pass True, if the user may add web page previews to their messages,
2008
     *                                    implies can_send_media_messages
2009
     *
2010
     * @return bool
2011
     * @throws Exception
2012
     */
2013
    public function restrictChatMember(
2014
        $chatId,
2015
        $userId,
2016
        $untilDate = null,
2017
        $canSendMessages = false,
2018
        $canSendMediaMessages = false,
2019
        $canSendOtherMessages = false,
2020
        $canAddWebPagePreviews = false
2021
    ) {
2022
        return $this->call('restrictChatMember', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2022
        return /** @scrutinizer ignore-deprecated */ $this->call('restrictChatMember', [
Loading history...
2023
            'chat_id' => $chatId,
2024
            'user_id' => $userId,
2025
            'until_date' => $untilDate,
2026
            'can_send_messages' => $canSendMessages,
2027
            'can_send_media_messages' => $canSendMediaMessages,
2028
            'can_send_other_messages' => $canSendOtherMessages,
2029
            'can_add_web_page_previews' => $canAddWebPagePreviews
2030
        ]);
2031
    }
2032
2033
    /**
2034
     * Use this method to promote or demote a user in a supergroup or a channel.
2035
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2036
     * Pass False for all boolean parameters to demote a user.
2037
     *
2038
     * @param string|int $chatId Unique identifier for the target chat or username of the target supergroup
2039
     *                           (in the format @supergroupusername)
2040
     * @param int $userId Unique identifier of the target user
2041
     * @param bool $canChangeInfo Pass True, if the administrator can change chat title, photo and other settings
2042
     * @param bool $canPostMessages Pass True, if the administrator can create channel posts, channels only
2043
     * @param bool $canEditMessages Pass True, if the administrator can edit messages of other users, channels only
2044
     * @param bool $canDeleteMessages Pass True, if the administrator can delete messages of other users
2045
     * @param bool $canInviteUsers Pass True, if the administrator can invite new users to the chat
2046
     * @param bool $canRestrictMembers Pass True, if the administrator can restrict, ban or unban chat members
2047
     * @param bool $canPinMessages Pass True, if the administrator can pin messages, supergroups only
2048
     * @param bool $canPromoteMembers Pass True, if the administrator can add new administrators with a subset of his
2049
     *                                own privileges or demote administrators that he has promoted,directly or
2050
     *                                indirectly (promoted by administrators that were appointed by him)
2051
     * @param bool $canManageTopics Pass True if the user is allowed to create, rename, close, and reopen forum topics, supergroups only
2052
     * @param bool $isAnonymous Pass True if the administrator's presence in the chat is hidden
2053
     * @return bool
2054
     *
2055
     * @throws Exception
2056
     * @throws HttpException
2057
     * @throws InvalidJsonException
2058
     */
2059
    public function promoteChatMember(
2060
        $chatId,
2061
        $userId,
2062
        $canChangeInfo = true,
2063
        $canPostMessages = true,
2064
        $canEditMessages = true,
2065
        $canDeleteMessages = true,
2066
        $canInviteUsers = true,
2067
        $canRestrictMembers = true,
2068
        $canPinMessages = true,
2069
        $canPromoteMembers = true,
2070
        $canManageTopics = true,
2071
        $isAnonymous = false
2072
    ) {
2073
        return $this->call('promoteChatMember', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2073
        return /** @scrutinizer ignore-deprecated */ $this->call('promoteChatMember', [
Loading history...
2074
            'chat_id' => $chatId,
2075
            'user_id' => $userId,
2076
            'is_anonymous' => $isAnonymous,
2077
            'can_change_info' => $canChangeInfo,
2078
            'can_post_messages' => $canPostMessages,
2079
            'can_edit_messages' => $canEditMessages,
2080
            'can_delete_messages' => $canDeleteMessages,
2081
            'can_invite_users' => $canInviteUsers,
2082
            'can_restrict_members' => $canRestrictMembers,
2083
            'can_pin_messages' => $canPinMessages,
2084
            'can_promote_members' => $canPromoteMembers,
2085
            'can_manage_topics' => $canManageTopics
2086
        ]);
2087
    }
2088
2089
    /**
2090
     * Use this method to export an invite link to a supergroup or a channel.
2091
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2092
     *
2093
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2094
     *                           (in the format @channelusername)
2095
     * @return string
2096
     * @throws Exception
2097
     */
2098
    public function exportChatInviteLink($chatId)
2099
    {
2100
        return $this->call('exportChatInviteLink', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2100
        return /** @scrutinizer ignore-deprecated */ $this->call('exportChatInviteLink', [
Loading history...
2101
            'chat_id' => $chatId
2102
        ]);
2103
    }
2104
2105
    /**
2106
     * Use this method to create an additional invite link for a chat. The bot must be an administrator in the chat
2107
     * for this to work and must have the appropriate administrator rights.
2108
     * The link can be revoked using the method revokeChatInviteLink.
2109
     * Returns the new invite link as ChatInviteLink object.
2110
     *
2111
     * @param int|string $chatId Unique identifier for the target chat or
2112
     *                           username of the target channel (in the format @channelusername)
2113
     * @param string|null $name Invite link name; 0-32 characters
2114
     * @param int|null $expireDate Point in time (Unix timestamp) when the link will expire
2115
     * @param int|null $memberLimit The maximum number of users that can be members of the chat simultaneously
2116
     *                              after joining the chat via this invite link; 1-99999
2117
     * @param bool|null $createsJoinRequest True, if users joining the chat via the link need to be approved by chat administrators.
2118
     *                                      If True, member_limit can't be specified
2119
     * @return ChatInviteLink
2120
     * @throws Exception
2121
     */
2122
    public function createChatInviteLink($chatId, $name = null, $expireDate = null, $memberLimit = null, $createsJoinRequest = null)
2123
    {
2124
        return ChatInviteLink::fromResponse($this->call('createChatInviteLink', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2124
        return ChatInviteLink::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('createChatInviteLink', [
Loading history...
2125
            'chat_id' => $chatId,
2126
            'name' => $name,
2127
            'expire_date' => $expireDate,
2128
            'member_limit' => $memberLimit,
2129
            'creates_join_request' => $createsJoinRequest,
2130
        ]));
2131
    }
2132
2133
    /**
2134
     * Use this method to edit a non-primary invite link created by the bot.
2135
     * The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights.
2136
     * Returns the edited invite link as a ChatInviteLink object.
2137
     *
2138
     * @param int|string $chatId Unique identifier for the target chat or
2139
     *                           username of the target channel (in the format @channelusername)
2140
     * @param string $inviteLink The invite link to edit
2141
     * @param string|null $name Invite link name; 0-32 characters
2142
     * @param int|null $expireDate Point in time (Unix timestamp) when the link will expire
2143
     * @param int|null $memberLimit The maximum number of users that can be members of the chat simultaneously
2144
     *                              after joining the chat via this invite link; 1-99999
2145
     * @param bool|null $createsJoinRequest True, if users joining the chat via the link need to be approved by chat administrators.
2146
     *                                      If True, member_limit can't be specified
2147
     * @return ChatInviteLink
2148
     * @throws Exception
2149
     */
2150
    public function editChatInviteLink($chatId, $inviteLink, $name = null, $expireDate = null, $memberLimit = null, $createsJoinRequest = null)
2151
    {
2152
        return ChatInviteLink::fromResponse($this->call('editChatInviteLink', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2152
        return ChatInviteLink::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('editChatInviteLink', [
Loading history...
2153
            'chat_id' => $chatId,
2154
            'invite_link' => $inviteLink,
2155
            'name' => $name,
2156
            'expire_date' => $expireDate,
2157
            'member_limit' => $memberLimit,
2158
            'creates_join_request' => $createsJoinRequest,
2159
        ]));
2160
    }
2161
2162
    /**
2163
     * Use this method to revoke an invite link created by the bot.
2164
     * If the primary link is revoked, a new link is automatically generated.
2165
     * The bot must be an administrator in the chat for this to work and must have the appropriate administrator rights.
2166
     * Returns the revoked invite link as ChatInviteLink object.
2167
     *
2168
     * @param int|string $chatId Unique identifier for the target chat or
2169
     *                           username of the target channel (in the format @channelusername)
2170
     * @param string $inviteLink The invite link to edit
2171
     * @return ChatInviteLink
2172
     * @throws Exception
2173
     */
2174
    public function revokeChatInviteLink($chatId, $inviteLink)
2175
    {
2176
        return ChatInviteLink::fromResponse($this->call('revokeChatInviteLink', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2176
        return ChatInviteLink::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('revokeChatInviteLink', [
Loading history...
2177
            'chat_id' => $chatId,
2178
            'invite_link' => $inviteLink,
2179
        ]));
2180
    }
2181
2182
    /**
2183
     * Use this method to approve a chat join request. The bot must be an administrator in the chat for this to work and
2184
     * must have the can_invite_users administrator right. Returns True on success.
2185
     *
2186
     * @param int|string $chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername)
2187
     * @param int $userId Unique identifier of the target user
2188
     * @return bool
2189
     * @throws Exception
2190
     */
2191
    public function approveChatJoinRequest($chatId, $userId)
2192
    {
2193
        return $this->call('approveChatJoinRequest', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2193
        return /** @scrutinizer ignore-deprecated */ $this->call('approveChatJoinRequest', [
Loading history...
2194
            'chat_id' => $chatId,
2195
            'user_id' => $userId,
2196
        ]);
2197
    }
2198
2199
    /**
2200
     * Use this method to decline a chat join request. The bot must be an administrator in the chat for this to work and
2201
     * must have the can_invite_users administrator right. Returns True on success.
2202
     *
2203
     * @param int|string $chatId Unique identifier for the target chat or username of the target channel (in the format @channelusername)
2204
     * @param int $userId Unique identifier of the target user
2205
     * @return bool
2206
     * @throws Exception
2207
     */
2208
    public function declineChatJoinRequest($chatId, $userId)
2209
    {
2210
        return $this->call('declineChatJoinRequest', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2210
        return /** @scrutinizer ignore-deprecated */ $this->call('declineChatJoinRequest', [
Loading history...
2211
            'chat_id' => $chatId,
2212
            'user_id' => $userId,
2213
        ]);
2214
    }
2215
2216
    /**
2217
     * Use this method to set a new profile photo for the chat. Photos can't be changed for private chats.
2218
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2219
     *
2220
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2221
     *                           (in the format @channelusername)
2222
     * @param \CURLFile|string $photo New chat photo, uploaded using multipart/form-data
2223
     *
2224
     * @return bool
2225
     * @throws Exception
2226
     */
2227
    public function setChatPhoto($chatId, $photo)
2228
    {
2229
        return $this->call('setChatPhoto', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2229
        return /** @scrutinizer ignore-deprecated */ $this->call('setChatPhoto', [
Loading history...
2230
            'chat_id' => $chatId,
2231
            'photo' => $photo
2232
        ]);
2233
    }
2234
2235
    /**
2236
     * Use this method to delete a chat photo. Photos can't be changed for private chats.
2237
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2238
     *
2239
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2240
     *                           (in the format @channelusername)
2241
     *
2242
     * @return bool
2243
     * @throws Exception
2244
     */
2245
    public function deleteChatPhoto($chatId)
2246
    {
2247
        return $this->call('deleteChatPhoto', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2247
        return /** @scrutinizer ignore-deprecated */ $this->call('deleteChatPhoto', [
Loading history...
2248
            'chat_id' => $chatId
2249
        ]);
2250
    }
2251
2252
    /**
2253
     * Use this method to change the title of a chat. Titles can't be changed for private chats.
2254
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2255
     *
2256
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2257
     *                           (in the format @channelusername)
2258
     * @param string $title New chat title, 1-255 characters
2259
     *
2260
     * @return bool
2261
     * @throws Exception
2262
     */
2263
    public function setChatTitle($chatId, $title)
2264
    {
2265
        return $this->call('setChatTitle', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2265
        return /** @scrutinizer ignore-deprecated */ $this->call('setChatTitle', [
Loading history...
2266
            'chat_id' => $chatId,
2267
            'title' => $title
2268
        ]);
2269
    }
2270
2271
    /**
2272
     * Use this method to change the description of a supergroup or a channel.
2273
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2274
     *
2275
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2276
     *                           (in the format @channelusername)
2277
     * @param string|null $description New chat description, 0-255 characters
2278
     *
2279
     * @return bool
2280
     * @throws Exception
2281
     */
2282
    public function setChatDescription($chatId, $description = null)
2283
    {
2284
        return $this->call('setChatDescription', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2284
        return /** @scrutinizer ignore-deprecated */ $this->call('setChatDescription', [
Loading history...
2285
            'chat_id' => $chatId,
2286
            'title' => $description
2287
        ]);
2288
    }
2289
2290
    /**
2291
     * Use this method to pin a message in a supergroup.
2292
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2293
     *
2294
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2295
     *                           (in the format @channelusername)
2296
     * @param int $messageId Identifier of a message to pin
2297
     * @param bool $disableNotification
2298
     *
2299
     * @return bool
2300
     * @throws Exception
2301
     */
2302
    public function pinChatMessage($chatId, $messageId, $disableNotification = false)
2303
    {
2304
        return $this->call('pinChatMessage', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2304
        return /** @scrutinizer ignore-deprecated */ $this->call('pinChatMessage', [
Loading history...
2305
            'chat_id' => $chatId,
2306
            'message_id' => $messageId,
2307
            'disable_notification' => $disableNotification
2308
        ]);
2309
    }
2310
2311
    /**
2312
     * Use this method to unpin a message in a supergroup chat.
2313
     * The bot must be an administrator in the chat for this to work and must have the appropriate admin rights.
2314
     *
2315
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2316
     *                           (in the format @channelusername)
2317
     * @param int|null $messageId Identifier of a message to pin (optional)
2318
     *
2319
     * @return bool
2320
     * @throws Exception
2321
     */
2322
    public function unpinChatMessage($chatId, $messageId = null)
2323
    {
2324
        return $this->call('unpinChatMessage', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2324
        return /** @scrutinizer ignore-deprecated */ $this->call('unpinChatMessage', [
Loading history...
2325
            'chat_id' => $chatId,
2326
            'message_id' => $messageId,
2327
        ]);
2328
    }
2329
2330
    /**
2331
     * Use this method to get up to date information about the chat
2332
     * (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.).
2333
     *
2334
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2335
     *                           (in the format @channelusername)
2336
     *
2337
     * @return Chat
2338
     * @throws Exception
2339
     */
2340
    public function getChat($chatId)
2341
    {
2342
        return Chat::fromResponse($this->call('getChat', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2342
        return Chat::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getChat', [
Loading history...
2343
            'chat_id' => $chatId
2344
        ]));
2345
    }
2346
2347
    /**
2348
     * Use this method to get information about a member of a chat.
2349
     *
2350
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2351
     *                           (in the format @channelusername)
2352
     * @param int $userId
2353
     *
2354
     * @return ChatMember
2355
     * @throws Exception
2356
     */
2357
    public function getChatMember($chatId, $userId)
2358
    {
2359
        return ChatMember::fromResponse($this->call('getChatMember', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2359
        return ChatMember::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getChatMember', [
Loading history...
2360
            'chat_id' => $chatId,
2361
            'user_id' => $userId
2362
        ]));
2363
    }
2364
2365
    /**
2366
     * Use this method for your bot to leave a group, supergroup or channel.
2367
     *
2368
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2369
     *                           (in the format @channelusername)
2370
     *
2371
     * @return bool
2372
     * @throws Exception
2373
     */
2374
    public function leaveChat($chatId)
2375
    {
2376
        return $this->call('leaveChat', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2376
        return /** @scrutinizer ignore-deprecated */ $this->call('leaveChat', [
Loading history...
2377
            'chat_id' => $chatId
2378
        ]);
2379
    }
2380
2381
    /**
2382
     * Use this method to get the number of members in a chat.
2383
     *
2384
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2385
     *                           (in the format @channelusername)
2386
     *
2387
     * @return int
2388
     * @throws Exception
2389
     */
2390
    public function getChatMembersCount($chatId)
2391
    {
2392
        @trigger_error(sprintf('Method "%s::%s" is deprecated. Use "getChatMemberCount"', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
2393
2394
        return $this->call('getChatMembersCount', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2394
        return /** @scrutinizer ignore-deprecated */ $this->call('getChatMembersCount', [
Loading history...
2395
            'chat_id' => $chatId
2396
        ]);
2397
    }
2398
2399
    /**
2400
     * Use this method to get the number of members in a chat. Returns Int on success.
2401
     *
2402
     * @param string|int $chatId Unique identifier for the target chat or username of the target supergroup or channel
2403
     *                           (in the format @channelusername)
2404
     *
2405
     * @return int
2406
     * @throws Exception
2407
     */
2408
    public function getChatMemberCount($chatId)
2409
    {
2410
        return $this->call('getChatMemberCount', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2410
        return /** @scrutinizer ignore-deprecated */ $this->call('getChatMemberCount', [
Loading history...
2411
            'chat_id' => $chatId
2412
        ]);
2413
    }
2414
2415
    /**
2416
     * Use this method to get a list of administrators in a chat.
2417
     *
2418
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2419
     *                           (in the format @channelusername)
2420
     *
2421
     * @return ChatMember[]
2422
     * @throws InvalidArgumentException
2423
     * @throws Exception
2424
     */
2425
    public function getChatAdministrators($chatId)
2426
    {
2427
        return ArrayOfChatMemberEntity::fromResponse(
2428
            $this->call(
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2428
            /** @scrutinizer ignore-deprecated */ $this->call(
Loading history...
2429
                'getChatAdministrators',
2430
                [
2431
                    'chat_id' => $chatId
2432
                ]
2433
            )
2434
        );
2435
    }
2436
2437
    /**
2438
     * As of v.4.0, Telegram clients support rounded square mp4 videos of up to 1 minute long.
2439
     * Use this method to send video messages.
2440
     * On success, the sent Message is returned.
2441
     *
2442
     * @param int|string $chatId chat_id or @channel_name
2443
     * @param \CURLFile|string $videoNote
2444
     * @param int|null $duration
2445
     * @param int|null $length
2446
     * @param int|null $replyToMessageId
2447
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup
2448
     * @param bool $disableNotification
2449
     * @param int|null $messageThreadId
2450
     * @param bool|null $protectContent
2451
     * @param bool|null $allowSendingWithoutReply
2452
     * @param \CURLFile|\CURLStringFile|string|null $thumbnail
2453
     *
2454
     * @return Message
2455
     * @throws InvalidArgumentException
2456
     * @throws Exception
2457
     */
2458
    public function sendVideoNote(
2459
        $chatId,
2460
        $videoNote,
2461
        $duration = null,
2462
        $length = null,
2463
        $replyToMessageId = null,
2464
        $replyMarkup = null,
2465
        $disableNotification = false,
2466
        $messageThreadId = null,
2467
        $protectContent = null,
2468
        $allowSendingWithoutReply = null,
2469
        $thumbnail = null
2470
    ) {
2471
        return Message::fromResponse($this->call('sendVideoNote', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2471
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendVideoNote', [
Loading history...
2472
            'chat_id' => $chatId,
2473
            'video_note' => $videoNote,
2474
            'duration' => $duration,
2475
            'length' => $length,
2476
            'message_thread_id' => $messageThreadId,
2477
            'reply_to_message_id' => $replyToMessageId,
2478
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
2479
            'disable_notification' => (bool) $disableNotification,
2480
            'protect_content' => (bool) $protectContent,
2481
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
2482
            'thumbnail' => $thumbnail,
2483
        ]));
2484
    }
2485
2486
    /**
2487
     * Use this method to send a group of photos or videos as an album.
2488
     * On success, the sent \TelegramBot\Api\Types\Message is returned.
2489
     *
2490
     * @param int|string $chatId
2491
     * @param ArrayOfInputMedia $media
2492
     * @param bool $disableNotification
2493
     * @param int|null $replyToMessageId
2494
     * @param int|null $messageThreadId
2495
     * @param bool|null $protectContent
2496
     * @param bool|null $allowSendingWithoutReply
2497
     * @param array<string, \CURLFile|\CURLStringFile> $attachments Attachments to use in attach://<attachment>
2498
     *
2499
     * @return Message[]
2500
     * @throws Exception
2501
     */
2502
    public function sendMediaGroup(
2503
        $chatId,
2504
        $media,
2505
        $disableNotification = false,
2506
        $replyToMessageId = null,
2507
        $messageThreadId = null,
2508
        $protectContent = null,
2509
        $allowSendingWithoutReply = null,
2510
        $attachments = []
2511
    ) {
2512
        return ArrayOfMessages::fromResponse($this->call('sendMediaGroup', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2512
        return ArrayOfMessages::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendMediaGroup', [
Loading history...
2513
            'chat_id' => $chatId,
2514
            'media' => $media->toJson(),
2515
            'message_thread_id' => $messageThreadId,
2516
            'reply_to_message_id' => (int) $replyToMessageId,
2517
            'disable_notification' => (bool) $disableNotification,
2518
            'protect_content' => (bool) $protectContent,
2519
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
2520
        ] + $attachments));
2521
    }
2522
2523
    /**
2524
     * Use this method to send a native poll. A native poll can't be sent to a private chat.
2525
     * On success, the sent \TelegramBot\Api\Types\Message is returned.
2526
     *
2527
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2528
     *                           (in the format @channelusername)
2529
     * @param string $question Poll question, 1-255 characters
2530
     * @param array $options A JSON-serialized list of answer options, 2-10 strings 1-100 characters each
2531
     * @param bool $isAnonymous True, if the poll needs to be anonymous, defaults to True
2532
     * @param string|null $type Poll type, “quiz” or “regular”, defaults to “regular”
2533
     * @param bool $allowsMultipleAnswers True, if the poll allows multiple answers,
2534
     *                                    ignored for polls in quiz mode, defaults to False
2535
     * @param string|null $correctOptionId 0-based identifier of the correct answer option, required for polls in quiz mode
2536
     * @param bool $isClosed Pass True, if the poll needs to be immediately closed. This can be useful for poll preview.
2537
     * @param bool $disableNotification Sends the message silently. Users will receive a notification with no sound.
2538
     * @param int|null $replyToMessageId If the message is a reply, ID of the original message
2539
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup Additional interface options. A JSON-serialized object for an inline keyboard,
2540
     *                                                                                                  custom reply keyboard, instructions to remove reply
2541
     *                                                                                                  keyboard or to force a reply from the user.
2542
     * @param int|null $messageThreadId Unique identifier for the target message thread (topic) of the forum; for forum supergroups only
2543
     * @param bool|null $protectContent
2544
     * @param bool|null $allowSendingWithoutReply
2545
     *
2546
     * @return Message
2547
     * @throws Exception
2548
     * @throws HttpException
2549
     * @throws InvalidJsonException
2550
     */
2551
    public function sendPoll(
2552
        $chatId,
2553
        $question,
2554
        $options,
2555
        $isAnonymous = false,
2556
        $type = null,
2557
        $allowsMultipleAnswers = false,
2558
        $correctOptionId = null,
2559
        $isClosed = false,
2560
        $disableNotification = false,
2561
        $replyToMessageId = null,
2562
        $replyMarkup = null,
2563
        $messageThreadId = null,
2564
        $protectContent = null,
2565
        $allowSendingWithoutReply = null
2566
    ) {
2567
        return Message::fromResponse($this->call('sendPoll', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2567
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendPoll', [
Loading history...
2568
            'chat_id' => $chatId,
2569
            'question' => $question,
2570
            'options' => json_encode($options),
2571
            'is_anonymous' => (bool) $isAnonymous,
2572
            'type' => (string) $type,
2573
            'allows_multiple_answers' => (bool) $allowsMultipleAnswers,
2574
            'correct_option_id' => (int) $correctOptionId,
2575
            'is_closed' => (bool) $isClosed,
2576
            'disable_notification' => (bool) $disableNotification,
2577
            'message_thread_id' => $messageThreadId,
2578
            'reply_to_message_id' => (int) $replyToMessageId,
2579
            'reply_markup' => $replyMarkup === null ? $replyMarkup : $replyMarkup->toJson(),
2580
            'protect_content' => (bool) $protectContent,
2581
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
2582
        ]));
2583
    }
2584
2585
    /**
2586
     * Use this method to send a dice, which will have a random value from 1 to 6.
2587
     * On success, the sent Message is returned. (Yes, we're aware of the “proper” singular of die.
2588
     * But it's awkward, and we decided to help it change. One dice at a time!)
2589
     *
2590
     * @param string|int $chatId Unique identifier for the target chat or username of the target channel
2591
     *                           (in the format @channelusername)
2592
     * @param string $emoji Emoji on which the dice throw animation is based. Currently, must be one of “🎲”,
2593
     *                      “🎯”, “🏀”, “⚽”, or “🎰”. Dice can have values 1-6 for “🎲” and “🎯”, values 1-5 for “🏀” and “⚽”, and
2594
     *                      values 1-64 for “🎰”. Defaults to “🎲
2595
     * @param bool $disableNotification Sends the message silently. Users will receive a notification with no sound.
2596
     * @param string|null $replyToMessageId If the message is a reply, ID of the original message
2597
     * @param bool $allowSendingWithoutReply Pass True, if the message should be sent even if the specified replied-to
2598
     *                                       message is not found,
2599
     * @param InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply|null $replyMarkup Additional interface options. A JSON-serialized object for an inline keyboard,
2600
     *                                                                                                  custom reply keyboard, instructions to remove reply
2601
     *                                                                                                  keyboard or to force a reply from the user.
2602
     * @param int|null $messageThreadId
2603
     * @param bool|null $protectContent
2604
     *
2605
     * @return Message
2606
     * @throws Exception
2607
     * @throws HttpException
2608
     * @throws InvalidJsonException
2609
     */
2610
    public function sendDice(
2611
        $chatId,
2612
        $emoji,
2613
        $disableNotification = false,
2614
        $replyToMessageId = null,
2615
        $allowSendingWithoutReply = false,
2616
        $replyMarkup = null,
2617
        $messageThreadId = null,
2618
        $protectContent = null
2619
    ) {
2620
        return Message::fromResponse($this->call('sendDice', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2620
        return Message::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('sendDice', [
Loading history...
2621
            'chat_id' => $chatId,
2622
            'emoji' => $emoji,
2623
            'disable_notification' => (bool) $disableNotification,
2624
            'message_thread_id' => $messageThreadId,
2625
            'reply_to_message_id' => (int) $replyToMessageId,
2626
            'allow_sending_without_reply' => (bool) $allowSendingWithoutReply,
2627
            'reply_markup' => $replyMarkup === null ? $replyMarkup : $replyMarkup->toJson(),
2628
            'protect_content' => (bool) $protectContent,
2629
        ]));
2630
    }
2631
2632
    /**
2633
     * Use this method to stop a poll which was sent by the bot.
2634
     * On success, the stopped \TelegramBot\Api\Types\Poll with the final results is returned.
2635
     *
2636
     * @param int|string $chatId
2637
     * @param int $messageId
2638
     * @param InlineKeyboardMarkup|null $replyMarkup
2639
     * @return Poll
2640
     * @throws InvalidArgumentException
2641
     * @throws Exception
2642
     */
2643
    public function stopPoll(
2644
        $chatId,
2645
        $messageId,
2646
        $replyMarkup = null
2647
    ) {
2648
        return Poll::fromResponse($this->call('stopPoll', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2648
        return Poll::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('stopPoll', [
Loading history...
2649
            'chat_id' => $chatId,
2650
            'message_id' => $messageId,
2651
            'reply_markup' => is_null($replyMarkup) ? $replyMarkup : $replyMarkup->toJson(),
2652
        ]));
2653
    }
2654
2655
    /**
2656
     * Use this method to create a topic in a forum supergroup chat.
2657
     * The bot must be an administrator in the chat for this to work
2658
     * and must have the can_manage_topics administrator rights.
2659
     * Returns information about the created topic as a ForumTopic object.
2660
     *
2661
     * @param int|string $chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
2662
     * @param string $name Topic name, 1-128 characters
2663
     * @param int $iconColor Color of the topic icon in RGB format.
2664
     *                       Currently, must be one of 7322096 (0x6FB9F0), 16766590 (0xFFD67E), 13338331 (0xCB86DB),
2665
     *                       9367192 (0x8EEE98), 16749490 (0xFF93B2), or 16478047 (0xFB6F5F)
2666
     * @param int|null $iconCustomEmojiId Unique identifier of the custom emoji shown as the topic icon.
2667
     *                                    Use getForumTopicIconStickers to get all allowed custom emoji identifiers.
2668
     *
2669
     * @return ForumTopic
2670
     *
2671
     * @throws Exception
2672
     *
2673
     * @author bernard-ng <[email protected]>
2674
     */
2675
    public function createForumTopic(
2676
        $chatId,
2677
        $name,
2678
        $iconColor,
2679
        $iconCustomEmojiId = null
2680
    ) {
2681
        return ForumTopic::fromResponse($this->call('createForumTopic', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2681
        return ForumTopic::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('createForumTopic', [
Loading history...
2682
            'chat_id' => $chatId,
2683
            'name' => $name,
2684
            'icon_color' => $iconColor,
2685
            'icon_custom_emoji_id' => $iconCustomEmojiId,
2686
        ]));
2687
    }
2688
2689
    /**
2690
     * Use this method to edit name and icon of a topic in a forum supergroup chat.
2691
     * The bot must be an administrator in the chat for this to work and must have can_manage_topics administrator rights,
2692
     * unless it is the creator of the topic. Returns True on success.
2693
     *
2694
     * @param int|string $chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
2695
     * @param int $messageThreadId Unique identifier for the target message thread of the forum topic
2696
     * @param string $name Topic name, 1-128 characters
2697
     * @param int|null $iconCustomEmojiId Unique identifier of the custom emoji shown as the topic icon.
2698
     *                                    Use getForumTopicIconStickers to get all allowed custom emoji identifiers.
2699
     *
2700
     * @return bool
2701
     * @throws Exception
2702
     *
2703
     * @author bernard-ng <[email protected]>
2704
     */
2705
    public function editForumTopic(
2706
        $chatId,
2707
        $messageThreadId,
2708
        $name,
2709
        $iconCustomEmojiId = null
2710
    ) {
2711
        return $this->call('editForumTopic', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2711
        return /** @scrutinizer ignore-deprecated */ $this->call('editForumTopic', [
Loading history...
2712
            'chat_id' => $chatId,
2713
            'message_thread_id' => $messageThreadId,
2714
            'name' => $name,
2715
            'icon_custom_emoji_id' => $iconCustomEmojiId,
2716
        ]);
2717
    }
2718
2719
    /**
2720
     * Use this method to delete a topic in a forum supergroup chat.
2721
     * The bot must be an administrator in the chat for this to work and must have can_manage_topics administrator rights,
2722
     * unless it is the creator of the topic. Returns True on success.
2723
     *
2724
     * @param int|string $chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
2725
     * @param int $messageThreadId Unique identifier for the target message thread of the forum topic
2726
     *
2727
     * @return bool
2728
     * @throws Exception
2729
     *
2730
     * @author bernard-ng <[email protected]>
2731
     */
2732
    public function closeForumTopic($chatId, $messageThreadId)
2733
    {
2734
        return $this->call('closeForumTopic', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2734
        return /** @scrutinizer ignore-deprecated */ $this->call('closeForumTopic', [
Loading history...
2735
            'chat_id' => $chatId,
2736
            'message_thread_id' => $messageThreadId,
2737
        ]);
2738
    }
2739
2740
    /**
2741
     * Use this method to reopen a closed topic in a forum supergroup chat.
2742
     * The bot must be an administrator in the chat for this to work and must have the can_manage_topics administrator rights,
2743
     * unless it is the creator of the topic. Returns True on success.
2744
     *
2745
     * @param int|string $chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
2746
     * @param int $messageThreadId Unique identifier for the target message thread of the forum topic
2747
     *
2748
     * @return bool
2749
     * @throws Exception
2750
     *
2751
     * @author bernard-ng <[email protected]>
2752
     */
2753
    public function reopenForumTopic($chatId, $messageThreadId)
2754
    {
2755
        return $this->call('reopenForumTopic', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2755
        return /** @scrutinizer ignore-deprecated */ $this->call('reopenForumTopic', [
Loading history...
2756
            'chat_id' => $chatId,
2757
            'message_thread_id' => $messageThreadId,
2758
        ]);
2759
    }
2760
2761
    /**
2762
     * Use this method to delete a forum topic along with all its messages in a forum supergroup chat.
2763
     * The bot must be an administrator in the chat for this to work and must have the can_delete_messages administrator rights.
2764
     * Returns True on success.
2765
     *
2766
     * @param int|string $chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
2767
     * @param int $messageThreadId Unique identifier for the target message thread of the forum topic
2768
     *
2769
     * @return bool
2770
     * @throws Exception
2771
     *
2772
     * @author bernard-ng <[email protected]>
2773
     */
2774
    public function deleteForumTopic($chatId, $messageThreadId)
2775
    {
2776
        return $this->call('deleteForumTopic', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2776
        return /** @scrutinizer ignore-deprecated */ $this->call('deleteForumTopic', [
Loading history...
2777
            'chat_id' => $chatId,
2778
            'message_thread_id' => $messageThreadId,
2779
        ]);
2780
    }
2781
2782
    /**
2783
     * Use this method to clear the list of pinned messages in a forum topic.
2784
     * The bot must be an administrator in the chat for this to work and must have the can_pin_messages administrator right in the supergroup.
2785
     * Returns True on success.
2786
     *
2787
     * @param int|string $chatId Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
2788
     * @param int $messageThreadId Unique identifier for the target message thread of the forum topic
2789
     *
2790
     * @return bool
2791
     * @throws Exception
2792
     *
2793
     * @author bernard-ng <[email protected]>
2794
     */
2795
    public function unpinAllForumTopicMessages($chatId, $messageThreadId)
2796
    {
2797
        return $this->call('unpinAllForumTopicMessages', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2797
        return /** @scrutinizer ignore-deprecated */ $this->call('unpinAllForumTopicMessages', [
Loading history...
2798
            'chat_id' => $chatId,
2799
            'message_thread_id' => $messageThreadId,
2800
        ]);
2801
    }
2802
2803
    /**
2804
     * Use this method to get custom emoji stickers, which can be used as a forum topic icon by any user.
2805
     * Requires no parameters. Returns an Array of Sticker objects.
2806
     *
2807
     * @return Sticker[]
2808
     * @throws Exception
2809
     *
2810
     * @author bernard-ng <[email protected]>
2811
     */
2812
    public function getForumTopicIconStickers()
2813
    {
2814
        return ArrayOfSticker::fromResponse($this->call('getForumTopicIconStickers'));
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2814
        return ArrayOfSticker::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('getForumTopicIconStickers'));
Loading history...
2815
    }
2816
2817
    /**
2818
     * @param string $webAppQueryId
2819
     * @param AbstractInlineQueryResult $result
2820
     * @return SentWebAppMessage
2821
     * @throws Exception
2822
     * @throws HttpException
2823
     * @throws InvalidArgumentException
2824
     * @throws InvalidJsonException
2825
     */
2826
    public function answerWebAppQuery($webAppQueryId, $result)
2827
    {
2828
        return SentWebAppMessage::fromResponse($this->call('answerWebAppQuery', [
0 ignored issues
show
Deprecated Code introduced by
The function TelegramBot\Api\BotApi::call() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

2828
        return SentWebAppMessage::fromResponse(/** @scrutinizer ignore-deprecated */ $this->call('answerWebAppQuery', [
Loading history...
2829
            'web_app_query_id' => $webAppQueryId,
2830
            'result' => $result->toJson(),
2831
        ]));
2832
    }
2833
2834
    /**
2835
     * Enable proxy for curl requests. Empty string will disable proxy.
2836
     *
2837
     * @param string $proxyString
2838
     * @param bool $socks5
2839
     *
2840
     * @return BotApi
2841
     */
2842
    public function setProxy($proxyString = '', $socks5 = false)
2843
    {
2844
        @trigger_error(sprintf('Method "%s:%s" is deprecated. Manage options on HttpClient instance', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
2845
2846
        if (method_exists($this->httpClient, 'setProxy')) {
2847
            $this->httpClient->setProxy($proxyString, $socks5);
2848
        }
2849
2850
        return $this;
2851
    }
2852
2853
    /**
2854
     * Set an option for a cURL transfer
2855
     *
2856
     * @param int $option The CURLOPT_XXX option to set
2857
     * @param mixed $value The value to be set on option
2858
     *
2859
     * @return void
2860
     */
2861
    public function setCurlOption($option, $value)
2862
    {
2863
        @trigger_error(sprintf('Method "%s:%s" is deprecated. Manage options on http client instance', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
2864
2865
        if (method_exists($this->httpClient, 'setOption')) {
2866
            $this->httpClient->setOption($option, $value);
2867
        }
2868
    }
2869
2870
    /**
2871
     * Unset an option for a cURL transfer
2872
     *
2873
     * @param int $option The CURLOPT_XXX option to unset
2874
     *
2875
     * @return void
2876
     */
2877
    public function unsetCurlOption($option)
2878
    {
2879
        @trigger_error(sprintf('Method "%s:%s" is deprecated. Manage options on http client instance', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
2880
2881
        if (method_exists($this->httpClient, 'unsetOption')) {
2882
            $this->httpClient->unsetOption($option);
2883
        }
2884
    }
2885
2886
    /**
2887
     * Clean custom options
2888
     *
2889
     * @return void
2890
     */
2891
    public function resetCurlOptions()
2892
    {
2893
        @trigger_error(sprintf('Method "%s:%s" is deprecated. Manage options on http client instance', __CLASS__, __METHOD__), \E_USER_DEPRECATED);
2894
2895
        if (method_exists($this->httpClient, 'resetOptions')) {
2896
            $this->httpClient->resetOptions();
2897
        }
2898
    }
2899
}
2900