When the bot receives an incoming message from itself in the Heard middleware, $message->getSender() returns a user Telegram ID instead of a bot Telegram ID.
In the example below, I log messages from bots:
if (data_get($message->getPayload(), 'from.is_bot') === true) {
Log::debug('Catch bot messages.', [
'getSender' => $message->getSender(),
'payload' => $message->getPayload(),
]);
}
The incoming message is a bot message. Bot Telegram ID is 2222222222 which is clearly visible in the payload in from.id, but $message->getSender() for some reason returns a different Telegram ID of 11111111 (which is an ID of a user in that chat):
{
"getSender": 11111111,
"payload": {
"message_id": 1328846,
"from": {
"id": 2222222222,
"is_bot": true,
"first_name": "My bot name",
"username": "somebotname"
},
"chat": {
"id": -3333333333,
"title": "Some chat name",
"type": "group",
"all_members_are_administrators": true,
"accepted_gift_types": {
"unlimited_gifts": false,
"limited_gifts": false,
"unique_gifts": false,
"premium_subscription": false
}
},
"date": 1757250577,
"text": "Bot response"
}
}
When the bot receives an incoming message from itself in the Heard middleware,
$message->getSender()returns a user Telegram ID instead of a bot Telegram ID.In the example below, I log messages from bots:
The incoming message is a bot message. Bot Telegram ID is
2222222222which is clearly visible in the payload infrom.id, but$message->getSender()for some reason returns a different Telegram ID of11111111(which is an ID of a user in that chat):{ "getSender": 11111111, "payload": { "message_id": 1328846, "from": { "id": 2222222222, "is_bot": true, "first_name": "My bot name", "username": "somebotname" }, "chat": { "id": -3333333333, "title": "Some chat name", "type": "group", "all_members_are_administrators": true, "accepted_gift_types": { "unlimited_gifts": false, "limited_gifts": false, "unique_gifts": false, "premium_subscription": false } }, "date": 1757250577, "text": "Bot response" } }