Table of Contents
About this repository
This repository is a boilerplate for development of the php-telegram-bot.
Getting Started
Cloning the repository
git clone --recurse-submodules https://github.com/php-telegram-bot/workspace.git
After cloning the workspace, you can use the workspace as if it were a project. We provided a few scripts and a docker-compose.yml that configures a webserver and a local Telegram Bot API server for using and testing webhooks.
Working on php-telegram-bot
To work on the php-telegram-bot repository itself you need to cd
into the packages/php-telegram-bot
directory and checkout a branch with
git checkout develop
To pull all the current changes from upstream you can call from any location
git submodule update --remote --merge
If you want to commit changes to upstream, you can simply do that as anywhere else.
Using Docker
By default the Docker setup launches preconfigured with the following containers:
- nginx Webserver
- to accept webhook calls from the custom bot api server
- php-fpm PHP 8.1
- runs all the code
- mariadb Database
- already has the structure imported
- tdlight Custom Bot API Server
- Lighter version of the custom Telegram bot API server.
To start the container copy the .env.example
into a .env
file and fill out your TELEGRAM_API_ID
and TELEGRAM_API_HASH
data from https://my.telegram.org/apps.
After this you can start the containers with
docker-compose up -d
Using the bot
By default there is a /start command.
So if you've also filled out your TELEGRAM_BOT_USERNAME
and TELEGRAM_BOT_TOKEN
in your .env
file, you can execute the setWebhook.php
inside the php Docker container.
If successful, you should be able to send a /start
to your bot.
Manually calling the webserver
If you need to call the webserver directly or have a look at the stats of the Bot API server you can create a docker-compose.override.yml
file and add the needed port forwarding like in this example:
version: '3'
services:
nginx:
ports:
- 8080:80
api-server:
environment:
TELEGRAM_STAT: yes
ports:
- 8082:8082
The first block inside services
extends the nginx service and adds a port forwarding from 8080 (on your host) to 80 inside the container. You can then call any php script or static files with http://localhost:8080
The second block extends the api-server service, enables the stats with an environment variable and forwards the port 8082 from the container to your host. This allows you to call http://localhost:8082
to access the stats page of the Telegram Bot API server and check i.e. if the webhook was registered correctly.