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

فروردین ۱۷, ۱۳۹۵ توسط : سعید

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

به هرحال شاید شما از برنامه نویسهایی باشید که بخواد تلگرام رو به صورت تحت وب برای خودش شخصی سازی کنه. به خاطر اوپن سورس بودن تلگرام این کار خیلی راحته. میتونید با استفاده از 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

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

بازدید : ۳۳۷۱

ماهان
فروردین ۲۰, ۱۳۹۵ @ ۱۲:۳۳ ب.ظ

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

پاسخ دادن
    سعید
    فروردین ۲۰, ۱۳۹۵ @ ۷:۳۷ ب.ظ

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

    -U root
    

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

    پاسخ دادن
mortaza7khat
فروردین ۲۰, ۱۳۹۵ @ ۸:۲۳ ب.ظ

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

پاسخ دادن
    سعید
    فروردین ۲۱, ۱۳۹۵ @ ۱۰:۲۴ ب.ظ

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

    پاسخ دادن
      mortaza7khat
      فروردین ۲۶, ۱۳۹۵ @ ۳:۳۰ ب.ظ

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

      پاسخ دادن
mortaza7khat
فروردین ۲۸, ۱۳۹۵ @ ۹:۰۸ ب.ظ

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

پاسخ دادن
mortaza7khat
فروردین ۲۹, ۱۳۹۵ @ ۱۰:۵۸ ب.ظ

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

پاسخ دادن
mortaza7khat
فروردین ۲۹, ۱۳۹۵ @ ۱۱:۱۸ ب.ظ

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

پاسخ دادن
    سعید
    فروردین ۳۰, ۱۳۹۵ @ ۱۲:۵۶ ب.ظ

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

    پاسخ دادن
peyman
اردیبهشت ۱۶, ۱۳۹۵ @ ۷:۵۳ ق.ظ

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

پاسخ دادن
    سعید
    اردیبهشت ۱۷, ۱۳۹۵ @ ۱۱:۳۴ ب.ظ

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

    libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev 
    

    توی centos با دستور yum (فکر میکنم) باید نصب کنی کتابخانه های بالا رو. توی گیت هابش هم نحوه نصب رو توضیح داده.
    موفق باشی

    پاسخ دادن
عابدین
اردیبهشت ۲۶, ۱۳۹۵ @ ۷:۵۵ ق.ظ

عالی بود سپاس

پاسخ دادن
زهرا
اردیبهشت ۲۶, ۱۳۹۵ @ ۷:۵۶ ق.ظ

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

پاسخ دادن
meysam
اردیبهشت ۳۱, ۱۳۹۵ @ ۵:۵۵ ب.ظ

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

پاسخ دادن
mojtaba
خرداد ۸, ۱۳۹۵ @ ۱۱:۲۶ ب.ظ

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

پاسخ دادن
حمید
مهر ۶, ۱۳۹۵ @ ۲:۵۱ ب.ظ

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

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) چیه؟ باید چیکار کنم تا ارتباط بر قرار کنه؟

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

پاسخ دادن
    حمید
    مهر ۷, ۱۳۹۵ @ ۱۱:۲۸ ق.ظ

    دوستان مشکل حل شد.
    سه تا کار انجام دادم درست شد
    اول آدرس (vendor/autoload.php)رو به (vendor/autoload.php/) یعنی یک اسلش به اولش اضافه کردم.
    بعد کامپیوترم و ریستارت کردم(در واقع ابونتو رو چون من از ماشین مجازی استفاده می کنم(vmware))
    بعدش سطح دسترسیه فایل (/tmp/t.sck) رو تغییر دادم به ۷۷۷ اینجوری(داخل ترمینال) :
    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 ; کردید رو از حالت کامنت بر دارید چون اینجوری هیچ لیستی چاپ نمیکنه. فکر کنم حواستون نبوده

    پاسخ دادن
حمید
مهر ۷, ۱۳۹۵ @ ۱۱:۳۲ ق.ظ

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

پاسخ دادن
حمید
مهر ۸, ۱۳۹۵ @ ۶:۱۹ ب.ظ

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

پاسخ دادن

پاسخ دهید

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


*