رفتن به مطلب
سرور های مجازی ارزان ، هاست ربات لینوکسی ارزان ، پیشنهاد ویژه باتچی ! ×
انجمن تخصصی بات چی | BotChi | انجمن ربات تلگرام

ثبت اطلاعات کاربران ربات در دیتابیس + ارسال پیام به تمامی کاربران ربات


BotFather

ارسال‌های توصیه شده

Add-User-Bot.jpg.560805eb57f2d0ac5cf78497ba6d219e.jpg

 

در این آموزش قصد داریم که اطلاعات تمامی کاربران رو در دیتابیس sqlite ذخیره کنیم، تا هم آمار کاربران ربات رو داشته باشیم و هم بتوانیم به تمامی کاربران پیام ارسال کنیم .
ابتدا یک ربات در تلگرام ایجاد کنید، در صورتی که نیاز به آموزش ساخت دارید به این مطلب مراجعه کنید .

۱- یک دیتابیس با فیلد های (id – user_id – name – last_name – username – date) در sqlite یا mysql ایجاد میکنیم . چون میخوایم با PDO کار کنیم مهم نیست از چه دیتابیسی استفاده میکنید .

 

CREATE TABLE "main"."users" 
("id" INTEGER PRIMARY KEY NOT NULL UNIQUE , "user_id" VARCHAR, "name" VARCHAR, "last_name" VARCHAR, 
"username" VARCHAR, "date" DATETIME DEFAULT CURRENT_TIMESTAMP)


تیبل users رو در sqlite رو ایجاد کنید . برای مدیریت sqlite بهترین گزینه افزونه فایرفاکس است .


 

try{
$conn = new PDO("sqliteb.sqlite");
$conn->exec('set names utf8');
}catch(PDOException $e){
echo $e->getMessage();
}

try {
$insert = $conn->prepare("INSERT INTO `users` ( `user_id`, `name`, `last_name`, `username`) VALUES (:user_id, :name , :last_name , :username)");
$insert->execute(array(
':user_id' => '465428445',
':firest_name' => 'tooba',
':last_name' => 'web',
':username' => '@tooba_co',
)); 
} catch(PDOException $e) {
echo $e->getMessage(); 
}

 

در قدم بعد فایل sql رو به همراه index.php در هاستتون آپلود کنید و مطمئن بشید که کوئری insert به درستی کار میکنید .توضیحات کد بالا :
– ابتدا میایم به sqlite متصل میشیم .
– در سطر ۹ اطلاعاتی رو که ربات تلگرام برامون ارسال میکنه رو به صورت آبجکت دریافت میکنیم . توسط فانکشن objectToArray اطلاعات دریافتی رو به آرایه تبدیل میکنیم .
– در سطر ۱۲ چت آیدی خودتون رو وارد کنید ( برای دریافت چت ایدی میتونید از این ربات استفاده کنید ) و در سطر ۶۸ توکن ربات رو وارد کنید .
– فانکشن sendMessage برای ارسال پیام به کاربر می باشد .

<?php
try{
$conn = new PDO("sqliteb.sqlite");
$conn->exec('set names utf8');
}catch(PDOException $e){
echo $e->getMessage();
}


$string = json_decode(file_get_contents('php://input'));
$result = objectToArray($string);
$user_id = $result['message']['from']['id'];
$admin = '219985226';
$from = $result['message']['from'];
$text = $result['message']['text'];
$users = $conn->query("SELECT * FROM `users`");


$keyboard = array('keyboard' => array(array("تعداد کاربران", "خرید سرور مجازی")),'one_time_keyboard'=>true,'resize_ke yboard'=>true);
$keyboard = json_encode($keyboard);




if( $admin != $user_id){


if($text == '/start'){
try {
$insert = $conn->prepare("INSERT INTO `users` ( `user_id`, `name`, `last_name`, `username`) VALUES (:user_id, :name , :last_name , :username)");
$insert->execute(array(
':user_id' => $user_id,
':name' => $from['first_name'],
':last_name' => $from['last_name'],
':username' => $from['username'],
));
sendMessage("خوش امدید . اطلاعات شما در سیستم ثبت شد ." , $user_id , null);


} catch(PDOException $e) {
echo $e->getMessage(); 
} 
}


}else{
if($text == '/start')
sendMessage("خوش آمدید" , $user_id , $keyboard);
elseif($text == 'تعداد کاربران')
sendMessage("تعداد کاربران : ".count($users->fetchAll()) , $user_id , $keyboard);
elseif($text == 'خرید سرور مجازی')
sendMessage("https://my.tooba.co/cart.php?gid=3&currency=2" , $user_id , $keyboard);
else{
foreach($users->fetchAll(PDO::FETCH_ASSOC) as $value){
sendMessage($text , $value['user_id'] , $keyboard);
} 
}


}




function objectToArray( $object )
{
if( !is_object( $object ) && !is_array( $object ) ){
return $object;
}
if( is_object( $object ) ){
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}




function sendMessage($text , $user_id , $keyboard = null){
$token = '414354064:AAsgrcHLd3fi4mEErMPP45selX_Zoi2o';
$key = ($keyboard != null)? $keyboard : '';
$url = 'https://api.telegram.org/bot'.$token .'/sendMessage?text='.$text.'&chat_id='.$user_id.'&re ply_markup='.$key ;
file_get_contents($url);
}

برای ارسال پیام به همه کاربران، لازمه از تلگرام ادمین (همون چت آیدی که در سطر ۱۲ وارد کرده اید) پیام رو ارسال کنید . کاربران قادر به مشاهده کیبورد اختصاصی نمی باشند.
 

سورس کامل ربات پیوست شد.

bot-send-message.zip

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 7 ماه بعد...

با سلام و سپاس 

 

خوشحالم که در کنار شما عزیزان هستم

 

ببخشید اطلاعات دیتابیس رو کجای این index.php باید اعمال کنیم .

 

چون من قسمتی مربوط به dbname , userdb ,password پیدا نکردم .

 

مممنون

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • 3 ماه بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   بازگردانی قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...