کار با تلگرام در PHP

آوریل 5, 2016 توسط : سعید

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

به هرحال شاید شما از برنامه نویسهایی باشید که بخواد تلگرام رو به صورت تحت وب برای خودش شخصی سازی کنه. به خاطر اوپن سورس بودن تلگرام این کار خیلی راحته. میتونید با استفاده از API هایی که خود سایت تلگرام در اختیارتون میذاره استفاده کنید. یا میتونید از برنامه هایی که برا کار با این API ها نوشته شده استفاده کنید. ما در این آموزش از روش دوم استفاده میکنیم. یکی از برنامه نویسان برنامه ای رو برای لینوکس توسعه داده که میتونید از طریق خط فرمان با تلگرام کار کنید. کار کردن با خط فرمان شاید برای همه راحت نباشه. برای همین یک کلاس آماده برای ارتباط با این ابزار نوشتم تا شما راحت بتونید از این برنامه در PHP استفاده کنید.

https://github.com/vysheng/tg/

نکته :‌ این برنامه خط فرمان رو توی ویندوز تست نکردم ببینم جواب میده یا نه. اگه کسی تست کرد به بقیه هم بگه.

مرحله ۱

برای کار با این برنامه که از این به بعد به اسم واقعیش یعنی ‌tg-cli صداش میزنیم ابتدا باید طبق توضیحات خودش توی لینوکس نصبش کنید.بعد از اینکه نصبش کردید با دستور

 ./bin/telegram-cli

اجراش کنید. در ابتدا از شما شماره موبایل میخواد. شماره موبایلی رو که روش تلگرام دارید رو بهش بدید. یک کد به تلگرامتون ارسال میشه. کد رو وارد کنید. حالا وارد برنامه tg-cli شدید و میتونید به وسیله دستوراتی که داره با تلگرام توی ترمینال کار کنید.میتونید دستور help رو تایپ کنید تا ببینید چه دستوراتی داره.مثلا با دستور contact_list میتونید لیست کانتکت هاتون رو ببینید. بعد از اینکه از کار کردن باهاش مطمین شدید با زدن Ctrl+c ازش خارج بشید و مرحله بعدی رو انجام بدید.

 

مرحله ۲

به وسیله Composer کتابخانه زیر رو نصب کنید.

ابتدا یک فایل با نام composer.json ایجاد کنید و محتویات زیر رو داخلش کپی کنید :

{
    "require": {
        "smoqadam/telegramcli": "@dev"
    }
}

سپس دستور composer install رو اجرا کنید.

نکته :‌اگر نمیدونید Composer چیه و چجوری نصبش کنید و چجوری میشه ازش استفاده کنید بهتره بعد از یادگرفتن کامپوزر برگردید و آموزش رو ادامه بدید.

مرحله ۳

حالا یک فایل با نام index.php ایجاد کنید :

require 'vendor/autoload.php';
$t = new Smoqadam\TelegramCli('unix:///tmp/t.sck');
$contacts = $t->contact_list();
//print_r($contacts);
echo $t->post($contacts[0]['print_name'],'Hello');

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

مرحله بعد
خب فایل index.php رو ذخیره کنید.حالا Terminal رو باز کنید و توی مسیری که tg-cli رو نصب کردید دستور زیر رو بزنید :

 ./bin/telegram-cli --json -dWS /tmp/t.sck &

با استفاده از این دستور تمام ارتباطاطی رو که میخوایم با tg-cli داشته باشیم از طریق سوکتی که در مسیر /tmp/t.sck ذخیره شده انجام میدیم. پس دقت کنید که مسیر سوکت رو در فایل php هم درست وارد کنید.

آپشن --json هم به منظور استقاده شده که تمام خروحی ها رو به صورت json برای ما برگردونه تا توی php راحت تر بتونیم ازش استفاده کنیم.

حالا index.php رو توی مرورگر باز کنید. اگر مراحل قبل رو به درستی انجام داده باشید٫ پس بازشدن مرورگر و اجر شدن index.php لیست contact های شما توی صفحه نمایش داده میشه. همچنین یک پیام به اولین کانتکت شما ارسال میشه.(حواستون باشه چیز بدی ننویسید آبرو ریزی بشه)

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

