diff --git a/README.md b/README.md index 0a227de7..4301dc4a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +

The development of the project is currently on hold until further notice. We will provide updates as soon as they become available.

PHP Telegram Bot

diff --git a/src/DB.php b/src/DB.php index 487ea7ff..dd10b870 100644 --- a/src/DB.php +++ b/src/DB.php @@ -21,6 +21,10 @@ use Longman\TelegramBot\Entities\ChosenInlineResult; use Longman\TelegramBot\Entities\InlineQuery; use Longman\TelegramBot\Entities\Message; +use Longman\TelegramBot\Entities\MessageOrigin\MessageOriginChannel; +use Longman\TelegramBot\Entities\MessageOrigin\MessageOriginChat; +use Longman\TelegramBot\Entities\MessageOrigin\MessageOriginHiddenUser; +use Longman\TelegramBot\Entities\MessageOrigin\MessageOriginUser; use Longman\TelegramBot\Entities\MessageReactionCountUpdated; use Longman\TelegramBot\Entities\MessageReactionUpdated; use Longman\TelegramBot\Entities\Payments\PreCheckoutQuery; @@ -1273,15 +1277,31 @@ public static function insertMessageRequest(Message $message): bool } // Insert the forwarded message user in users table - $forward_date = $message->getForwardDate() ? self::getTimestamp($message->getForwardDate()) : null; - - if ($forward_from = $message->getForwardFrom()) { - self::insertUser($forward_from); - $forward_from = $forward_from->getId(); - } - if ($forward_from_chat = $message->getForwardFromChat()) { - self::insertChat($forward_from_chat); - $forward_from_chat = $forward_from_chat->getId(); + $forward_from = null; + $forward_from_chat = null; + $forward_from_message_id = null; + $forward_signature = null; + $forward_sender_name = null; + $forward_date = null; + + if ($forward_origin = $message->getForwardOrigin()) { + $forward_date = self::getTimestamp($forward_origin->getDate()); + + if ($forward_origin instanceof MessageOriginUser) { + self::insertUser($forward_origin->getSenderUser()); + $forward_from = $forward_origin->getSenderUser()->getId(); + } elseif ($forward_origin instanceof MessageOriginHiddenUser) { + $forward_sender_name = $forward_origin->getSenderUserName(); + } elseif ($forward_origin instanceof MessageOriginChat) { + self::insertChat($forward_origin->getChat()); + $forward_from_chat = $forward_origin->getChat()->getId(); + $forward_signature = $forward_origin->getAuthorSignature(); + } elseif ($forward_origin instanceof MessageOriginChannel) { + self::insertChat($forward_origin->getChat()); + $forward_from_chat = $forward_origin->getChat()->getId(); + $forward_from_message_id = $forward_origin->getMessageId(); + $forward_signature = $forward_origin->getAuthorSignature(); + } } $via_bot_id = null; @@ -1359,9 +1379,9 @@ public static function insertMessageRequest(Message $message): bool $sth->bindValue(':date', $date); $sth->bindValue(':forward_from', $forward_from); $sth->bindValue(':forward_from_chat', $forward_from_chat); - $sth->bindValue(':forward_from_message_id', $message->getForwardFromMessageId()); - $sth->bindValue(':forward_signature', $message->getForwardSignature()); - $sth->bindValue(':forward_sender_name', $message->getForwardSenderName()); + $sth->bindValue(':forward_from_message_id', $forward_from_message_id); + $sth->bindValue(':forward_signature', $forward_signature); + $sth->bindValue(':forward_sender_name', $forward_sender_name); $sth->bindValue(':forward_date', $forward_date); $sth->bindValue(':is_topic_message', $message->getIsTopicMessage()); diff --git a/src/Request.php b/src/Request.php index 21a7a5f7..22e9f552 100644 --- a/src/Request.php +++ b/src/Request.php @@ -410,6 +410,10 @@ public static function setClient(ClientInterface $client): void */ public static function setCustomBotApiUri(string $api_base_uri, string $api_base_download_uri = ''): void { + if (self::$client) { + throw new TelegramException('setCustomBotApiUri() needs to be called before the Telegram object gets instantiated.'); + } + self::$api_base_uri = $api_base_uri; if ($api_base_download_uri !== '') { self::$api_base_download_uri = $api_base_download_uri; diff --git a/structure.sql b/structure.sql index 357501ec..d36af44f 100644 --- a/structure.sql +++ b/structure.sql @@ -378,6 +378,8 @@ CREATE TABLE IF NOT EXISTS `telegram_update` ( `my_chat_member_updated_id` BIGINT UNSIGNED NULL COMMENT 'The bot''s chat member status was updated in a chat. For private chats, this update is received only when the bot is blocked or unblocked by the user.', `chat_member_updated_id` BIGINT UNSIGNED NULL COMMENT 'A chat member''s status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of allowed_updates to receive these updates.', `chat_join_request_id` BIGINT UNSIGNED NULL COMMENT 'A request to join the chat has been sent', + `chat_boost_updated_id` BIGINT UNSIGNED NULL COMMENT 'A chat boost was added or changed.', + `chat_boost_removed_id` BIGINT UNSIGNED NULL COMMENT 'A boost was removed from a chat.', PRIMARY KEY (`id`), KEY `message_id` (`message_id`), @@ -409,7 +411,9 @@ CREATE TABLE IF NOT EXISTS `telegram_update` ( FOREIGN KEY (`poll_answer_poll_id`) REFERENCES `poll_answer` (`poll_id`), FOREIGN KEY (`my_chat_member_updated_id`) REFERENCES `chat_member_updated` (`id`), FOREIGN KEY (`chat_member_updated_id`) REFERENCES `chat_member_updated` (`id`), - FOREIGN KEY (`chat_join_request_id`) REFERENCES `chat_join_request` (`id`) + FOREIGN KEY (`chat_join_request_id`) REFERENCES `chat_join_request` (`id`), + FOREIGN KEY (`chat_boost_updated_id`) REFERENCES `chat_boost_updated` (`id`), + FOREIGN KEY (`chat_boost_removed_id`) REFERENCES `chat_boost_removed` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; CREATE TABLE IF NOT EXISTS `conversation` ( diff --git a/utils/db-schema-update/0.82.0-0.83.0.sql b/utils/db-schema-update/0.82.0-0.83.0.sql index 537307c7..72f35053 100644 --- a/utils/db-schema-update/0.82.0-0.83.0.sql +++ b/utils/db-schema-update/0.82.0-0.83.0.sql @@ -69,3 +69,9 @@ ALTER TABLE `message` ALTER TABLE `telegram_update` ADD COLUMN `message_reaction_id` bigint UNSIGNED DEFAULT NULL COMMENT 'A reaction to a message was changed by a user' AFTER `edited_channel_post_id`, ADD COLUMN `message_reaction_count_id` bigint UNSIGNED DEFAULT NULL COMMENT 'Reactions to a message with anonymous reactions were changed' AFTER `message_reaction_id`; + +ALTER TABLE `telegram_update` ADD COLUMN `chat_boost_updated_id` BIGINT UNSIGNED NULL COMMENT 'A chat boost was added or changed.'; +ALTER TABLE `telegram_update` ADD FOREIGN KEY (`chat_boost_updated_id`) REFERENCES `chat_boost_updated` (`id`); + +ALTER TABLE `telegram_update` ADD COLUMN `chat_boost_removed_id` BIGINT UNSIGNED NULL COMMENT 'A boost was removed from a chat.'; +ALTER TABLE `telegram_update` ADD FOREIGN KEY (`chat_boost_removed_id`) REFERENCES `chat_boost_removed` (`id`);