Telegram-Bot icon indicating copy to clipboard operation
Telegram-Bot copied to clipboard

PHP Laravel Telegram Bot

Telegram-Bot

A PHP Laravel Telegram Bot

License

GPL-3.0-Only GNU GPL VERSION 3(GPL-3.0-only)

Versions

DigitalOcean Referral Badge

Fedora

Nginx GCC OpenSSL

PHP Composer cURL

Laravel

Mariadb

Redis jemalloc

Install

I recommend using systemd to manage laravel queue workers, and systemd-timer to manage laravel schedules.

This is a doc of supervisor + crontab version that laravel recommended.

You can do anything you want.

Pre-install

Make a file tree like this:

/www/server/mariadb/
├── data
└── mysql
    └── my.cnf
/www/server/redis/
├── conf
│   └── redis.conf
└── data

Then run:

podman-compose -f docker-compose.yml up -d

If you are using docker, you need to create a bridge network named podman first.

docker network create --driver bridge podman
docker-compose -f docker-compose.yml up -d

Run

dnf update --refresh -y
dnf install supervisor podman* cockpit* --refresh -y
systemctl enable --now supervisord.service
systemctl enable --now nginx.service
systemctl enable --now php-fpm.service
systemctl enable --now container-mariadb.service
systemctl enable --now container-redis.service

composer install
chown -R www:www .
chmod -R 755 .
chmod -R 777 bootstrap/cache/
chmod -R 777 storage/

touch .user.ini
vim .user.ini
chown www:www .user.ini
chmod 644 .user.ini
chattr +i .user.ini

php artisan key:generate
vim .env

vim supervisor/TelegramBot-Queue-default.ini
vim supervisor/TelegramBot-Queue-TelegramLimitedApiRequest.ini
chmod +X supervisor/init.sh
chmod +X supervisor/restart.sh
chmod +X supervisor/reload.sh
chmod +X supervisor/start.sh
chmod +X supervisor/stop.sh
supervisor/init.sh
supervisor/restart.sh

Database Migration

php artisan migrate

GetWebHookInfo

php artisan command:GetWebhookInfo

SetWebhook

php artisan command:SetWebhook

DeleteWebhook

php artisan command:DeleteWebhook

Restart Queue Workers

If you edited anything, you may need to restart queue workers, to make sure they are using the new configuration, or the new codes to be run.

Otherwise, they may update to the latest configurations and codes after 3600 seconds at most.

So you can send the signal to restart queue workers, via the laravel official command:

php artisan queue:restart

Or force restart with supervisor(not recommended):

supervisor/restart.sh

Or you can let bot call the laravel official command:

Send a message to the bot with the command /restart

Authors

@jyxjjj

@bluebird_tg

Donate

Alipay Alipay QRCode