مثلا دستور post برای ارسال پیام به یک کاربر خاصه. توی خط فرمان باید مثل زیر عمل کنیم :

> post Ali_Daie "salam khoobi

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

<?php

$t->post(‘Ali_Daie’,’salam khoobi’);

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

نخوره. یا هزارتا کار دیگه.

توی لینک زیر هم میتونید کدهارو ببینید :

https://github.com/smoqadam/php-telegram-cli

سوال داشتید بپرسید
موفق باشید

ماهان
آوریل 8, 2016 @ 12:33 ب.ظ

سلام وقتی میخوام سوکت رو به tg-cli بدم با ارور زیر مواجه میشم :
change_user_group: can’t find the user telegramd to switch to

پاسخ
    سعید
    آوریل 8, 2016 @ 7:37 ب.ظ

    سلام
    اگر با یوزر روت میخواهید تلگرام رو اجرا کنید احتمالا با این مشکل مواجه خواهید شد. از آپشن
    [php]
    -U root
    [/php]
    استفاده کنید.

    پاسخ
mortaza7khat
آوریل 8, 2016 @ 8:23 ب.ظ

سلام برای ویندوز چیکار کنیم؟
من کاربر ویندوزم و لینوکس ندارم
با تشکر…
لطفا پاسخ بدید

پاسخ
    سعید
    آوریل 9, 2016 @ 10:24 ب.ظ

    سلام
    توی لینک زیر توضیح داده چطوری توی ویندوز نصبش کنی :
    https://github.com/vysheng/tg/blob/master/README-Cygwin.md

    پاسخ
      mortaza7khat
      آوریل 14, 2016 @ 3:30 ب.ظ

      این هم که همون شبیه ساز لینوکس هست!
      آیا میشه چنین کاری روی هاست های اشتراکی لینوکس انجام داد؟

      پاسخ
mortaza7khat
آوریل 16, 2016 @ 9:08 ب.ظ

آیا میشه چنین کاری روی هاست های اشتراکی لینوکس انجام داد؟

پاسخ
mortaza7khat
آوریل 17, 2016 @ 10:58 ب.ظ

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

پاسخ
mortaza7khat
آوریل 17, 2016 @ 11:18 ب.ظ

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

پاسخ
    سعید
    آوریل 18, 2016 @ 12:56 ب.ظ

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

    پاسخ
peyman
می 5, 2016 @ 7:53 ق.ظ

سلام میشه مراحل نصب رو در ssh خط به خط اعلام کنید من دانلود کردم زدم نصب آخرش کد کامپایل کد ها کار نکرد سیستم عامل من cent.os هست
configure: error: no libevent found

پاسخ
    سعید
    می 6, 2016 @ 11:34 ب.ظ

    سلام
    باید کتابخانه های زیر رو نصب داشته باشی :
    [php]
    libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev
    [/php]
    توی centos با دستور yum (فکر میکنم) باید نصب کنی کتابخانه های بالا رو. توی گیت هابش هم نحوه نصب رو توضیح داده.
    موفق باشی

    پاسخ
عابدین
می 15, 2016 @ 7:55 ق.ظ

عالی بود سپاس

پاسخ
زهرا
می 15, 2016 @ 7:56 ق.ظ

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

پاسخ
meysam
می 20, 2016 @ 5:55 ب.ظ

سلام خیلی ممنون بابت این پستت راهنمایی هپبی بود
پیامای دریافتیش که بهش فرستاده میشه رو بخام ازش استفاده کنم یه مثال ازش میزنی :/ ممنون بازم 🙂

پاسخ
mojtaba
می 28, 2016 @ 11:26 ب.ظ

سلام من درک نمیکنم چطور میتونم با php رباتی بسازم که اگرپیامی حاوی کلمه “تست” دید اون پیام رو پاک کنه
میشه یک اموزش مبتی برساخت چنین چیزی بزارید؟

پاسخ
حمید
سپتامبر 27, 2016 @ 2:51 ب.ظ

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

Warning: stream_socket_client(): unable to connect to unix:///tmp/t.sck (Connection refused) in /vendor/smoqadam/telegramcli/src/Smoqadam/TelegramCli.php on line 18
/TelegramCli.php on line 20

