中文 | English
- Project Introduction
- Features
- System Requirements
- Installation and Deployment
- Initial Configuration
- User Guide
- Feature Details
- FAQ
- Important Notes
This is a PHP-based Telegram channel content auto-forwarding system (version v3.7) that uses the MadelineProto library for Telegram API interaction. The system can automatically forward content from source channels to target channels, supporting advanced features such as message filtering, content replacement, and scheduled posting.
- Automatically forward Telegram channel content
- Filter and clean up advertisement messages
- Batch manage content synchronization across multiple channels
- Content aggregation and distribution
- ✅ Support for forwarding from multiple source channels to multiple target channels
- ✅ Real-time auto-forwarding (via CRON tasks)
- ✅ Support for multiple message types: text, images, videos, files, etc.
- ✅ Support for album (multi-image) message forwarding
- ✅ Independent channel filter settings
- 🔍 Keyword filtering (spam word filtering)
- 🔍 Link filtering (optionally delete Telegram links, all links, etc.)
- 🔍 Inline button filtering
- 🔍 @username replacement
- 🔍 Word replacement function
- ⏰ Scheduled posting (set posting times by hour)
- 📊 Posting quantity limits (limit number of posts within time periods)
- 🗳️ Poll buttons (add like/dislike buttons to images)
- 📝 Custom message text replacement
- 🔖 Channel signature (add signature to the bottom of each message)
- 🎯 Keyword-specific posting (only post content containing specific keywords)
- 🔄 ForwardMessage mode (preserve original message source)
- Ignore pure text messages
- Ignore messages with text
- Ignore messages without media
- Ignore messages with media
- Post only pure media content
- Operating System: Debian 9 / Ubuntu 14.04 or higher
- Web Server: Apache2 (supports .htaccess)
- PHP Version: 7.2 or higher
- Database: MySQL 5.7+
- Memory: Minimum 512MB RAM
- Storage: Minimum 5GB SSD
- php7.2-cli
- php7.2-common
- php7.2-curl
- php7.2-json
- php7.2-mbstring
- php7.2-mysql
- php7.2-xml
- php7.2-zipapt update
apt install curl nano zip unzip htop sudo -y
apt install ca-certificates apt-transport-https -ywget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list
apt update
apt install php7.2 -y
apt install php7.2-cli php7.2-common php7.2-curl php7.2-json php7.2-mbstring php7.2-mysql php7.2-xml php7.2-zip -ya2enmod rewrite
systemctl restart apache2apt install mysql-server -ymysql -u rootExecute in MySQL console:
UPDATE mysql.user SET authentication_string=PASSWORD('your_password'), plugin='mysql_native_password' WHERE User='root';
CREATE DATABASE AutoPoster;
FLUSH PRIVILEGES;
QUIT;cd /var/www/html
mysql -u root -p AutoPoster < dump.sqlEdit /etc/apache2/apache2.conf file, find:
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>Modify to:
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>Then restart Apache:
systemctl restart apache2Upload the parser_channel folder to the server's /var/www/html/ directory
Edit parser_channel/db.php file:
DEFINE('login','root'); // Database username
DEFINE('pass','your_password'); // Database password
DEFINE('host','localhost'); // Database host
DEFINE('base','AutoPoster'); // Database namechmod -R 777 /var/www/html/parser_channel/
chmod -R 777 /var/www/html/parser_channel/accounts/cd /var/www/html/parser_channel/php auth.php- Enter your Telegram phone number (format: +79XXXXXXXXX)
- Enter the verification code received in Telegram Desktop
- If two-step verification is enabled, enter the password
- After successful authentication, a configuration file will be generated (e.g., +79XXXXXXXXX.tg)
chmod 777 /var/www/html/parser_channel/+79XXXXXXXXX.tg
chmod 777 /var/www/html/parser_channel/+79XXXXXXXXX.tg.lockOr use:
chmod -R 777 /var/www/html/parser_channel/accounts/
chown -R www-data:www-data /var/www/html/parser_channel/accounts/crontab -eAdd the following:
*/1 * * * * curl -S "http://your_IP_address/parser_channel/multiple_task.php"Save: Press Ctrl+O, then press Ctrl+X
Add task in system's CRON management:
curl -S "http://your_IP_address/parser_channel/multiple_task.php"adduser www-data sudo
sudo visudoAdd at the bottom of the file:
www-data ALL=(ALL:ALL) NOPASSWD: ALL
Then:
chown -R www-data /var/www/html/parser_channel/Access: http://your_server_IP/parser_channel/
Default Login Information:
- Username:
admin - Password:
z6GZ1J66sAve
After logging in, go to the "Settings" tab, enter a new password, and click "Change"
- Create a bot by chatting with @BotFather in Telegram
- Get the Bot Token
- Enter the Bot Token in "General Settings"
- Click "Save"
In version v3.7, the system automatically recognizes authenticated accounts, no need to manually fill in the profile_tg field
- Select from dropdown list of joined channels
- Or select "Specify Other Channel" and manually enter channel link
- Supported link formats:
https://t.me/channel_usernamehttps://t.me/joinchat/XXXXXXXXXXXXX
- Select from dropdown list of joined channels
- Or manually enter channel link
The system will automatically:
- Join source and target channels (if not already joined)
- Create forwarding task
- Create independent filter settings for this task
Important Notes:
- Add up to 5 channels at a time to avoid triggering Telegram rate limits
- If rate limit is triggered, wait 10-15 minutes before continuing
- Your account must be an administrator of the target channel to post messages
- Click "Start" button to begin auto-forwarding
- Click "Stop" button to pause forwarding
Click the trash can icon to delete the task
Use dropdown lists to change source or target channels
In the "Filter (Stop Words)" text box, enter one keyword per line. Messages containing these keywords will be ignored.
Example:
Advertisement
Gambling
Promotion
1xbet
casino
Format: original_word|replacement_word (one per line)
Example:
casino|
advertisement|
@spam_channel|@my_channel
Explanation:
casino|- Delete the word "casino"@spam_channel|@my_channel- Replace @spam_channel with @my_channel
Enter one domain per line. Links containing these domains will be deleted.
Example:
bit.ly
clc.to
vk.com
No special link filtering
Delete all URL links and inline links in messages
Only delete links in format t.me/username, t.me/joinchat/XXX, and @Username
Do not forward messages if they contain Telegram links
Do not forward messages if they contain any URL links
Replace all links in messages with your specified link
| Option | Description |
|---|---|
| Undefined | No special filtering |
| Ignore posts without text | Only forward messages with text (media only) |
| Ignore all posts with text | Only forward pure media messages (no text) |
| Ignore posts with text (no media) | Do not forward pure text messages |
| Ignore posts with text (only media) | Ignore media messages with text |
| Ignore all posts without text | Only forward messages with text |
When checked, filters out advertisement messages containing inline buttons
When checked, only forwards messages containing media such as images, videos, files, etc.
When checked, you can replace all text from the source channel with your custom text. Supports HTML format:
<b>Bold Text</b>
<i>Italic Text</i>
<a href="https://example.com">Link Text</a>Replace all @username in messages with your specified username
Add like 👍 and dislike 👍 buttons to forwarded images
Usage Conditions:
- Bot Token must be configured
- Panel must be accessed via HTTPS (SSL certificate required)
- Bot must be added to the target channel
When checked, you can select which hours to post content
Example:
Only post between 9 AM and 6 PM, check: 09:00 to 18:00
Limit the number of messages posted within a specified time period
Example:
- Maximum posts: 10
- Time period: 2 hours
- Result: Maximum 10 posts per 2 hours
When checked, uses Telegram's native forwarding function, preserving the original message source
Note: This option will be disabled when poll buttons are enabled
Enter text in the "Channel Signature" text box to be added to the bottom of each forwarded message
Example:
🔥 More exciting content, follow @my_channel
When checked, only messages containing specified keywords will be forwarded
Posting Modes:
- Consider Filters - Messages still need to pass other filtering rules
- Bypass Filters - Messages containing keywords are posted directly, ignoring other filtering rules
Keyword Input: (one per line)
Important Notice
Official Announcement
Limited Time Offer
- Go to "General Settings" tab
- Select channel from "Rename Channel" dropdown
- Enter new name
- Click "Change"
Note: This will modify both the channel name in Telegram and the display name in the panel
If multiple Telegram accounts are added:
- Select account from "Current Account" dropdown
- Click "Switch"
- Select account to delete
- Click "Delete" button
- System will delete account configuration file and related tasks
A: Try the following steps:
adduser www-data sudo
sudo visudo
# Add: www-data ALL=(ALL:ALL) NOPASSWD: ALL
chown -R www-data /var/www/html/parser_channel/A: This is Telegram's rate limit protection. Wait for the prompted time before trying again (usually 10-15 minutes)
A: Check the following:
- Is CRON task running normally?
- Is task status "Started"?
- Check if filter settings are too strict
- Is account status "Enabled"?
A: Log file location:
/var/log/MadelineProto.logA: Ensure:
- Correct Bot Token is configured
- Panel is accessed via HTTPS
- Bot is added to target channel
- Bot has permission to send messages
A: Recommendations:
- Don't add channels too frequently (max 5 at a time)
- Set reasonable posting limits
- Avoid posting violating content
- Use multiple accounts to distribute risk
A: Backup the following:
- Database:
mysqldump -u root -p AutoPoster > backup.sql - Account files:
/var/www/html/parser_channel/accounts/ - Configuration file:
/var/www/html/parser_channel/db.php
- Change Default Password - Change immediately after first login
- Restrict Access - Recommend using firewall to limit panel access
- Regular Backups - Regularly backup database and configuration files
- Use HTTPS - If using poll function, must configure SSL certificate
- Channel Join Limit - Join max 5 channels at a time to avoid triggering Telegram rate limits
- Posting Frequency - Set reasonable posting limits to avoid being identified as spam
- Account Permissions - Ensure account has administrator permissions in target channel
- Content Compliance - Do not use for posting content violating Telegram Terms of Service
- Regular Database Cleanup - Delete unnecessary poll records
- Monitor Resource Usage - Use
htopto monitor server resources - Optimize CRON Frequency - Adjust CRON execution frequency based on actual needs
- Check Apache error log:
tail -f /var/log/apache2/error.log - Check PHP error log:
tail -f /var/log/php7.2-fpm.log - Check MadelineProto log:
tail -f /var/log/MadelineProto.log - Test database connection:
mysql -u root -p AutoPoster - Check file permissions:
ls -la /var/www/html/parser_channel/
- Main Program Directory:
/var/www/html/parser_channel/ - Account Files:
/var/www/html/parser_channel/accounts/ - Database Configuration:
/var/www/html/parser_channel/db.php - Apache Configuration:
/etc/apache2/apache2.conf - Log Files:
/var/log/MadelineProto.log
# Restart Apache
systemctl restart apache2
# View CRON tasks
crontab -l
# Edit CRON tasks
crontab -e
# View running processes
ps aux | grep php
# Set file permissions
chmod -R 777 /var/www/html/parser_channel/
chown -R www-data:www-data /var/www/html/parser_channel/- Automatic recognition of authenticated accounts
- Improved multi-account support
- Optimized channel management interface
- Enhanced error handling
This system is for learning and research purposes only. When using this system, please comply with:
- Telegram Terms of Service
- Laws and regulations of your region
- Content copyright and privacy protection regulations
Disclaimer: Any consequences arising from the use of this system are the sole responsibility of the user.
Last Updated: December 29, 2025 Document Version: 1.0
System Version: v3.7