ارسال عکس، فیلم و صوت با ربات تلگرام: قسمت چهارم ربات تلگرام با PHP

نوشته شده توسط:
قسمت های دیگر این مطلب:

در قسمت‌های قبل با ربات تلگرام آشنا شدیم و یاد گرفتیم که چگونه به درخواست‌های کاربران پاسخ مناسب بدهیم. در این قسمت یعنی قسمت چهارم برنامه نویسی با php برای ربات تلگرام با ارسال عکس، صوت، فیلم، مستندات، استیکر، موقعیت مکانی، کارت دعوت، اطلاعات تماس و وضعیت فعالیت بات آشنا می‌شویم.

ارسال تصاویر برای بات تلگرام با متد sendPhoto:

برای ارسال عکس با ربات تلگرام از متد sendPhoto استفاده می‌کنیم. متد sendPhoto تصویر را با استفاده از POST برای کاربر ارسال می‌کند. در مثال زیر با CURL کار ارسال را انجام می‌دهیم:

$url= "https://api.telegram.org/bot".$token."/sendPhoto?chat_id=".$chat_id;
$post = array(
    'photo'     => new CURLFile(realpath("hitos.jpg"))
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);

دستورات بالا عکس موجود در ریشه جاری با نام hitos.jpg را به کاربر ارسال می‌کند.

می توان زیر تصاویر متنی برای توضیح ارسال کرد. برای ارسال این مقدار از پارامتر caption به شکل زیر استفاده می‌کنیم:

$url= "https://api.telegram.org/bot".$token."/sendPhoto?chat_id=".$chat_id."&caption=متن کپشن";

ارسال تصاویر برای بات تلگرام با متد sendAudio:

ارسال صوت در تلگرام شبیه ارسال تصویر است. در زیر مثالی از استفاده از این متد مشاهده می‌کنید:

$url= "https://api.telegram.org/bot".$token."/sendAudio?chat_id=".$chat_id;
$post = array(
    'audio'     => new CURLFile(realpath("hitos.mp3"))
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);

در بالا مانند sendPhoto فایل صوتی خود را با curl و متد پست ارسال می‌کنیم.

متد sendAudio پارامتر‌های اختیاری زیر را دارد:

نکته: محدودیت حجمی ارسال فایل‌های صوتی با بات تلگرام 50 مگابایت است.

ارسال فیلم برای بات تلگرام با متد sendVideo:

بهترین حالت ارسال فیلم برای بات تلگرام ارسال فیلم با فرمت mp4 است. هر چند که فرمت‌های دیگر نیز ممکن است ارسال شوند. اگر از فرمت خاصی استفاده کنید که تلگرام امکان ارسال آن به عنوان video را نداشته باشد خود تلگرام آن را به عنوان document ارسال می‌کند:

$url= "https://api.telegram.org/bot".$token."/sendVideo?chat_id=".$chat_id;
$post = array(
        'video'     => new CURLFile(realpath("hitos.mp4"))
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);

ارسال مستندات برای بات تلگرام با متد sendDocument:

مثالی از ارسال مستندات با بات تلگرام را در زیر می‌بینید:

$url= "https://api.telegram.org/bot".$token."/sendDocument?chat_id=".$chat_id;

برای متد sendDocument نیز می‌توان caption ارسال کرد.

نکته: محدودیت حجمی ارسال مستندات با بات تلگرام 50 مگابایت است.

ارسال استیکر برای بات تلگرام با متد sendSticker:

فرمت پیشنهادی تلگرام برای ارسال استیکر فرمت webp است. اگر تصاویر خود را با این فرمت به عنوان استیکر ارسال کنید خروجی کار بهتر خواهد بود، هر چند می‌توان عکس‌هایی با فرمت‌های دیگر را نیز ارسال کرد.

اگر تصویری با فرمت‌های رایج دارید و می‌خواهید به webp تبدیل کنید از این سایت استفاده کنید.

$url= "https://api.telegram.org/bot".$token."/sendSticker?chat_id=".$chat_id;
$post = array(
        'sticker'     => new CURLFile(realpath("hitos.webp"))
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);

ارسال موقعیت برای بات تلگرام با متد sendLocation:

