PHPackages                             alirezax5/telegram-base - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. alirezax5/telegram-base

ActiveProject[Framework](/categories/framework)

alirezax5/telegram-base
=======================

Telegram Bot Base Framework (project skeleton).

v2.1.3(2w ago)181MITPHP

Since Nov 7Pushed 4mo agoCompare

[ Source](https://github.com/alirezax5/telegramBase)[ Packagist](https://packagist.org/packages/alirezax5/telegram-base)[ RSS](/packages/alirezax5-telegram-base/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (17)Versions (20)Used By (0)

telegramBase
============

[](#telegrambase)

---

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

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

---

🎯 هدف پروژه
-----------

[](#-هدف-پروژه)

هدف از توسعه این بیس، **سادگی در کدنویسی** و **بهینه‌سازی برای سرویس‌دهی به تعداد بالای کاربر** است.
سعی کرده‌ام در حد امکان مصرف منابع (CPU / RAM / I/O) پایین باشد و ساختار پروژه قابل توسعه و انعطاف‌پذیر باقی بماند.

در بخش‌های مختلف پروژه از کمک **هوش مصنوعی** هم استفاده شده است. کمک گرفتن هیچ ایرادی ندارد — خروجی نهایی حاصل چند سال تجربه در ساخت ربات‌های تلگرامی است و با کمک AI روی بهینگی و انتخاب بهترین ساختار تمرکز شده است.

---

✅ امکانات بیس
-------------

[](#-امکانات-بیس)

- پشتیبانی از وبهوک, اجرای cli و کرون جاب
- پشتیبانی از صف بندی آپدیت ها
- پشتیبانی از منطق جدا سازی صب بندی و اجرای اسکریپت
- امکان توسعه چند زبانه
- امکان افزودن چندین دیتابیس
- سیستم کشینگ
- پشتیبانی از سیستم پلاگین
- امکان پوشه بندی پلاگین ها برای توسعه راحت ت
- لاگ گیری و بررسی راحت لاگ ها
- پشتیبانی از چندین درایور کشینگ, صف بندی و دیتابیس
- امکان استفاده از متغییر های داینامیک در زبان ها و دکمه

نصب و راه اندازی
================

[](#نصب-و-راه-اندازی)

### روش اول

[](#روش-اول)

```
git clone https://github.com/alirezax5/telegramBase.git

```

نیازه که git روی سیستم نصب باشه.

پس از کلون دستور زیر رو در پوشه ی سورس بزنید :

```
composer install

```

### روش دوم

[](#روش-دوم)

دانلود از بخش releases

پس از دانلود دستور زیر رو در پوشه ی سورس بزنید :

```
composer install

```

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

تنظیمات
-------

[](#تنظیمات)

تمامی تنطیمات و کانفیگ سورس در فایل .env قرار داره

حالت های ربات
-------------

[](#حالت-های-ربات)

در حال حاضر سورس حالت های زیر رو داره :

- update\_direct

در این حالت سورس با استفاده از polling آپدیت هارا دریافت میکنه و بدون صف بندی اجرا میکنه

- update\_queue
-

در این حالت سورس با استفاده از polling آپدیت هارا دریافت میکنه و به صف آپدیت ها اضافه میکنه

- webhook\_direct

در این حالت آپدیت هایی که از وبهوک میان به صورت مستقیم اجرا میشه

- webhook\_queue

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

- cronjob\_update

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

- cronjob\_queue

در این حالت کرون جاب با استفاده از polling اپدیت ها وارد صف می شن.

راه اندازی
----------

[](#راه-اندازی)

پیشنهاد اول راه اندازی اگر سرور دارید نصب rabbitmq, redis,Supervisor می باشد تا هم از قابلیت صف بندی استفاده کنید و هم از Supervisor برای مدیریت اجرا استفاده کنید:

در env :

```
BOT_MODE="update_queue"
QUEUE_SAVE_TYPE="rabbitmq"
CACHE_DRIVER="redis"
```

قرار بدید و کانفیگ برای Supervisor :

```
[program:name]
command=php /www/wwwroot/domain/newBase/bot.php
directory=/www/wwwroot/domain/newBase
autorestart=true
startsecs=3
startretries=3
stdout_logfile=/www/server/panel/plugin/supervisor/log/test.out.log
stderr_logfile=/www/server/panel/plugin/supervisor/log/test.err.log
stdout_logfile_maxbytes=2MB
stderr_logfile_maxbytes=2MB
user=root
priority=999
numprocs=2
stopsignal=QUIT
process_name=name

```

توجه داشته باشید که مقدار های کانفیگ نمونه رو تغییر بدید.

در صورتی که از هاستینگی استفاده می کنید که از Supervisor استفاده نمیکنه:

```
BOT_MODE="webhook_direct"
QUEUE_SAVE_TYPE="json"
CACHE_DRIVER="array"
```

نکته : اگر هاستینگ از memcached یا redis استفاده میکرد از آنها در درایور کش استفاده کنید حتی میتونید به گزینه صف بندی هم فکر کنید چون که صف بندی از این دو درایو پشتیبانی میکند. در صورتی که دامنه ندارید میتونید از روش کرون جاب استفاده کنید.

فایل های مورد نیاز:
-------------------

[](#فایل-های-مورد-نیاز)

اگر از صف بندی استفاده نمی کنید :

```
use alirezax5\TelegramBase\App\Core;
include './vendor/autoload.php';
$core = new Core();
$core->run();
```

اما اگر میخواید استفاده کنید به 2 فایل نیاز دارید :

```
use alirezax5\TelegramBase\App\Core;
use alirezax5\TelegramBase\App\Enum\CoreMode;

include './vendor/autoload.php';
$core = new Core(CoreMode::UPDATES_ONLY);
$core->runFetchQueueUpdate();
```

برای دریافت آپدیت ها

```
use alirezax5\TelegramBase\App\Core;
include './vendor/autoload.php';
$core = new Core();
$core->run();
```

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

پلاگین ها
---------

[](#پلاگین-ها)

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

برای تنظیم کانفیگ ها میتوانید به فایل .env مراجعه کنید.

نمونه کد پلاگین :

```
