Telegram User-боты: создание бота-модератора для автоматизации группы

Telegram User-боты (юзер-боты) — это мощный инструмент для автоматизации работы с Telegram API от имени пользователя. В отличие от обычных ботов, которые работают через Bot API, user-боты используют MTProto API и могут выполнять действия от имени пользователя.

Зачем нужны User-боты?

1. Автоматизация рутинных задач

    • Автоматическая отправка сообщений в группы и каналы
    • Автоматическая пересылка сообщений
    • Автоматический ответ на сообщения по ключевым словам
    • Управление несколькими каналами одновременно

2. Мониторинг и аналитика

    • Отслеживание активности в группах
    • Сбор статистики по сообщениям
    • Мониторинг упоминаний вашего бренда
    • Анализ активности конкурентов

3. Управление контентом

    • Автоматическая публикация контента по расписанию
    • Кросс-постинг в несколько каналов
    • Автоматическое форматирование сообщений
    • Управление медиа-библиотекой

4. Модерация и администрирование

    • Автоматическая модерация групп
    • Блокировка спама
    • Управление правами участников
    • Автоматическое удаление нарушений

Как создать User-бота: пошаговая инструкция

В этом руководстве мы создадим User-бота для автоматической модерации Telegram-группы. Этот бот будет решать конкретную задачу: автоматически удалять спам-сообщения, отвечать на часто задаваемые вопросы и отправлять уведомления администратору о подозрительной активности. Задача бота:
    • Автоматически удалять сообщения с большим количеством ссылок (подозрение на спам)
    • Отправлять личные уведомления администратору при обнаружении спама
    • Автоматически отвечать на часто задаваемые вопросы участников группы
    • Логировать все действия в файл для последующего анализа
Что мы получим: После создания этого бота у вас будет полнофункциональный помощник, который работает 24/7 и автоматически модератор вашу Telegram-группу, освобождая время администраторов для более важных задач.

Шаг 1: Получение API credentials

Для работы User-бота нужны API credentials от Telegram. Получить их можно на официальном сайте: https://my.telegram.org/
    • Зайдите на сайт и авторизуйтесь своим номером телефона
    • Перейдите в раздел "API development tools"
    • Создайте новое приложение (если еще не создано)
    • Сохраните следующие данные:
- api_id — ID вашего приложения - api_hash — хеш API вашего приложения Важно: Никогда не публикуйте эти данные в открытом доступе!

Шаг 2: Установка библиотеки

Для Python используем библиотеку Telethon:
pip install telethon

Шаг 3: Создание конкретного User-бота

В качестве примера создадим User-бота для автоматической модерации и уведомлений в Telegram-группе. Этот бот будет решать следующие задачи: Задачи бота:
    • Автоматически удалять сообщения со спамом (много ссылок)
    • Отправлять уведомления администратору о подозрительной активности
    • Отвечать на часто задаваемые вопросы
    • Логировать все действия в файл
Создайте файл moderation_bot.py:
from telethon import TelegramClient, events
import asyncio
import os
from datetime import datetime

Данные из my.telegram.org

API_ID = 12345678 # Замените на ваш api_id API_HASH = 'your_api_hash_here' # Замените на ваш api_hash

ID группы для модерации (можно получить через @userinfobot)

MODERATION_GROUP_ID = -1001234567890 # Замените на ID вашей группы ADMIN_ID = 123456789 # Ваш Telegram ID

Создаем клиент

client = TelegramClient('moderation_bot_session', API_ID, API_HASH)

Функция логирования

def log_action(action, details): log_file = 'moderation_log.txt' timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') with open(log_file, 'a', encoding='utf-8') as f: f.write(f"[{timestamp}] {action}: {details}\n") print(f"[{timestamp}] {action}: {details}")

Обработчик новых сообщений в группе

@client.on(events.NewMessage(chats=MODERATION_GROUP_ID)) async def handle_group_message(event): message = event.message sender = await event.get_sender() # Проверка на спам (много ссылок в сообщении) if message.text and message.text.count('http') > 3: await event.delete() await event.respond('⚠️ Сообщение удалено: подозрение на спам') log_action('SPAM_DELETED', f'От {sender.first_name if sender else "Неизвестно"}: {message.text[:50]}') # Уведомление администратору await client.send_message( ADMIN_ID, f'🚨 Удалено спам-сообщение в группе от {sender.first_name if sender else "Неизвестно"}' ) return # Автоматический ответ на часто задаваемые вопросы faq_responses = { 'как начать': 'Для начала работы ознакомьтесь с правилами группы в закрепленном сообщении.', 'правила': 'Правила группы находятся в описании и закрепленном сообщении.', 'помощь': 'По вопросам обращайтесь к администраторам группы.' } if message.text: message_lower = message.text.lower() for keyword, response in faq_responses.items(): if keyword in message_lower: await event.reply(response) log_action('FAQ_ANSWERED', f'Вопрос: {keyword}') break

Обработчик всех сообщений для мониторинга

@client.on(events.NewMessage) async def monitor_messages(event): # Логируем все сообщения (опционально) if event.message.text: log_action('MESSAGE', f'От {event.chat.title if hasattr(event.chat, "title") else "Личное"}: {event.message.text[:100]}')

Запуск бота