در این متد با داشتن طول و عرض موقعیت جغرافیایی یک عکس و لینک از آدرس محل مورد نظر برای کاربر ارسال می‌شود:

$url= "https://api.telegram.org/bot".$token."/sendLocation?chat_id=".$chat_id."&latitude=37.7576793&longitude=-122.5076402";
file_get_contents($url);

ارسال کارت دعوت برای بات تلگرام با متد sendVenue:

این متد بسیار شبیه sendLocation است با این تفاوت که عنوان و آدرس نیز می‌توان به آن اضافه کرد:

$url= "https://api.telegram.org/bot".$token."/sendVenue?chat_id=".$chat_id."&latitude=37.7576793&longitude=-122.5076402&title=عنوان&address=آدرس";
file_get_contents($url);

ارسال مشخصات تماس برای بات تلگرام با متد sendContact:

متد فوق بسیار ساده است، شماره، نام و نام خانوادگی مشترک را دریافت و مشخصات تماس را برای کاربر ارسال می‌کند:

$url= "https://api.telegram.org/bot".$token."/sendContact?chat_id=".$chat_id."&phone_number=09122222222&first_name=hitos&last_name=.ir";
file_get_contents($url);

ارسال وضعیت عملکرد بات برای بات تلگرام با متد sendChatAction:

متد فوق کارکرد جالبی دارد، فرض کنید قرار است با بات برای کاربر ویدیو حجیمی بفرستید مدت زمانی که کاربر صبر می‌کند تا ویدیو به دستش برسد جالب است که متن sending a video"" برای کاربر نمایش داده شود و پس از آن کلیپ ویدیو به نمایش درآید:

$url= "https://api.telegram.org/bot".$token."/sendChatAction?chat_id=".$chat_id."&action=upload_video";
file_get_contents($url);

$url= "https://api.telegram.org/bot".$token."/sendVideo?chat_id=".$chat_id;
$post = array(
'video'     => new CURLFile(realpath("hitos.mp4"))
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);
تگ ها: messenger / پیام رسان ربات تلگرام / Telegram Bot تلگرام
نظر خود را برای این مطلب وارد کنید
دریافت خبرنامه
مهدی

سلام
مطالبی که آموزش دادید رو کاملا مطالعه کردم چیزی که بنظرم جاش خالی بود این بود که توضیح بدید چطور متوجه بشیم کاربر در پاسخ به اون متنی که ما میفرستیم جواب داده. مثلا من یک باتن یا دکمه ایجاد کردم ارسال نام و نام خانوادگی شما... بعد از این که کاربر کلیک کرد یک پیغام ارسال می کنم که لطفا نام و نام خانوادگی را وارد کنید... در این حالت کاربر باید متن وارد کنه اما خب وقتی متن ارسالی کاربر جز اون دسته بندی نباشه شامل else آخری میشه که اگر جز اونا نبود پیغام بفرسته دستور اشتباه وارد شده !
لطفا راهنمایی کنید چطور از آخرین وضعیت دکمه ی کلیک شده مطلع بشیم!

}else if($command == "وارد کردن نام"){
$text= "نام خود را وارد کنيد...";
$hide_keyboard= json_encode(array('hide_keyboard' => true));
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text."&reply_markup=".$hide_keyboard;
file_get_contents($url);
}else{
}
پاسخ:

سلام دوست عزیز

کار سختی نیست و باید سورس ربات رو مجهز به دیتابیس بکنید.

در آینده یک آموزش کامل از این بخش می ذارم روی سایت.

zahra

سلام ببخشید من کیبورد ایجاد کردم میخوام وقتی کاربر دکمه رو زد همان دکمه در دیتابیس ذخیره بشه در اصل میخوام در یک متغیر ذخیره بشه تا بعدا با کد اینسرت تو دیتا بیس درج کنم!! کد اینسرتم مشکلی نداره ولی برای ذخیره کیبورد نمیدونم چیکار بکنم؟

if($text1=='/start')
{$reply=array('keyboard'=>array(array('اصفهان','تهران')),'resize_keyboard'=>true);
$text = 'لطفا شهر موردنظر را انتخاب نماييد: ';}
پاسخ:

سلام. متوجه منظورتون نمی شم. بیشتر توضیح بدید.

محمد

