aidsoul / vktote
Autoposting from a VK group to a Telegram channel
Requires
- php: >=8.1
- aidsoul/pdo: ^1.0
- guzzlehttp/guzzle: ^7.4
- laminas/laminas-diactoros: ^3.8
- laminas/laminas-httphandlerrunner: ^2.13
- league/container: ^4.2
- league/route: ^5.1
- twig/twig: 3.4
This package is auto-updated.
Last update: 2026-02-27 13:30:21 UTC
README
VKTote is an automatic posting tool that transfers posts from VK groups to Telegram channels.
Features
- 📤 Automatic Posting - Automatically fetch and forward VK group posts to Telegram
- 👥 Multiple Groups - Support for managing multiple VK group profiles
- 🎛️ Web Control Panel - User-friendly interface for group management
- 🔗 Rich Media Support - Handles photos, videos, links, and text posts
- 🌐 API Access - RESTful API for programmatic access
- 🔒 Security - CSRF protection and secure authentication
Quick Start
New to VKTote? Get started in minutes:
- Installation Guide - Set up the application
- Configuration Guide - Configure your first group
- Basic Usage - Learn the basics
Table of Contents
Getting Started
- Installation - System requirements and setup
- Configuration - Configuring VK and Telegram
Usage
- Basic Usage - Core functionality
- Control Panel - Web interface guide
API Reference
- API Overview - Introduction to the API
- Endpoints - Available API endpoints
Development
- Project Structure - Code organization
- Troubleshooting - Common issues and solutions
System Requirements
| Requirement | Version |
|---|---|
| PHP | 8.1 or higher |
| MySQL | 5.7+ |
| Apache/Nginx | Latest |
| Composer | 2.0+ |
Installation
To install, use the command: git clone https://github.com/aidsoul/vktote.
Download the necessary libraries using the command: composer install.
Or use command composer create-project aidsoul/vktote.
Import Database
Import the database file: db.sql.
Configuration
All files for working with groups are located in the "groups" folder.
In the "groups" folder, folders with the files listed below are added. All these files are needed for work. Come up with a name for the folder yourself.
The following example is a true profile group creation:
groups
[test]=>[config.ini]
[test1]=>[config.ini]
[test...]=>[config.ini]
If necessary, you can change the folder and the name of the files in the configuration file "config.php".
Configuration file "config.ini" should look like this:
[Db] host="localhost" dbName="vk" user="root" pass="" [Vk] token ="Your token" idGroup="Group id or name" count="Number of posts to capture" [Telegram] botApiKey="Bot API Key" botName="Bot name" chatId="Chat Id for send post" [Bot] lang = "eng"
If there is a need to use a different database for each profile of the group you need to change the constant "DB_COMMON" in config.php by setting the value to "true". You should also add: DB_HOST, DB_NAME, DB_USER, DB_PASS.
The following bot languages are available: English (eng) and Russian (rus).
Control Panel
For the convenience of creating group profiles, use the control panel.
Use "localhost" to log in to the control panel. Click on the log in button. The first time you login, a password will be created. You need to remember the password, it will be used to access the control panel. Go to settings "localhost/settings" and create a new group profile by clicking on the "Create a settings profile" button.
Task Scheduler
Use crontab on your server or another task scheduler to get fresh posts without stopping.
Usage example
Open and add a task to the task list: crontab -e.
Get fresh entries every minute: * * * * * php start.php group_folder.
Below is an example of running a task for the "test" group profile. Test is specified as an argument.
*/5 * * * * php start.php test
API
All API queries start with https://domain/api/
bot.start
Accepts a GET request with the parameter "group".
Example: https://domain/api/bot.start?group=group_name
Technology Stack
- Framework: Custom PHP MVC
- Router: League\Route
- Templating: Twig
- Database: MySQL with PDO
- HTTP Client: Guzzle
Support
License
This project is licensed under the MIT License.