async def main(): await client.start() print("🤖 Бот модерации запущен!") print(f"Модерация группы: {MODERATION_GROUP_ID}") log_action('BOT_STARTED', 'Бот успешно запущен') await client.run_until_disconnected() if __name__ == '__main__': asyncio.run(main())
Что делает этот бот:
    • Автоматическая модерация: Удаляет сообщения с большим количеством ссылок (подозрение на спам)
    • Уведомления администратору: Отправляет личное сообщение администратору при обнаружении спама
    • FAQ-бот: Автоматически отвечает на часто задаваемые вопросы
    • Логирование: Записывает все действия в файл moderation_log.txt для анализа

Шаг 4: Первый запуск

При первом запуске бот попросит ввести код подтверждения, который придет в Telegram:
python user_bot.py
Введите код из Telegram, и сессия будет сохранена в файл user_bot_session.session.

Шаг 5: Расширенные возможности

#### Автоматическая пересылка сообщений
@client.on(events.NewMessage(chats='source_channel'))
async def forward_messages(event):
    # Пересылаем сообщения в другой канал
    await client.send_message('target_channel', event.message)
#### Автоматическая публикация по расписанию
import schedule
import time

async def scheduled_post():
    await client.send_message(
        'your_channel',
        'Автоматическое сообщение по расписанию!'
    )

Запуск по расписанию (каждый день в 10:00)

schedule.every().day.at("10:00").do(lambda: asyncio.run(scheduled_post()))
#### Мониторинг ключевых слов
KEYWORDS = ['важное', 'срочно', 'новости']

@client.on(events.NewMessage)
async def keyword_monitor(event):
    message_text = event.message.text.lower() if event.message.text else ''
    
    for keyword in KEYWORDS:
        if keyword in message_text:
            # Отправляем уведомление
            await client.send_message(
                'me',  # Себе в "Избранное"
                f'Найдено ключевое слово "{keyword}" в сообщении!'
            )

Безопасность и лучшие практики

1. Хранение credentials

    • Никогда не храните API credentials в коде
    • Используйте переменные окружения или конфигурационные файлы
    • Добавьте .env в .gitignore

2. Обработка ошибок

@client.on(events.NewMessage)
async def safe_handler(event):
    try:
        # Ваш код
        pass
    except Exception as e:
        print(f"Ошибка: {e}")
        # Логирование ошибки

3. Ограничение частоты запросов

Telegram API имеет лимиты на количество запросов. Соблюдайте их, чтобы избежать блокировки:
import asyncio

async def send_with_delay(message, delay=1):
    await asyncio.sleep(delay)  # Задержка между запросами
    await client.send_message('target', message)

4. Использование сессий

Файл сессии (*.session) содержит данные для авторизации. Храните его в безопасности и не передавайте третьим лицам.

Примеры использования

Пример 1: Бот для автоматической модерации

@client.on(events.NewMessage)
async def auto_moderation(event):
    message = event.message
    
    # Проверка на спам (много ссылок)
    if message.text and message.text.count('http') > 3:
        await event.delete()
        await event.respond('Сообщение удалено: подозрение на спам')
    
    # Проверка на мат
    bad_words = ['плохое_слово1', 'плохое_слово2']
    if message.text:
        for word in bad_words:
            if word in message.text.lower():
                await event.delete()
                break

Пример 2: Бот для сбора статистики

from datetime import datetime

stats = {
    'messages_count': 0,
    'users': set(),
    'start_time': datetime.now()
}

@client.on(events.NewMessage)
async def collect_stats(event):
    stats['messages_count'] += 1
    sender = await event.get_sender()
    if hasattr(sender, 'id'):
        stats['users'].add(sender.id)
    
    # Вывод статистики каждый час
    if stats['messages_count'] % 100 == 0:
        print(f"Обработано сообщений: {stats['messages_count']}")
        print(f"Уникальных пользователей: {len(stats['users'])}")

Пример 3: Бот для кросс-постинга

TARGET_CHANNELS = ['@channel1', '@channel2', '@channel3']

@client.on(events.NewMessage(chats='@source_channel'))
async def cross_post(event):
    for channel in TARGET_CHANNELS:
        try:
            await client.send_message(channel, event.message)
            await asyncio.sleep(0.5)  # Задержка между отправками
        except Exception as e:
            print(f"Ошибка отправки в {channel}: {e}")

Ограничения и правила

Важные моменты:

    • Соблюдайте ToS Telegram — нарушение правил может привести к блокировке аккаунта
    • Не спамьте — уважайте других пользователей
    • Используйте разумно — автоматизация должна помогать, а не мешать
    • Регулярно обновляйте библиотеки — для совместимости с обновлениями Telegram

Рекомендации:

    • Начинайте с простых задач
    • Тестируйте на личных чатах перед использованием в группах
    • Ведите логи для отладки
    • Используйте виртуальное окружение для изоляции зависимостей

Заключение

User-боты — это мощный инструмент для автоматизации работы с Telegram. Они могут значительно упростить управление каналами, мониторинг активности и выполнение рутинных задач. При правильном использовании user-боты становятся незаменимыми помощниками для администраторов и маркетологов. Помните: с большой силой приходит большая ответственность. Используйте автоматизацию разумно и в соответствии с правилами Telegram.
Полезные ресурсы:

909 просмотров
0 лайков
0 комментариев