منظورش از (Connection refused) چیه؟ باید چیکار کنم تا ارتباط بر قرار کنه؟

خداکنه زود پاسخ بدین :((

پاسخ
    حمید
    سپتامبر 28, 2016 @ 11:28 ق.ظ

    دوستان مشکل حل شد.
    سه تا کار انجام دادم درست شد
    اول آدرس (vendor/autoload.php)رو به (vendor/autoload.php/) یعنی یک اسلش به اولش اضافه کردم.
    بعد کامپیوترم و ریستارت کردم(در واقع ابونتو رو چون من از ماشین مجازی استفاده می کنم(vmware))
    بعدش سطح دسترسیه فایل (/tmp/t.sck) رو تغییر دادم به 777 اینجوری(داخل ترمینال) :
    chmod 777 /tmp/t.sck
    و در آخر هم این مرحله رو دوباره اجرا کردم :
    ./bin/telegram-cli –json -dWS /tmp/t.sck &
    .
    نکته :
    این مرحله رو وقتی اجرا کنید که bin/telegram-cli وجود داشته باشید یعنی تو این مسیرش باشید. بیشتر اوقات باید برید به این آدرس بعد بزنید مگر اینکه خودتون تغییرش داده باشید.
    اینجا :
    cd /usr/tg
    و بعد :
    ./bin/telegram-cli –json -dWS /tmp/t.sck &
    فقط آقای مدیر یه چیزی اون قسمت که print_r ; کردید رو از حالت کامنت بر دارید چون اینجوری هیچ لیستی چاپ نمیکنه. فکر کنم حواستون نبوده

    پاسخ
      Bvk
      ژوئن 18, 2017 @ 10:33 ب.ظ

      سلام دوست عزیز من از پکیج شما جهت ارتباط با telegram-cli استفاده کردم و بروی لاراول نصب کردم ولی موقع اجرا این خطا رو میده :‌

      1/1) ErrorException
      stream_socket_client(): unable to connect to unix:///tmp/tg.sck (No such file or directory)

      مشکل کجاست ؟
      من احساس میکنم از این آدرس هست‌: unix:///tmp/t.sck
      ممنون میشم راهنمایی کنید.

      پاسخ
    سپتامبر 3, 2017 @ 3:41 ق.ظ

    من سوکت رو به جای اینکه توی temp ذخیره کنم . توی یکی از فولدر های apache ذخیره کردم و سطح دسترسیش هم روی 777 گذاشتم درست شد

    پاسخ
حمید
سپتامبر 28, 2016 @ 11:32 ق.ظ

سلام دوباره ببخشید منظورش از peer چیه؟ چطوری دریافت کنم؟
history

پاسخ
حمید
سپتامبر 29, 2016 @ 6:19 ب.ظ

خیلی ممنون از اینکه نظرم تایید نشد.
:((
توش حتما چیز بدی نوشته بودم

پاسخ
امیر
ژوئن 7, 2017 @ 1:58 ب.ظ

امکان ارتباط با telegram cli در هاست های لینوکس اشتراکی هستش ؟
حالا فقط مثلا امکان تغییر staus به online رو داشته باشه کافیه (بعد هر بار لود)

پاسخ
sajad
جولای 30, 2017 @ 8:30 ب.ظ

سلام. میشه یه توضیح در رابطه با telegram api بدید. البته منظورم bot api نیست. من هرچی داکیومنت هاشو خوندم زیاد متوجه نشدم. البته یه لینکی پیدا کردم ولی اونم خیلی توضیحات سختی داده (https://stackoverflow.com/a/32809138/44080) .

پاسخ
رمزی
آگوست 19, 2017 @ 2:48 ق.ظ

سلام دوست من واقعا مطلبت عالی بود
میخواستم بدونم چجوری آپدیتا هارو چجوری از unix دریافت کنم که php که باهاش کار میکنم نسبت به اونا واکنش بده … ممنون میشم آموزشش رو بزارین :)‌

پاسخ
کاظم
آگوست 23, 2017 @ 9:03 ق.ظ

سلام
چرا دستور channel_join خطای {error: “can not parse arg #1”,result: “FAIL”,error_code: 38} را میدهد؟

پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*