
آموزش ساخت سرور ربات تلگرام
- دسته: آموزش
- آخرین به روز رسانی شنبه, 19 خرداد 1403 01:12
- نوشته شده توسط مصطفی نوروزی
- بازدید: 1526

https://github.com/tdlib/telegram-bot-api
با راه اندازی یک سرور محلی می توانید این محدودیت ها را کنار بزنید یا کمتر کنید. بطور مثال:
- ارسال فایل تا 2گیگ بایت
- دانلود بدون محدودیت
- امکان اتصال بات بدون ssl
- افزایش تعداد کانکشن تا 100000
- تغییر پورت اتصال
در این مقاله بصورت مختصر روش نصب در سیستم عامل لینوکس (centos) توضیح داده میشود اما برای دیگر سیستم عامل ها نیز روش تقریبا مشابه است.پیش نیازهای نصب سرور محلی تلگرام به شرح زیر است:
- OpenSSL
- Zlib
- کامپایلر سی ++
- Gperf
- Cmake
سه مورد اول معمولا بصورت پیشفرض روی اکثر سیستم عامل های لینوکسی نصب هستند. و برای نصب دو مورد اخر نیز (در صورت نیاز) بسادگی می توانید مطابق انتهای مقاله عمل کنید. مسلما پیشفرض ما این هست که شما یک سرور مجازی یا اختصاصی در خارج کشور تهیه کرده اید و حال میتوانید مراحل را انجام دهید.
1 نصب سرور محلی تلگرام روی centos : دستورات زیر را می توانید بصورت خط به خط اجرا کنید
sudo yum update -y
sudo yum install -y centos-release-scl-rh epel-release
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++
sudo yum install -y gcc-c++ make git zlib-devel openssl-devel gperf cmake3
git clone --recursive https://github.com/tdlib/telegram-bot-api.git
cd telegram-bot-api
rm -rf build
mkdir build
cd build
CC=/opt/rh/devtoolset-9/root/usr/bin/gcc CXX=/opt/rh/devtoolset-9/root/usr/bin/g++ cmake3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=.. ..
cmake3 --build . --target install
بهتر است حدود یک گیگابایت فضای خالی برای نصب داشته باشید و زمانی نزدیک به یکساعت برای کامپایل شدن در نظر بگیرید. اگر در حین نصب به خطای کامپایل یا عدم وجود cmake برخوردید پاراگراف انتهای مقاله را بررسی کنید. راهنمای دستورات نصب برای دیگر سرور ها نیز در لینک زیر قرار دارد:
https://tdlib.github.io/telegram-bot-api/build.html
2 در صورتی که کامپایل موفق بود می توانید با دستور زیر وب سرور را اجرا کنید:
bin/telegram-bot-api --api-id $TELEGRAM_API_ID --api-hash $TELEGRAM_API_HASH --local &
توجه کنید بجای دو متغییر $TELEGRAM_API_ID و $TELEGRAM_API_HASH باید از طریق سایت تلگرام توکن و هش دریافت و مقادیر را جایگزین کنید. این مقادیر با توکنی که برای خود ربات میسازید متفاوت است. به احتمال زیاد برای این بخش نیاز به یک شماره معتبر خارجی داشته باشید. به شخصه با شماره ایران موفق به انجام این مرحله نشدم :
https://core.telegram.org/api/obtaining_api_id
3 اگر مراحل را بدرستی انجام داده باشید بایستی از طریق لینک http://x.x.x.x:8081 بتوانید متنی در فرمت json مشاهده کنید
{"ok":false,"error_code":404,"description":"Not Found"}
که x.x.x.x با ای پی سرور شما بایستی جایگزین شود. همچنین می توانید در مرحله 2 در صورت نیاز با سوئیچ p پورت دیگری را برای سرویس دهی معرفی کنید. توجه داشته باشید این پورت باید حتما در فایروال سرور شما (مثلا CSF) و همچنین سرور بات باز شده باشد. همچنین در صورت فعال بودن HSTS و عدم امکان باز کردن لینک ها بصورت http بهتر است این ویژگی را غیر فعال کنید
4 اگر به این مرحله رسیده باشید کار تمام شده. فقط لازم است تا در تنظیمات بات خود هرجا که api را فراخوانی کرده اید، بجای ادرس api سرور اصلی تلگرام، آی پی سرور خود را بهمراه پورت بشکل دقیقا مرحله 3 که در مرورگر وارد شده بود و در تصویر پیوست هم مشخص هست وارد کنید. دقت کنید اگر ربات شما قبلا به سرور تلگرام متصل بوده بایستی حتما با دستور زیر حتما آن را logout کنید و سپس از طریق سرور خود، وب هوک را مشخص کنید :
الف) دستور قطع ارتباط ربات با سرور تلگرام
https://api.telegram.org/bot{token}/logout
ب) دستور تنظیم وب هوک در سرور محلی جدید :
http://x.x.x.x:8081/bot{token}/setWebhook?url={bot_url}

wget https://cmake.org/files/v3.12/cmake-3.12.3.tar.gz
tar zxvf cmake-3.*
cd cmake-3.*
./bootstrap --prefix=/usr/local
make -j$(nproc)
make install
cmake –version
https://gist.github.com/1duo/38af1abd68a2c7fe5087532ab968574e نصب Gperf نیز بسادگی با دستور زیر قابل انجام است
Yum install gperf
باتوجه به اینکه ارتباط ربات با سرور محلی طبق توضیحات بالا (برای درک بهتر و سادگی) بصورت http و غیرامن توضیح داده شد توصیه میشود در نهایت، به کمک reverse proxy ارتباط را از طریق یک دامنه و https انجام دهید. می توانید بطور مثال اگر از اپاچی استفاده می کنید ماژول mod_proxy را نصب و تنظیم کنید یا در روشی ساده تر به کمک دستورات htaccess درخواست های ارسالی به یک دامنه را به ای پی و پورت نهایی منتقل کنید. بدین ترتیب میتوانید در کدنویسی ربات خود بجای ای پی و پورت بسادگی از دامنه استفاده کنید :
RewriteEngine on
RewriteRule ^(.*) "http\:\/\/x\.x\.x\.x\:8081\/$1" [P,L]
اگر تصمیم دارید از طریق سرور محلی، از تلگرام فایل دریافت کنید، بهتر است اولا دستور اجرای سرور را بجای root از طریق نام کاربری اکانت دامنه انتخاب شده در reverse proxy اجرا کنید، ثانیا سوئیچ -d را بهمراه پوشه مورد نظر خود برای دریافت فایل ها اجرا کنید، مثال زیر توجه کنید :
#runuser [user]
#bin/telegram-bot-api --api-id $TELEGRAM_API_ID --api-hash $TELEGRAM_API_HASH --local -d /home/[user]/public_html/files/ &
امید است این مقاله بتواند تا حدی از ابهام شما در راه اندازی سرور محلی تلگرام برای استفاده ربات را برطرف کرده باشد