Как создать бота, который будет регистрировать переходы по пригласительным ссылкам?

Как создать в боте на aiogram функционал отслеживания переходов по ссылке вида https://t.me/+JWvDeqhoMuWmNzMy и получения информации о количестве переходов? Я искал информацию в интернете, но мне не удалось найти нужную информацию.
  • 26 января 2024 г. 15:28
Ответы на вопрос 1
Отслеживание переходов по приглашающим ссылкам в Telegram можно реализовать следующим образом:

### Использование ссылок со статистикой Telegram

Для публичных групп и каналов Telegram предлагает инструмент статистики, который может отслеживать количество просмотров и переходов по ссылкам. Если вы администратор канала или группы, вы можете создать специальную инвайт-ссылку и смотреть статистику переходов в самом Telegram. Однако для бота на aiogram использовать такие инструменты напрямую нельзя, поэтому в этом случае стоит рассмотреть другие способы.

### Самостоятельный учет переходов

Один из способов — разработать систему для учета переходов через бота, используя промежуточный URL, который будет вести на ваш сервер перед тем, как пользователь перейдет в Telegram.

1. **Создание веб-сервера**: Для учета переходов вам потребуется веб-сервер, который будет обрабатывать HTTP-запросы. Вы можете использовать Flask, Django или любой другой веб-фреймворк на Python.

2. **Регистрация переходов**: На веб-сервере создайте эндпоинт, который будет принимать запросы, увеличивать счетчик переходов и редиректить пользователя на конечную ссылку Telegram.

3. **Интеграция с aiogram**: Ваш бот должен отсылать пользователю промежуточную ссылку, ведущую на эндпоинт веб-сервера. Каждый переход по такой ссылке будет фиксироваться вами.

Вот примерный код Flask-сервера для учета переходов:

```python
from flask import Flask, redirect
import threading

app = Flask(__name__)
counter_lock = threading.Lock()
click_counter = {}

@app.route('/go/<token>')
def track_click(token):
    with counter_lock:
        click_counter[token] = click_counter.get(token, 0) + 1
    return redirect(f"https://t.me/{token}")

@app.route('/stats/<token>')
def stats(token):
    count = click_counter.get(token, 0)
    return f"Total clicks for {token}: {count}"

if __name__ == '__main__':
    app.run(debug=True)
```

Здесь `/go/<token>` — это роут, который увеличивает счетчик для конкретной токен-ссылки и перенаправляет пользователя в Telegram (`<token>` замените на часть вашей инвайт-ссылки). `/stats/<token>` — страница, где вы можете проверить количество переходов по вашей ссылке.

Чтобы этот код работал, вам необходимо запустить веб-сервер в интернете (на хостинге или VPS), обеспечить ему домен и SSL-сертификат (если хотите, чтобы Telegram правильно обрабатывал ваш URL). Пользователи при нажатии на полученные от бота ссылки будут проходить через ваш веб-сервер, который отслеживает переходы и перенаправляет их в указанную группу или чат Telegram.

Обратите внимание, что пример простой и не учитывает долгосрочное хранение данных, безопасность и масштабируемость. Для реального использования вам потребуется более продуманная архитектура.
Похожие вопросы