سلام من طبق این آموزش برای خودم یه ربات ساختم فقط یه مشکلی دارم چطور میشه که این ربات تو گروه من جواب رو بفرسته ممنون میشم اگه راهنمایی کنید

پاسخ:

در آینده یک آموزش خوب برای عضو کردن ربات در گروه های تلگرامی آماده می کنم.

جواد

سلام وقتتون بخیر

از سورس ها و متد هایی که آموز دادی استفاده کردم و واقعا ممنونم ازتون خیلی مفید بودند

فقط من میخوام وقتی تصویر برای یوزر ارسال میشه هم زمان کلید هایی هم به کاربر نشون داره بشه که یکی از گزینه هارو انتخاب کنه و سوال بعدی براش ظاهر بشه چکار باید بکنم؟

پاسخ:

سلام جواد عزیز

شما با هر پیامی که برای کاربر ارسال می کنید با استفاده از reply_markup می تونید این کیبورد را تغییر بدهید. 

سجاد

سلام

اگه خواسته باشیم یه عکس که قبلا در سرور تلگرام اپلود شده رو دوباره بفرستیم نیاز به اپلود مجدد نیس و با لینک زیر میشه فرستاد

https://api.telegram.org/bot000/sendPhoto?chat_id=000&photo=000&parse_mode=HTML

ایا همچین روشی برای ارسال فایل های صوتی تکراری هم هست؟

با تشکر

پاسخ:

سلام

بله تفاوتی نمی کنه

Aram

سلام و تشکر بابت آموزش ها

من میخوام یه ربات بسازم که قیمت ارز را به کاربر های ربات بفرسته نه با دستور وارد کردن کاربر ها هر وقت خودم قیمت را تغییر دادم قیمت جدید ازسال بشه از چه روشی استفاده کنم؟

پاسخ:

سلام Arman: بله مشکلی نیست، فقط باید کاربراتون یک بار به robot شما متصل بشه، و شما اطلاعاتش رو تو دیتابیستون ذخیره کنید. هر وقت نرخ ارز عوض شد به راحتی یک پیام برای کاربراتون ارسال کنید.

حسام آقاجانی

سلام خسته نباشید من یک دستور گذاتشم تا درصورت اجرا عکس بفرسته اما فرستاده نمیشه ممنون میشم مشکلمو بهم بگید. با تشکر:

<?php

header('Content-Type: text/html; charset=utf-8');
$message= file_get_contents("php://input");
$arrayMessage= json_decode($message, true);
$token= "X";
$chat_id= $arrayMessage['message']['from']['id'];
$command= $arrayMessage['message']['text'];

if($command == '/start'){
    $url= "https://api.telegram.org/bot".$token."/sendPhoto?chat_id=".$chat_id;
    $post = array(
    'photo'     => new CURLFile(realpath("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"))
    );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);
	
else{
    $text= "Command Not Found";
    $url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chat_id."&text=".$text;
    file_get_contents($url);
}
	
?>
پاسخ:

سلام

مشکل در دستور if هست. قبل از else باید براکت if رو ببنید.

حسام آقاجانی

سلام درست نشد.

ابوالفضل

من میخوام عکس رو از کاربر بگیره و بعد از اعمال تغییرات بفرستتش ، چطوری میشه؟

پاسخ:

خوب شما پس از دریافت عکس از کاربر اون عکس رو تو سرور ویرایش می کنید و به id اون کاربر ارسال می کنید.

ابوالفضل

ولی مشکلی که دارم اینه که نمیتونم برای این کار به مشخصهfile id توی json دسترسی پیدا کنم،یعنی مثلا میشه با
[message][from][id] آی دی فرستنده رو گرفت ولی وقتی میخوام مشخصه file_id رو بگیرم نمیشه،چطوری میتونم بگیرمش؟

{"ok":true,"result":[{"update_id":514191839,
"message":{"message_id":898,"from":{"id":101150186,"first_name":"Abolfazl","username":"myid"},"chat":{"id":101150186,"first_name":"Abolfazl","username":"myid","type":"private"},"date":1487570256,"photo":[{"file_id":"AgADBAAD4KcxG9qfWFEqGZHRzv1IReOGnhkABOym5qINB41gwLIBAAEC","file_size":480,"width":90,"height":44},{"file_id":"AgADBAAD4KcxG9qfWFEqGZHRzv1IReOGnhkABCkXQqPZCWHswbIBAAEC","file_size":2694,"width":273,"height":132}]}}]}

