I don't know how to explain the problem. so i try with an example:
use function DevDasher\PTB\_endConversation;
use function DevDasher\PTB\_input;
use function DevDasher\PTB\_row;
use function DevDasher\PTB\_text;
use function DevDasher\PTB\configurePTB;
use function DevDasher\PTB\KeyboardButton;
use function DevDasher\PTB\onMessage;
use function DevDasher\PTB\onMessageText;
use function DevDasher\PTB\ReplyKeyboardMarkup;
use function DevDasher\PTB\run;
use function DevDasher\PTB\sendMessage;
//...
//...
//...
//...
_input(
prompt: 'Send your name:',
next_step: function() {
_input(
conversation_data: ['name' => _text()],
prompt: 'Send your age:',
next_step: function($name) {
_input(
conversation_data: ['age' => _text()],
prompt: fn() => sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
_row(KeyboardButton(text: 'Male'), KeyboardButton(text: 'Female')),
],
resize_keyboard: true,
),
),
next_step: function($name, $age) {
$gender = _text();
$validGenders = ['male', 'female'];
if (!in_array(strtolower($gender), $validGenders)) {
return sendMessage(text: 'Invalid gender!');
}
sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: {$gender}");
_endConversation();
},
);
},
);
}
);
//...
//...
//...
//...
PS D:\Documents\Code\ptb-php> php .\temp\bot.php
Listening...
PHP Fatal error: Uncaught Error: Call to undefined function ReplyKeyboardMarkup() in laravel-serializable-closure://function($name) {
\DevDasher\PTB\_input(
prompt: fn() => \DevDasher\PTB\sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
\DevDasher\PTB\_row(\DevDasher\PTB\KeyboardButton(text: 'Male'), \DevDasher\PTB\KeyboardButton('Female')),
],
resize_keyboard: true,
)
),
next_step: function($name, $age) {
$gender = \DevDasher\PTB\_text();
$validGenders = ['male', 'female'];
if (!\in_array(\strtolower($gender), $validGenders)) {
return \DevDasher\PTB\sendMessage(text: 'Invalid gender!');
}
\DevDasher\PTB\sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: $gender");
\DevDasher\PTB\_endConversation();
},
conversation_data: ['age' => \DevDasher\PTB\_text()],
);
}:6
Stack trace:
#0 D:\Documents\Code\ptb-php\src\PTB.php(6617): {closure}()
#1 laravel-serializable-closure://function($name) {
\DevDasher\PTB\_input(
prompt: fn() => \DevDasher\PTB\sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
\DevDasher\PTB\_row(\DevDasher\PTB\KeyboardButton(text: 'Male'), \DevDasher\PTB\KeyboardButton('Female')),
],
resize_keyboard: true,
)
),
next_step: function($name, $age) {
$gender = \DevDasher\PTB\_text();
$validGenders = ['male', 'female'];
if (!\in_array(\strtolower($gender), $validGenders)) {
return \DevDasher\PTB\sendMessage(text: 'Invalid gender!');
}
\DevDasher\PTB\sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: $gender");
\DevDasher\PTB\_endConversation();
},
conversation_data: ['age' => \DevDasher\PTB\_text()],
);
}(3): DevDasher\PTB\_input(Object(Closure), Object(Closure), Array)
#2 D:\Documents\Code\ptb-php\src\PTB.php(6472): {closure}('Pooria')
#3 D:\Documents\Code\ptb-php\src\PTB.php(6380): DevDasher\PTB\__fireHandlers(Array)
#4 D:\Documents\Code\ptb-php\src\PTB.php(6728): DevDasher\PTB\__processCurrentUpdate()
#5 D:\Documents\Code\ptb-php\temp\bot.php(97): DevDasher\PTB\run()
#6 {main}
thrown in laravel-serializable-closure://function($name) {
\DevDasher\PTB\_input(
prompt: fn() => \DevDasher\PTB\sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
\DevDasher\PTB\_row(\DevDasher\PTB\KeyboardButton(text: 'Male'), \DevDasher\PTB\KeyboardButton('Female')),
],
resize_keyboard: true,
)
),
next_step: function($name, $age) {
$gender = \DevDasher\PTB\_text();
$validGenders = ['male', 'female'];
if (!\in_array(\strtolower($gender), $validGenders)) {
return \DevDasher\PTB\sendMessage(text: 'Invalid gender!');
}
\DevDasher\PTB\sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: $gender");
\DevDasher\PTB\_endConversation();
},
conversation_data: ['age' => \DevDasher\PTB\_text()],
);
} on line 6
Fatal error: Uncaught Error: Call to undefined function ReplyKeyboardMarkup() in laravel-serializable-closure://function($name) {
\DevDasher\PTB\_input(
prompt: fn() => \DevDasher\PTB\sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
\DevDasher\PTB\_row(\DevDasher\PTB\KeyboardButton(text: 'Male'), \DevDasher\PTB\KeyboardButton('Female')),
],
resize_keyboard: true,
)
),
next_step: function($name, $age) {
$gender = \DevDasher\PTB\_text();
$validGenders = ['male', 'female'];
if (!\in_array(\strtolower($gender), $validGenders)) {
return \DevDasher\PTB\sendMessage(text: 'Invalid gender!');
}
\DevDasher\PTB\sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: $gender");
\DevDasher\PTB\_endConversation();
},
conversation_data: ['age' => \DevDasher\PTB\_text()],
);
}:6
Stack trace:
#0 D:\Documents\Code\ptb-php\src\PTB.php(6617): {closure}()
#1 laravel-serializable-closure://function($name) {
\DevDasher\PTB\_input(
prompt: fn() => \DevDasher\PTB\sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
\DevDasher\PTB\_row(\DevDasher\PTB\KeyboardButton(text: 'Male'), \DevDasher\PTB\KeyboardButton('Female')),
],
resize_keyboard: true,
)
),
next_step: function($name, $age) {
$gender = \DevDasher\PTB\_text();
$validGenders = ['male', 'female'];
if (!\in_array(\strtolower($gender), $validGenders)) {
return \DevDasher\PTB\sendMessage(text: 'Invalid gender!');
}
\DevDasher\PTB\sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: $gender");
\DevDasher\PTB\_endConversation();
},
conversation_data: ['age' => \DevDasher\PTB\_text()],
);
}(3): DevDasher\PTB\_input(Object(Closure), Object(Closure), Array)
#2 D:\Documents\Code\ptb-php\src\PTB.php(6472): {closure}('Pooria')
#3 D:\Documents\Code\ptb-php\src\PTB.php(6380): DevDasher\PTB\__fireHandlers(Array)
#4 D:\Documents\Code\ptb-php\src\PTB.php(6728): DevDasher\PTB\__processCurrentUpdate()
#5 D:\Documents\Code\ptb-php\temp\bot.php(97): DevDasher\PTB\run()
#6 {main}
thrown in laravel-serializable-closure://function($name) {
\DevDasher\PTB\_input(
prompt: fn() => \DevDasher\PTB\sendMessage(
text: 'Pick your gender:',
reply_markup: ReplyKeyboardMarkup(
keyboard: [
\DevDasher\PTB\_row(\DevDasher\PTB\KeyboardButton(text: 'Male'), \DevDasher\PTB\KeyboardButton('Female')),
],
resize_keyboard: true,
)
),
next_step: function($name, $age) {
$gender = \DevDasher\PTB\_text();
if (!\in_array(\strtolower($gender), $validGenders)) {
return \DevDasher\PTB\sendMessage(text: 'Invalid gender!');
}
\DevDasher\PTB\sendMessage(text: "Thank you!\n\nName: {$name}\nAge: {$age}\nGender: $gender");
\DevDasher\PTB\_endConversation();
},
conversation_data: ['age' => \DevDasher\PTB\_text()],
);
} on line 6
Thank you.
.................................................................................