From 54e81b413738706ff99933f65b59c5226bf59fcf Mon Sep 17 00:00:00 2001 From: Netkas Date: Thu, 10 Aug 2023 14:25:05 -0400 Subject: [PATCH] * Fixed type in `\TgBotLib\Objects\Telegram > Message > fromArray()` where `forum_topic_created` is being parsed for forum_topic_edited instead of `forum_topic_edited` Updated README.md to reflect the new changes with TamerLib 2.+ --- CHANGELOG.md | 9 ++++- README.md | 41 +++++++---------------- src/TgBotLib/Bot.php | 5 +++ src/TgBotLib/Objects/Telegram/Message.php | 2 +- tests/multi_threaded.php | 19 +++++++++++ tests/single_threaded.php | 2 +- tests/worker.php | 13 +++---- 7 files changed, 51 insertions(+), 40 deletions(-) create mode 100644 tests/multi_threaded.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bda5d8..0d16e95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,7 +62,14 @@ input objects for methods that require input objects. * Updated class type to `final class` in `\TgBotLib\Enums > StickerType` * Updated class type to `final class` in `\TgBotLib\Enums > ThumbnailMimeType` * Updated class type to `final class` in `\TgBotLib\Enums > UpdateEventType` - * Updated method `\TgBotLib > Bot > handleGetUpdates()` to handle exceptions + * Updated method `\TgBotLib > Bot > handleGetUpdates()` to handle exceptions + * Updated README.md to reflect the new changes with TamerLib 2.+ + + +### Fixed + * Fixed type in `\TgBotLib\Objects\Telegram > Message > fromArray()` where `forum_topic_created` is being parsed for + forum_topic_edited instead of `forum_topic_edited` + ## [6.6.0] - 2023-04-10 diff --git a/README.md b/README.md index ce38e50..7a6ac61 100644 --- a/README.md +++ b/README.md @@ -187,21 +187,16 @@ First create a worker process that will handle the updates: require 'commands' . DIRECTORY_SEPARATOR . 'HashCommand.php'; // Initialize the bot - $bot = new TgBotLib\Bot('bot_token'); + $bot = new TgBotLib\Bot(''); - // Set the command handlers + // Setup command handlers $bot->setCommandHandler('start', new \commands\StartCommand()); $bot->setCommandHandler('hash', new \commands\HashCommand()); - // Initialize the worker & register the handle_update function - TamerLib\Tamer::initWorker(); - TamerLib\Tamer::addFunction('handle_update', function (\TamerLib\Objects\Job $job) use ($bot) - { - $bot->handleUpdate(\TgBotLib\Objects\Telegram\Update::fromArray(json_decode($job->getData(), true))); - }); - - // Work forever - TamerLib\Tamer::work(); + // Run TamerLib forever. + \TamerLib\tm::initialize(\TamerLib\Enums\TamerMode::WORKER); + \TamerLib\tm::addFunction('handle_update', [$bot, 'handleUpdate']); + \TamerLib\tm::run(); ``` Then create a master process that will send the updates to the worker: @@ -216,30 +211,20 @@ Then create a master process that will send the updates to the worker: import('net.nosial.tgbotlib'); import('net.nosial.tamerlib'); - // Require commands - require 'commands' . DIRECTORY_SEPARATOR . 'StartCommand.php'; - require 'commands' . DIRECTORY_SEPARATOR . 'HashCommand.php'; - - // Initialize the bot - $bot = new TgBotLib\Bot('bot_token'); - - // Initialize the master & add the worker - TamerLib\Tamer::init(\TamerLib\Abstracts\ProtocolType::Gearman, [ - '127.0.0.1:4730' - ]); - TamerLib\Tamer::addWorker('handle_update', 4); - - // Start the workers - TamerLib\Tamer::startWorkers(); + $bot = new TgBotLib\Bot(''); + \TamerLib\tm::initialize(\TamerLib\Enums\TamerMode::CLIENT); + \TamerLib\tm::createWorker(8, __DIR__ . DIRECTORY_SEPARATOR . 'worker.php'); // Handle updates forever while(true) { - /** @var \TgBotLib\Objects\Telegram\Update $update */ + // Get updates, push the update object to the worker foreach ($bot->getUpdates() as $update) { - TamerLib\Tamer::do('handle_update', json_encode($update->toArray())); + \TamerLib\tm::dof('handle_update', [$update]); } + + \TamerLib\tm::wait(3); } ``` diff --git a/src/TgBotLib/Bot.php b/src/TgBotLib/Bot.php index d5b7b45..f56f352 100644 --- a/src/TgBotLib/Bot.php +++ b/src/TgBotLib/Bot.php @@ -91,6 +91,11 @@ $this->last_update_id = 0; $this->command_handlers = []; $this->event_handlers = []; + + if(!preg_match('/^[0-9]{8,10}:[a-zA-Z0-9_-]{35}$/', $this->token)) + { + throw new InvalidArgumentException(sprintf('Invalid token "%s"', $this->token)); + } } /** diff --git a/src/TgBotLib/Objects/Telegram/Message.php b/src/TgBotLib/Objects/Telegram/Message.php index 0ee51b5..a50557b 100644 --- a/src/TgBotLib/Objects/Telegram/Message.php +++ b/src/TgBotLib/Objects/Telegram/Message.php @@ -1298,7 +1298,7 @@ $object->passport_data = isset($data['passport_data']) ? PassportData::fromArray($data['passport_data']) : null; $object->proximity_alert_triggered = isset($data['proximity_alert_triggered']) ? ProximityAlertTriggered::fromArray($data['proximity_alert_triggered']) : null; $object->forum_topic_created = isset($data['forum_topic_created']) ? ForumTopicCreated::fromArray($data['forum_topic_created']) : null; - $object->forum_topic_edited = isset($data['forum_topic_created']) ? ForumTopicEdited::fromArray($data['forum_topic_edited']) : null; + $object->forum_topic_edited = isset($data['forum_topic_edited']) ? ForumTopicEdited::fromArray($data['forum_topic_edited']) : null; $object->forum_topic_closed = isset($data['forum_topic_closed']) ? ForumTopicClosed::fromArray($data['forum_topic_closed']) : null; $object->forum_topic_reopened = isset($data['forum_topic_reopened']) ? ForumTopicReopened::fromArray($data['forum_topic_reopened']) : null; $object->general_forum_topic_hidden = isset($data['general_forum_topic_hidden']) ? GeneralForumTopicHidden::fromArray($data['general_forum_topic_hidden']) : null; diff --git a/tests/multi_threaded.php b/tests/multi_threaded.php new file mode 100644 index 0000000..fde6528 --- /dev/null +++ b/tests/multi_threaded.php @@ -0,0 +1,19 @@ +'); + \TamerLib\tm::initialize(\TamerLib\Enums\TamerMode::CLIENT); + \TamerLib\tm::createWorker(8, __DIR__ . DIRECTORY_SEPARATOR . 'worker.php'); + + // Handle updates forever + while(true) + { + foreach ($bot->getUpdates() as $update) + { + \TamerLib\tm::dof('handle_update', [$update]); + } + + \TamerLib\tm::wait(3); + } \ No newline at end of file diff --git a/tests/single_threaded.php b/tests/single_threaded.php index e016c40..12288a6 100644 --- a/tests/single_threaded.php +++ b/tests/single_threaded.php @@ -2,7 +2,7 @@ require __DIR__ . DIRECTORY_SEPARATOR . 'autoload.php'; - $bot = new TgBotLib\Bot(getenv('BOT_TOKEN')); + $bot = new TgBotLib\Bot(''); $bot->setCommandHandler('start', new \commands\StartCommand()); $bot->setCommandHandler('hash', new \commands\HashCommand()); diff --git a/tests/worker.php b/tests/worker.php index 8196733..3b5c6d7 100644 --- a/tests/worker.php +++ b/tests/worker.php @@ -3,16 +3,11 @@ require __DIR__ . DIRECTORY_SEPARATOR . 'autoload.php'; import('net.nosial.tamerlib'); - $bot = new TgBotLib\Bot('bot_token'); + $bot = new TgBotLib\Bot(''); $bot->setCommandHandler('start', new \commands\StartCommand()); $bot->setCommandHandler('hash', new \commands\HashCommand()); - TamerLib\Tamer::initWorker(); - - TamerLib\Tamer::addFunction('handle_update', function (\TamerLib\Objects\Job $job) use ($bot) - { - $bot->handleUpdate(\TgBotLib\Objects\Telegram\Update::fromArray(json_decode($job->getData(), true))); - }); - - TamerLib\Tamer::work(); \ No newline at end of file + \TamerLib\tm::initialize(\TamerLib\Enums\TamerMode::WORKER); + \TamerLib\tm::addFunction('handle_update', [$bot, 'handleUpdate']); + \TamerLib\tm::run(); \ No newline at end of file