-
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathGenericmessageCommand.php
87 lines (74 loc) · 2.21 KB
/
GenericmessageCommand.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
/**
* This file is part of the PHP Telegram Support Bot.
*
* (c) PHP Telegram Bot Team (https://github.com/php-telegram-bot)
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Longman\TelegramBot\Commands\SystemCommands;
use Longman\TelegramBot\Commands\SystemCommand;
use Longman\TelegramBot\Commands\UserCommands\DonateCommand;
use Longman\TelegramBot\Entities\ServerResponse;
use Longman\TelegramBot\Exception\TelegramException;
use Longman\TelegramBot\Request;
/**
* Generic message command
*/
class GenericmessageCommand extends SystemCommand
{
/**
* @var string
*/
protected $name = 'genericmessage';
/**
* @var string
*/
protected $description = 'Handle generic message';
/**
* @var string
*/
protected $version = '0.2.0';
/**
* Execute command
*
* @return ServerResponse
* @throws TelegramException
*/
public function execute(): ServerResponse
{
$message = $this->getMessage();
$user_id = $message->getFrom()->getId();
// Handle new chat members.
if ($message->getNewChatMembers()) {
$this->deleteThisMessage(); // Service message.
return $this->getTelegram()->executeCommand('newchatmembers');
}
if ($message->getLeftChatMember()) {
$this->deleteThisMessage(); // Service message.
}
// Handle successful payment of donation.
if ($payment = $message->getSuccessfulPayment()) {
return DonateCommand::handleSuccessfulPayment($payment, $user_id);
}
// Handle posts forwarded from channels.
if ($message->getForwardFrom()) {
return $this->getTelegram()->executeCommand('id');
}
return parent::execute();
}
/**
* Delete the current message.
*
* @return ServerResponse
*/
private function deleteThisMessage(): ServerResponse
{
return Request::deleteMessage([
'chat_id' => $this->getMessage()->getChat()->getId(),
'message_id' => $this->getMessage()->getMessageId(),
]);
}
}