ارسال پیام به تمامی کاربران ربات تلگرام + ذخیره اطلاعات در mysql

سلام خدمت همراهان گرامی
به دلیل استقبال زیاد شما کاربران گرامی و سوالات متعددی در مطلب آموزش ارسال پیام به کاربران با کمک دیتابیس sqlite که ایجاد شده، قصد داریم سری جدید این آموزش رو این مطلب تقدیمتون کنیم. سعی میکنم به صورت خیلی ابتدای کار رو جلو ببرم تا عزیزانی که آشنایی زیادی به برنامه نویسی ندارند خیلی گیج نشوند و نکته بعد اینکه ما برای اینکه بتونیم راحت تر با دیتابیس کار کنیم از کلاس آماده pdo استفاده میکنیم (PHP-PDO-MySQL-Class)

1- ربات مورد نظرمون رو در تلگرام ایجاد میکنیم( به این مطلب مراجعه کنید ).
نکته : فراموش نکنید که حتما باید این فایل ها رو روی دامنه آپلود کنید، که https فعال باشد (معمولا اکثر هاستینگ ها گواهینامه رایگان ارائه میدند).

۲- جدول users رو در دیتابیستون ایجاد کنید:

-- Table structure for table `users`

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `first_name` varchar(100) DEFAULT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `username` varchar(100) DEFAULT NULL,
  `user_id` int(20) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

-- Indexes for table `users`
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `user_id` (`user_id`);

۲- فایل index.php رو ایجاد کنید و فایل pdo.php رو هم کنار index کپی کنید:
– در ابتدای فایل index، کلاس pdo را فراخوانی میکنیم.
– در لاین ۳ اطلاعات دیتابیس را وارد کنید. 
– در بعد API_KEY ربات را وارد کنید.
– در لاین ۵ آیدی چت کاربر ادمین را وارد کنید.

<?php
require("pdo.php");
$DB = new Db(DBHost, DBName, DBUser, DBPassword);
define('API_KEY','698124598:AAGMs23xOccSbv4wziip12-OF9J__avJknE');
$telegram = json_decode(file_get_contents('php://input'),true);
$admin = '70532057';
$data = $telegram['message']['chat'];
$text = $telegram['message']['text'];


	if($text == "/start"){
	    $exist = $DB->query("SELECT id FROM users WHERE user_id=".$data["id"]);
	    if(count($exist) != 1 )
            $DB->query("INSERT INTO users(first_name,last_name,username,user_id) VALUES(?,?,?,?)", array($data["first_name"],$data["last_name"],$data["username"],$data["id"]));

	    if(count($exist) == 0)
	        $message = "اطلاعات شما در دیتابیس ذخیره شد.";
	    else
	        $message = "اطلاعات شما در دیتابیس موجود می باشد.";

        bot(
            'sendMessage', [
            'chat_id'=> $data['id'],
            'text'=> $message,
        ]);
    }else{

	    if($data["id"] == $admin){
	        $allUser = $DB->query("SELECT user_id FROM users"); //دریافت یوزر آیدی تمام کاربران
            for( $x=0 ; $x <= count($allUser) ; $x++){
                bot(
                    'sendMessage', [
                    'chat_id'=> $allUser[$x]['user_id'],
                    'text'=> $text,
                ]);
            }

        }
    }


	function bot($method,$datas=[]){
        $url = "https://api.telegram.org/bot".API_KEY."/".$method; $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$datas);
        $res = curl_exec($ch);
        if(curl_error($ch)){
            var_dump(curl_error($ch));
        }else{
            return json_decode($res);
        }
    }

۳- زمانی که پیام برابر start/ باشد، یه کوئری به دیتابیس میزنیم و چک میکنیم که اطلاعات کاربر قبلا در دیتابیس موجود بوده یاه نه، در صورتی که اطلاعات کاربر موجود نباشد، نام – نام خانوادگی – یوزرنیم و چت آیدی کار بر را در دیتابیس ذخیره میکنیم.
۴- حالا اگر مدیر یه پیام در ربات ارسال کنه برای همه کاربرانی که در ربات هستند ارسال میشه، فقط فراموش نکنید این قابلیت رو فقط مدیری داره که آیدیش در لاین ۶ اضافه شده .


همینک دیدگاه خود را برای ما بنویسید!