PDA

View Full Version : سوال و گرفتن جواب از کاربر در ربات تلگرام



hadi2016
چهارشنبه 05 مهر 1396, 16:13 عصر
سلام دوستان
من رباتمو از روش وب هوک به وبسایتم وصل کردم سوالی که داشتم اینه که با روش sendmesaage سوال رو برای کاربر میفرستم اما نمیدونم چجوری باید جوابشو بگیرم
برای مثال نام و نام خانوادگی و سن و ... از کاربر سوال بشه و کاربر پس از پاسخ به سوالات جوابشو ازش بگیرم و ذخیره کنم
لطفا نمونه کد بهم بدید ممنون میشم

thacker
چهارشنبه 05 مهر 1396, 17:16 عصر
شما از کلاس خاصی استفاده میکنید ؟ لطفا کدهایی که استفاده میکنید رو بفرستید تا بر اساس اون کد ها راهنماییت کنیم

hadi2016
چهارشنبه 05 مهر 1396, 17:43 عصر
از کلاس خاصی استفاده نمیکنم مشکل من اینه میدونم چجوری برای کاربر سوال بفرستم اما نمیدونم چجوری جوابشو بریزم تو یه متغیر
این کد منه



<?php$message= file_get_contents("php://input");$arrayMessage= json_decode($message, true);$token= "my token";$chat_id= $arrayMessage['message']['from']['id'];$command= $arrayMessage['message']['text'];if($command == '/start'){ $text= "سلام، به ربات ما خوش آمدید"; $url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text; file_get_contents($url); } else{ $text= "لطفا نام خود را وارد کنید"; $url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text; file_get_contents($url); }

thacker
چهارشنبه 05 مهر 1396, 18:03 عصر
<?php
php $message = file_get_contents("php://input");
$arrayMessage = json_decode($message, true);
$token = "my token";
$chat_id = $arrayMessage['message']['from']['id'];
$command = $arrayMessage['message']['text'];

if ($command == '/start')
{
$text = "سلام، به ربات ما خوش آمدید";
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);
}
else
{
$text = "لطفا نام خود را وارد کنید";
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);
}


متغییر $command همون متنی هست که کاربر به ربات ارسال میکنه دیگه !!

hadi2016
چهارشنبه 05 مهر 1396, 20:40 عصر
<?php
php $message = file_get_contents("php://input");
$arrayMessage = json_decode($message, true);
$token = "my token";
$chat_id = $arrayMessage['message']['from']['id'];
$command = $arrayMessage['message']['text'];

if ($command == '/start')
{
$text = "سلام، به ربات ما خوش آمدید";
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);
}
else
{
$text = "لطفا نام خود را وارد کنید";
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);
}


متغییر $command همون متنی هست که کاربر به ربات ارسال میکنه دیگه !!
درسته اما من بعدش هم میخوام نام خانوادگی و سن و شماره موبالشو بگیرم. با این کد من نمیتونم تشخیص بدم که ورودی مربوط به کدوم مشخصه کاربره سنشه یا نامشه یا ...
الان چه کدی بنویسم که چندتا سوال از کاربر بپرسم و چندتا جواب بگیرم
ممنون از کمکت

thacker
چهارشنبه 05 مهر 1396, 21:02 عصر
شما باید از دیتابیس توی پروژتون استفاده کنید.
هر کاربر رو توی دیتابیس ثبت کنید و یک مقدار به عنوان مرحله ای که کاربر درش قرار داره در نظر بگیرید.
مثلا زمانی که کاربر دکمه « ثبت اطلاعات » رو زد ، از کاربر بخواهید اسم رو وارد کنه و مرحله رو در دیتابیس تغییر بدید ، سپس از کاربر درخواست ورود موبایل کنید و مرحله رو دوباره تغییر بدید . مثال :
یک دیتابیس بسازید و این کد ها رو توی SQL دیتابیس وارد کنید :

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
`userID` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`mobile` varchar(128) COLLATE utf8_unicode_ci NOT NULL,
`level` varchar(4) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


ALTER TABLE `users`
ADD PRIMARY KEY (`id`);

ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

بعدش این کدها رو توی ربات قرار بدید :

<?php
$hostname = "localhost";
$db ="نام دیتابیس";
$muser = "کاربر دیتابیس";
$pass = "رمز دیتابیس";
$dbconn = mysqli_connect($hostname, $muser, $pass, $db) or die(mysqli_error("خطای پایگاه داده!"));
mysqli_set_charset($dbconn,'utf8');

php $message = file_get_contents("php://input");
$arrayMessage = json_decode($message, true);
$token = "my token";
$chat_id = $arrayMessage['message']['from']['id'];
$command = $arrayMessage['message']['text'];

$query = mysqli_query($dbconn, "SELECT * FROM `user` WHERE `userID` = '$chat_id' LIMIT 1");
$chekUser = mysqli_num_rows($query);
if($chekUser > 0) {
$row = mysqli_fetch_array($query);
$leve = $row['leve'];
}

if ($command == '/start') {

if($chekUser < 1) {
$add = mysqli_query($dbconn,"INSERT INTO `user` VALUES ('', '$chat_id', '', 'A')");
}
$text = "سلام، به ربات ما خوش آمدید ، لطفا نام خود را وارد کنید";
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);

}

if($level == 'A') {

$edit = mysqli_query ($dbconn,"UPDATE `user` SET `name` = '$command', `level` = 'B' WHERE `userID` = '$chat_id' LIMIT 1");
$text = $command.' عزیز، نام شما دریافت شد . لطفا شماره تماس خود را وارد کنید.';
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);

}

if($level == 'B') {

$edit = mysqli_query ($dbconn,"UPDATE `user` SET `mobile` = '$command', `level` = 'C' WHERE `userID` = '$chat_id' LIMIT 1");
$text = 'با تشکر از شما';
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chat_id . "&text=" . $text;
file_get_contents($url);

}
?>