با تشکر

پاسخ:

خوب شما باید از json_decode استفاده کنید تا json رو تبدیل به یک آرایه معمولی php کنید.

ابوالفضل

پیدا شد بالاخره ☺

$key['message']['photo'][0]['file_id'];
حسام آقاجانی

سلام خسته نباشید از طریق چه متدی میشه فایل doc , xlsx , pdf یا چیزای دیگه فرستاد ؟

پاسخ:

سلام

از sendDocument استفاده کنید.

ابوالفضل

بنظرتون مشکل این یک خط چیه گه عکس رو نمیفرسته؟

$url= "https://api.telegram.org/bot".$token."/sendPhoto?chat_id=".$key['message']['from']['id'];
$post = array(
'photo' => new CURLFile(realpath("hitos.jpg"))
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);
file_get_contents($url);
پاسخ:

من کدتون رو بررسی کردم باید کار کنه. file_get_contents آخر رو برای چی نوشتید؟

ابوالفضل

خط آخر برای اجراش لازم نیست؟فکر کردم لازمه

نمیدونم چرا مشکل داره برام

یه چیز دیگه

یه sdk هست که بنظر اون هم از همین روش استفاده میکنه منتها به ما توابع آماده میده،این صفحه رو ببینید:

https://telegram-bot-sdk.readme.io/reference

امکانش هست یه توضیح کوچیک برا نصبش بدید؟چون اصلا سر در نمیارم چجوری باید به توابعش دسترسی داشته باشم

بابت پرسش های زیادم عذر میخوام :-(

با تشکر

پاسخ:

نه خط آخر لازم نیست.

در ضمن SDK ای که دادید برای فریم ورک لاراوله که فقط کار رو سخت می کنه.

طرز کار ربات تلگرام خیلی راحته و اصلا نیازمند هیچ چیز اضافه ای نیست.

سپهر

سلام
بنده یه کد ساده برای چت بین کاربر سایت با با تلگرام میخواهم میشه بنده را راهنمایی کنید
هر چی بعد از دستور if از دستور echo برای پرینت اطلاعات استفاده میکنم نمیشه خواهش میکنم کمک کنید
فقط یه چت ساده دوطرفه بین کاربر سایت با روبات تلگرام همین ):

پاسخ:

سلام خدمت شما دوست گرامی.

ارتباطی نداره دستورات با echo برای کاربر تلگرام ارسال نمی شن. همه قسمت های آموزش رو با دقت بخونید.

رامین

با سلام من میخوام رباتی طراحی کنم مطالب از کانالی فوروارد بشه ربات ردپای مطلب رو پاک کنه آی دی و لینک و اسم کانالی که فوروارد زده شده و بعد درج آی دی کانالم به کانالم بفرسته

پاسخ:

سلام

در آینده آموزشی برای این کار در سایت منتشر می شه.

سپهر

سلام
بنده میخواهم بین روباتم که روی هاست خودم هست با یه پنجره چت توی سایتم ارتباط داشته باشم ولی هر کاری میکنم نمیشه میخواهم یه چت لایو ساده درست کنم مثل افزونه
Universal Chat
که توی وردپرس هست

کد روبات رو تغییر دادم به شکلی که اطلاعات را در داخل دو فایل txt ذخیره کنه برای ارسال و دریافت

اما مشکل اینجا هست که باید از هر طرف یه دستور ارسال بشه تا جواب قبلی طرف مقابل را دریافت کنه !!

با تشکر

پاسخ:

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

عبدالله
دستتون درد نکنه آموزش فوق العاده بود
محمد

سلام
چه طوری میشه عضویت یک کاربر را در کانال خودمان چک کنیم که عضو شده یا خیر؟

پاسخ:

سلام

می توان با آیدی چک کرد.

arya

آقا ممنون خیلی کامل و مفید بود

یه سوال داشتم اگر بخوا عکس از دیتابیس مستقیم بفرستم کدش چه جوری میشه منظورم

به جای اسم فایل فیلد BLOB مستقیم قبول نمی کند

پاسخ:

مشکلی وجود نداره و هم به صورت معمولی می تونید بفرستید و هم از CURL استفاده کنید.

