Telegram User-боты: создание бота-модератора для автоматизации группы
Telegram User-боты (юзер-боты) — это мощный инструмент для автоматизации работы с Telegram API от имени пользователя. В отличие от обычных ботов, которые работают через Bot API, user-боты используют MTProto API и могут выполнять действия от имени пользователя.Зачем нужны User-боты?
1. Автоматизация рутинных задач
- Автоматическая отправка сообщений в группы и каналы
- Автоматическая пересылка сообщений
- Автоматический ответ на сообщения по ключевым словам
- Управление несколькими каналами одновременно
2. Мониторинг и аналитика
- Отслеживание активности в группах
- Сбор статистики по сообщениям
- Мониторинг упоминаний вашего бренда
- Анализ активности конкурентов
3. Управление контентом
- Автоматическая публикация контента по расписанию
- Кросс-постинг в несколько каналов
- Автоматическое форматирование сообщений
- Управление медиа-библиотекой
4. Модерация и администрирование
- Автоматическая модерация групп
- Блокировка спама
- Управление правами участников
- Автоматическое удаление нарушений
Как создать User-бота: пошаговая инструкция
В этом руководстве мы создадим User-бота для автоматической модерации 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.pyuser_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 комментариев
Комментарии (0)
Пока нет комментариев. Будьте первым!