Compare commits
No commits in common. "3c245e81160dd437e0ce8c44e26490e06ac36859" and "b402b89b0cdf061f3613dd321a71259cf708d302" have entirely different histories.
3c245e8116
...
b402b89b0c
45
README.md
45
README.md
@ -1,44 +1 @@
|
|||||||
# Telegram Bot Command - Get user and chanel id
|
# tbc-get-id
|
||||||
|
|
||||||
Implements the ability to get a user or channel ID in Telegram.
|
|
||||||
|
|
||||||
Реализует возможность получить ID пользователя или канала в Telegram.
|
|
||||||
|
|
||||||
## Подключение к проекту
|
|
||||||
|
|
||||||
Установите пакет в зависимости
|
|
||||||
|
|
||||||
```shell
|
|
||||||
composer require webmasterskaya/tbc-get-id
|
|
||||||
```
|
|
||||||
|
|
||||||
Зарегистрируйте класс команды, при инициализации приложения.
|
|
||||||
|
|
||||||
```php
|
|
||||||
$bot_api_key = 'your:bot_api_key';
|
|
||||||
$bot_username = 'username_bot';
|
|
||||||
|
|
||||||
$telegram = new Longman\TelegramBot\Telegram($bot_api_key, $bot_username);
|
|
||||||
|
|
||||||
$telegram->addCommandClass(\Webmasterskaya\TelegramBotCommands\Commands\UserCommands\IdCommand::class);
|
|
||||||
|
|
||||||
$telegram->handle();
|
|
||||||
// OR
|
|
||||||
$telegram->handleGetUpdates();
|
|
||||||
```
|
|
||||||
|
|
||||||
Команду можно запускать вручную, без изменений входящих данных!
|
|
||||||
|
|
||||||
```php
|
|
||||||
$telegram->executeCommand('id');
|
|
||||||
```
|
|
||||||
|
|
||||||
## Использование
|
|
||||||
|
|
||||||
### В чатах
|
|
||||||
1. Выполните команду `/id`, чтобы получить ID текущего чата.
|
|
||||||
2. Выполните команду `/id` в ответ на любое сообщение и вы получите ID текущего чата, ID автора сообщения и ID чата, из которого это сообщение переслали.
|
|
||||||
|
|
||||||
### В личных сообщениях
|
|
||||||
1. Выполните команду `/id`, чтобы получить ваш ID.
|
|
||||||
2. Перешлите любое сообщение (пользователя, чата, канала или другого бота) боту и, в ответ на это сообщение, выполните команду `/id`.
|
|
@ -3,9 +3,7 @@
|
|||||||
namespace Webmasterskaya\TelegramBotCommands\Commands\UserCommands;
|
namespace Webmasterskaya\TelegramBotCommands\Commands\UserCommands;
|
||||||
|
|
||||||
use Longman\TelegramBot\Commands as BotCommands;
|
use Longman\TelegramBot\Commands as BotCommands;
|
||||||
use Longman\TelegramBot\Entities\Entity;
|
|
||||||
use Longman\TelegramBot\Entities\ServerResponse;
|
use Longman\TelegramBot\Entities\ServerResponse;
|
||||||
use Longman\TelegramBot\Entities\User;
|
|
||||||
use Longman\TelegramBot\Request;
|
use Longman\TelegramBot\Request;
|
||||||
|
|
||||||
class IdCommand extends BotCommands\UserCommand
|
class IdCommand extends BotCommands\UserCommand
|
||||||
@ -18,64 +16,12 @@ class IdCommand extends BotCommands\UserCommand
|
|||||||
|
|
||||||
protected $version = '1.0.0';
|
protected $version = '1.0.0';
|
||||||
|
|
||||||
protected $private_only = false;
|
protected $private_only = true;
|
||||||
|
|
||||||
public function execute(): ServerResponse
|
public function execute(): ServerResponse
|
||||||
{
|
{
|
||||||
$message = $this->getMessage() ?: $this->getChannelPost();
|
// TODO: Implement execute() method.
|
||||||
|
|
||||||
if ($message->getFrom()->getIsBot() && is_null($message->getSenderChat())) {
|
return Request::EmptyResponse();
|
||||||
return Request::emptyResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
$chat = $message->getChat();
|
|
||||||
|
|
||||||
$data = [
|
|
||||||
'chat_id' => $chat->getId(),
|
|
||||||
'reply_to_message_id' => $message->getMessageId(),
|
|
||||||
'parse_mode' => 'MarkdownV2'
|
|
||||||
];
|
|
||||||
|
|
||||||
/** @noinspection PhpUndefinedMethodInspection */
|
|
||||||
if (!empty(@$message->getExternalReply())) {
|
|
||||||
$data['text'] = sprintf('*Error*: %s', Entity::escapeMarkdownV2('Replies 2.0 not supported.'));
|
|
||||||
return Request::sendMessage($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
$response_data = [];
|
|
||||||
|
|
||||||
if($chat->isPrivateChat()){
|
|
||||||
$response_data['Your ID'] = $message->getFrom()->getId() ?: $chat->getId();
|
|
||||||
} else {
|
|
||||||
$response_data['This chat ID'] = $chat->getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_null($reply = $message->getReplyToMessage())) {
|
|
||||||
$message = $reply;
|
|
||||||
if (!$chat->isPrivateChat()) {
|
|
||||||
$form = $message->getSenderChat() ?: $message->getFrom();
|
|
||||||
$form_type = ($form instanceof User)
|
|
||||||
? ($form->getIsBot() ? 'bot' : 'user')
|
|
||||||
: $form->getType();
|
|
||||||
|
|
||||||
$response_data["Message from $form_type ID"] = $form->getId();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_null($forward = $message->getForwardFrom() ?: $message->getForwardFromChat())) {
|
|
||||||
$forward_from_type = ($forward instanceof User)
|
|
||||||
? ($forward->getIsBot() ? 'bot' : 'user')
|
|
||||||
: $forward->getType();
|
|
||||||
$response_data["Forward from $forward_from_type ID"] = $forward->getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
$data['text'] = '';
|
|
||||||
foreach ($response_data as $title => $value) {
|
|
||||||
$data['text'] .= sprintf('*%s*: `%s`',
|
|
||||||
Entity::escapeMarkdownV2($title),
|
|
||||||
Entity::escapeMarkdownV2($value)) . PHP_EOL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Request::sendMessage($data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user