vds

سلام

وقت شما بخیر

ببخشید سوالی داشتم در خصوص ارسال مشخصات کاربری

چگونه می توان از فردی که عضو ربات است، مشخصات کاربری وی را دریافت نمود؟

به عنوان مثال دکمه ای قرار دهیم و مشترک با کلیک بر روی آن، نام کاربری و شماره تماس تلگرام خود را برای ربات ارسال نماید و ربات آن را به مدیر فوروارد نماید.

پاسخ:

سلام دوست عزیز

کار مشکلی نیست، فقط ترتیب ارسال ها بسیار مهم است.

مثلا فرض کنید کاربر در خواست ثبت نام می دهد، شما یک پیام به کاربر ارسال می کنید که نام خود را وارد کنید و کاربر ارسال می کنه و اون برای شما میاد، در مرحله بعد شما پیام شماره تماس خود را وارد کنید و کاربر اون رو براتون ارسال می کنه و ...

سمت سرور هم به سادگی عملیات ثبت درخواست ها انجام می شه.

vds

سلام

سپاس از پاسخگویی شما

بنده در همان روز پس از جستجویی، کدها را نوشتم و به درستی نیز پاسخ داد.

سوال دیگری داشتم در خصوص اندازه دکمه های صفحه کلید.

اگر قابلیت Resize هم فعال باشد، شما به طور مثال پنج دکمه قرار دهید، دکمه ها خیلی کوچک خواهند شد و البته در یک دریف.

برای اینکه در دو یا چند ردیف قرار گیرند، چه باید کرد؟

کد بنده هم مانند کد شما است اما با یک آرایه اضافه که با ساختار text و requestهایی که تلگرام معرفی کرده، نوشته شده است.

پاسخ:

سلام

برای تغییر در تعداد دکمه های هر سطر باید اون ها رو در یک آرایه دیگه گذاشت. مثلا به جای قرار دادن چهار کلید در یک آرایه، دو تا را در یک آرایه و دو تا را در آرایه دیگر قرار دهید. مثال زیر رو ببینید:

    $poets= array(
        'keyboard' => array(
                array('/Ferdowsi', '/Mawlawi'),
                array('/Hafez', '/Rudaki')
            ),
        );
مهرداد

با سلام

من ربات طراحی کردم که در ارسال عکس با ربات کدهای من مشکل دارن

تا اونجایی که میدونم همه را درست وارد کرده ام

لطفا بنده رو راهنمایی کنید تا بدونم اشتباهم کجاست

متد CURL به شرح زیر است

public function executeCURL($url,$post_fields)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"content-Type:multipart/form-data" 
));

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$output = curl_exec($ch);
}

متد ارسال عکس نیز به شرح زیر است:

public function sendphoto($userid,$caption,$options)
{
$url = 'https://api.telegram.org/bot'.$this->token.'/sendphoto';

$keyboard = $this->makemenu($options);



$post_fields = Array(
'chat_id' => $userid,
'photo' => new curlfile('1.jpg'),
'caption' => $caption,
'reply_markup' => $keyboard
);

$this->executeCURL($url,$post_fields);


}


از بابت راهنمایی خیلی ممنونم

پاسخ:

سلام

گاهی Curl ىر برخی سرورها غیر فعال شده، ابتدا از فعال بودن Curl مطمین بشید.

محمد

سلام
چطوری میشه به همه ی کاربران ربات به صورت همزمان پیام ارسال کرد؟

پاسخ:

سلام

اگر شما شناسه کاربرا رو ذخیره داشته باشید به راحتی می تونید با یک حلقه ساده به تمام کاربرا پیام ارسال کنید.

مینا

سلام آقای موسوی چطور میتونم مثلاً کاربر یه عکسی فرستاد این عکس رو دانلود کنم

میدونم متد getfile هست ولی چطوری ازش استفاده کنم اون فیلد آی دی عکس رو بگیرم و ذخیره کنم

ممکنه کد این بخشو برام بزارید

تشکر میکنم

پاسخ:

سلام

متد getfile بهتون سه شناسه می ده که با اون ها باید عکس رو دریافت کنید.

محمد

سلام
خسته نباشید
چه جوری میشه مقدار start رو از این url ربات گرفت و به سمت سرور سایتمون ارسال کرد؟
مثلا این آدرس ربات و مقدار start هست
http://telegram.me/funpatogh2017_bot?start=73782230
الان به چه شکلی میتونم مقدار start رو دریافت کنم

پاسخ:

سلام

سخت نیست و فقط باید رشته رو در php پردازش کنید. مثلا برای رشته فوق داریم:

<?php
$str= "http://telegram.me/funpatogh2017_bot?start=73782230";
echo substr($str, strpos($str, "=") + 1);
?>

خروجی کدهای بالا شناسه پس از علامت مساوی است.

محمد

الان مشکلم اینه که چه طوری مقدار start رو توی متغییر str$ که شما مثال زدید بریزم

مثلا با $_GET میشد مقدار متغییر رو از url گرفت ولی توی تلگرام چه جوری دریافتش کنم که سمت سرور php پردازشش کنم

این لینک رباط

http://Telegram.me/funpatogh2017_bot?start=73782230

پاسخ:

متوجه منظورتون نمی شم، لطفا واضح تر بگید.

کریم قاسمی

سلام

خسته نباشین

ربات ها عضو گیر رو دیدین، اونا یک لینک دعوت میسازن مثل این http://Telegram.me/funpatogh2017_bot?start=73782230 و بعد ما با کلیک روی این لینک وارد ربات میشیم، حالا سوال اینجاس چطوری بفهمم طرف معرفش کی بوده ؟

این کد معرفشه 73782230 و میدونم,ولی وقتی وارد ربات میشه این کجا ذخیره میشهhttp://Telegram.me/funpatogh2017_bot?start=73782230؟

پاسخ:

سلام

این ربات ها واقعی نیستن و عملا نمی شه چنین کاری تو تلگرام انجام داد.

ولی الگوریتمشون به این شکله که شما برای دوستانتون دعوت نامه می فرستید و اونا هم دیگران رو عضو می کنند یکی از این اعضا به صورت تصادفی به شما داده می شود که از پروفایل شما دیدن کرده است.

رضا

سلام ، اگر بخوام به دستور ارسال داکیومنت یه اینلاین اضافه کنم کد چطور میشه ؟

پاسخ:

سلام.

خوب باید درخواست داده بشه و بعد کاربر فایل ارسال کنه.

سید

سلام

طبق پاسخ زیر به یکی از دوستان دقیقا چطور میشه نام و نام خانوادگی رو دریافت کرد و در آخر تکمیل ثبت نام به کاربر پیام تکمیل ثبت نام را بفرستیم

پاسخ:

سلام دوست عزیز

کار مشکلی نیست، فقط ترتیب ارسال ها بسیار مهم است.

مثلا فرض کنید کاربر در خواست ثبت نام می دهد، شما یک پیام به کاربر ارسال می کنید که نام خود را وارد کنید و کاربر ارسال می کنه و اون برای شما میاد، در مرحله بعد شما پیام شماره تماس خود را وارد کنید و کاربر اون رو براتون ارسال می کنه و ...

سمت سرور هم به سادگی عملیات ثبت درخواست ها انجام می شه.

پاسخ:

سلام

بله دوست عزیز.

همانطور که می دونید رشته Json ای که شما از سمت تلگرام دریافت می کنید غیر از شناسه کاربر حاوی نام او نیز هست که می شود استخراج و در نهایت چاپ کرد.

ali

سلام

اول از همه تشکر میکنم از سایت خوبتون و همچنین خود شما برای این آموزش.

دوم میخواستم بگم که اگر میشه کانال تلگرامی تاسیس کنید و اونجا هم آموزش ساخت ربات php بزارید چون به عقیده من کانال خیلی بهتره.

پاسخ:

سلام

از این لینک استفاده کنید: https://telegram.me/hitos_ir

سید

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

اگر بخوایم کاربر خودش نام و نام خانوادگی رو وارد کند و بفرستد چطوری باید اون پیام رو بفهمیم

چون زمانی که میگیم بیاد اون پیام رو بگیره و بعدش پیام تایید رو بفرسته برای کاربر بلافاصله پس از اینکه ربات پیام نام و نام خانوادگی رو فرستاد پیام تایید رو هم میفرسته چون قبلش کاربر یک کامند رو انتخاب کرده و یا یک متن الکی ارسال کرده

باید چیکار کنیم که بگیم بعد از این که نام و نام خانوادگی بیاد شرط رو اجرا کنه و ببینه بعد از پیام ربات، متنی کاربر ارسال کرده یا نه؟

پاسخ:

سلام

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

سید

سلام
برای خوندن کیبورد شیشه ای از دیتابیس به مشکلی برخوردم
طبق کد زیر:

if(mysqli_num_rows($result) > 0)
{
while($row=mysqli_fetch_assoc($result))
{
$addad=$row['name_arykh'];
$inline=
[ 
[['text'=>$row['name_arykh'],'callback_data'=>$addad]]
];
$tlg->inline_keyboard('
پاسخ:

سلام. سینتکس کدتون مشکل داره.

سعید

سلام. متن ارسال شده با ربات در متغییری به اسم command ذخیره میشه و ما میتونیم کد بزنیم که مثلا اگه command==salam بود ربات در جواب کلمه علیک سلام رو به کاربر بفرسته.
سوال من اینه که اگه کاربر به ربات عکس ارسال کرد این عکس در چه متغییری ذخیره میشه؟

پاسخ:

سلام

منتظر باشید در آینده در این زمینه آموزشی قرار می گیره که از طریق ایمیل به شما اطلاع رسانی خواهد شد.

محمد

سلام خسته نباشید.

یک سوال داشتم ازتون اگه میشه یکن زود جواب بدید.

من میخوام به یکی از کاربرای رباتم خودم یک متن یا عکس بفرستم ایا میشه فرستاد؟

اگه میشه لطفا کامل بگید چیکار کنم

پاسخ:

سلام

آموزش همین مطلب رو دنبال کنید.

امیرحسین آقاجانی

سلام، من یه دستور لازم دارم که وقتی یه commacnd فراخوان شد،

از کاربر متن رو بگیره! (دریافت متن از کاربر)

ممنون از آموزش خوبتون...

پاسخ:

سلام

باید برای ربات خود یک پایگاه داده ایجاد کنید تا وقتی برای کاربر یک پیام مناسب ارسال کردید منتظر دریافت متن باشید.

محمد

کدوم مطلب؟

پاسخ:

https://hitos.ir/74

علی

ممنون از سایت خوبتون
فقط این چهار جلسه اموزش که گذاشتین
دیگه بعد از اینا ادامشو نمیزارین؟

پاسخ:

خواهش می کنم.

قسمت های بعدی به زودی منتشر می شه.

مهدی

با عرض سلام و تشکر بابت این اموزش خوب.اگر من بخواهم از کاربر یک کد بگیرم و فایل مخصوص ان کد که عکس است را فقط به ان کاربر بفرستم باید چه کنم؟با تشکر فراوان

پاسخ:

سلام

از ارسال و دریافت فایل استفاده می کنید که کار سختی نیست.

سعید

سلام و وقت بخیر

مرسی بابت این آموزش خوبتون

ببخشید میشه پستی رو که می خوایم به کانالمون بفرستیم رو زماندار بفرستیم؟ مثلا دستوری وارد کنیم که بگیم نیم ساعت دیگه این پست رو ارسال کن؟ یا هر ساعت دیگه ای که مد نظرمونه...

ممنون میشم اگه اطلاعاتی دارید راهنمایی کنید

پاسخ:

سلام

اگر از هاست لینوکسی استفاده می کنید می تونید از CURL استفاده کنید و کدهاتون رو در زمان مشخصی اجرا کنید.

ابوالفضل

سلام من می خوام وقتی توی پیام یک link هست لینک به کاربر نمایش داده نشه نمی دونم چی کار کنم

پاسخ:

سلام، نمونه پیامتون رو ارسال کنید ببینم.

ابوالفضل

من می خوام یک متن زیادو به یک عکس اتچ کنم وقتی آدرس عکس و تو متن متن ارسالی می زارم عکس با متن درست ارسال می شه اما بعضی جاها دیدم که ادرس عکس نیست فقط عکس و متن هست ؟

پاسخ:

اجازه بدید چند وقت دیگه یک آموزشی در این زمینه منتشر می کنم.

پوریا

سلام
ببخشید اگه بخوام بجای یه فایل توی هاست از یه لینک دانلود استفاده کنم چطوری میشه کدهاش؟
مثلا لینک یک موزیک رو میدم بهش و خروجی ربات به صورت موزیک بفرسته برای کاربر

پاسخ:

سلام

منتظر باشید تا چند وقت دیگه آموزشی در این زمینه منتشر می کنم.

پوریا

سلام دوست عزیز مقالتون خیلی عالی بود فقط یک سوال:وقتی از متد sendMessage استفاده میکنیم ی متدهای مشابه برای ارسال متن,متن هارو به صورت متراکم و بدونه فاصله و شکست خط میفرسته و امکان استفاده از اموجی های تلگرامم نیست ولی تو روبات های دیگه دیدم که استفاده میکنن ممنون میشم در این باره راهنماییم کنین

پاسخ:

سلام

شما یک متن با اموجی های مورد نظرتون تو ربات تلگرام ارسال کنید و سمت سرور اونو دریافت کنید و از همون اموجی ها تو متد sendMessage استفاده کنید.

tgvQ

سلام

خسته نباشید

ببخشید آرایه مسیج ویس به چه صورت هست؟

در واقع می خوام یک شرط بذارم: اگر comment برابر بود با voice، فلان کار رو انجام بده.

یعنی اگر ویسی از طرف کاربر به بات ارسال بشه، بات فلان کار رو انجام بده.

ممنونم

پاسخ:

سلام، کار سختی نیست و تنها کافیه که یک شرط تو PHP برای این کار ایجاد کنید.

در آینده آموزش ویدیویی کاملی از این فرایند در سایت منتشر می شه.

tgvQ

 ممنون از پاسخگویی تون

من الان دارم انجام میدم فقط مسئله ای که هست اینِ که Contact رو هم فایل صوتی در نظر میگیره و هم ارسال مخاطب تلگرام.

آرایه Contact من به این صورت هست:

$contact= $arrayMessage['contact']['phone_number'];

و آرایه Voice به این صورت:

$voice = $arrayMessage['voice'];

ویس کار نمیکنه، در عوضش Contact هم فایل صوتی میگیره و هم مخاطب تلگرام.

پاسخ:

امکان این قضیه وجود نداره بیشتر به سورستون توجه کنید.

وحید

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

پاسخ:

t.me/hitos_ir

علی 01

سلام

لطفا بفرمایید که چطور شماره کاربر رو ازش بگیرم؟ (Share Contact) یا لوکیشن کاربر ارسال اشتراک گذاری بشه؟

اکثر آموزش های شما مرتبط به بخش ارسال از سمت ربات هست. بخش ارسال از سمت کاربر هم مهم است..):

در صورتی که میخواهید آموزش را ادامه دهید لینک صفحه پرداخت بدهید که کاربران دونیت کنند.

پاسخ:

سلام

آموزش های سایت در آینده نزدیک بروز رسانی مفصلی می شوند.

اساسا با استفاده از ربات نمی شه به شماره کاربر دسترسی پیدا کرد، مگر این که خودش بهتون این شماره رو بده.

هادی شریفی

ببخشید این متود هایی که درسایت قرار دادید رو چطوری تو یه سورس بزنم بصورت نمونه تو یه سورس بزنید اینا بفرستید ببینیم / مثلا متود ارسال کارت دعوت رو تو یه سورس نمونه بریزین که تو سایت گذاشتین تا ببینیم.
تشکر

پاسخ:

سلام، بستگی به روش ارسالتون داره، می تونید متن بفرستید یا عکس.

ابوالفضل دلیلی

سلام من می خوام وقتی کاربر عضو ربات شد یک پیام براش بفرستم و ازش بخوام اونو مثلا به 5 نفر بفرسته
اگه به 5 نفر فرستاد یک جایزه بهش بدم
می شه راهنمایی کنید

پاسخ:

سلام

صبر کنید آموزشش رو منتشر می کنم.

مهدی
سلام
میشه بگید کی آموزش ها ادامه پیدا میکنه؟ ما همچنان منتظر معرفی متد های جدید ربات توسط شما هستیم ! ):

موضوعات بخش برنامه نویسی و نرم افزار

مطالب برگزیده برنامه نویسی php

مطالب برگزیده سایت