Скрипт автоматизированного нейро-чаттинга в Telegram от имени канала

Откликнуться
s
Заказчик
Отзывы фрилансеров: + 0 - 0
Зарегистрирован на сайте меньше месяца
Бюджет: 15 000 руб
184.67 $ — 159.85 €
1. Цель

Создать скрипт на Python (Telethon + OpenAI), который автоматически общается в выбранном Telegram-чате от имени моего канала.
Скрипт должен уметь:
- слушать целевой чат в реальном времени;
- сохранять сообщения в PostgreSQL (с предварительной фильтрацией по списку стоп-слов);
- периодически (по условиям из конфига) выбирать подходящее сообщение и формировать на него короткий, «человеческий» ответ через OpenAI API;
- публиковать ответ в чат в режиме reply от лица заданного канала;

2. Сроки
Срок выполнения: 1–1.5 недели.
Оплату могу провести в USDT (200$)

3. Основные технологии
- Python 3.10+
- Telethon — для взаимодействия с Telegram
- PostgreSQL — для хранения данных
- OpenAI API — для генерации ответов
- PyYAML — для чтения конфига
- logging — логирование в консоль и файл

4. Пример конфигурации (пример config.yaml).

telegram:
  target_chat_id: -1001234567890
  post_as_channel_id: -1009876543210
  session:
    phone: "+358000000000"
    session_path: "./sessions/main.session"
  api_id: 123456
  api_hash: "abcdef1234567890abcdef1234567890"

openai:
  api_key: "ENV_OPENAI_API_KEY"
  model: "gpt-4o-mini"
  temperature: 0.6
  max_tokens: 300

database:
  host: "127.0.0.1"
  port: 5432
  user: "neurochat"
  password: "neurochat_pass"
  name: "neurochat_db"

strategy:
  min_messages_per_cycle: 10
  max_messages_per_cycle: 25
  # между этими значениями при старте каждого цикла выбирается случайное число сообщений, после которых сработает ответ
  min_minutes_per_cycle: 10
  selection_window_minutes: 60
  reply_max_words: 120
  language: "ru"

personal_style: |
  Я — дизайн-студия. Отвечаю только на темы, связанные с дизайном, визуалом, инфографикой, брендингом, упаковкой и оформлением маркетплейсов.

content_requirements: |
  Коротко, профессионально, без эмодзи и канцелярита. Ответы должны звучать естественно, как от живого человека. Без ссылок и оффтопа.

runtime:
  dry_run: false
  log_file: "./logs/neurochat.log"
  log_level: "INFO"
  timezone: "Europe/Helsinki"

5. Поведение программы
5.1 Мониторинг чата

Скрипт подключается через Telethon к указанному чату и отслеживает все новые сообщения.
Если сообщение содержит слова из excluded_patterns — оно не сохраняется и не обрабатывается.
Все остальные сообщения сохраняются в базу данных с базовой информацией (текст, автор, дата и т.д.).
Для каждого сообщения вычисляется некоторый «score» — насколько оно близко к тематике студии (дизайн, визуал, брендинг и т.д.). Логику оценки реализует разработчик. Возможно подключение другой AI модели – от replicate, или локальный алгоритм подсчета score по ключевым словам, вопросительности предложения и тд. Если данный  функционал будет слишком сложным, то можно рассмотреть набор ключевых слов на входе к скрипту + рандомизацию (ответ на рандомное сообщение). Однако приветствуется подключение алгоритма высчета score.

5.2 Условия запуска ответа

Проверка срабатывает по двум условиям:
1. Прошло время min_minutes_per_cycle;
2. Накоплено случайное количество сообщений, выбранное при старте цикла в диапазоне от min_messages_per_cycle до max_messages_per_cycle.

Если время вышло, но нужное количество сообщений (случайно выбранное в этом диапазоне) ещё не достигнуто — программа продолжает ждать.

5.3 Выбор сообщения для ответа

При срабатывании условия скрипт выбирает самое релевантное сообщение за период selection_window_minutes.
Критерий релевантности (score) — по усмотрению разработчика, но должен учитывать:
- тематическое совпадение с описанием personal_style;
- адекватную длину текста;
- приоритет вопросам, обращённым к аудитории.

5.5 Отправка сообщения

Ответ публикуется как reply на исходное сообщение от имени канала post_as_channel_id.
Если Telegram не позволяет ответить от имени канала — допускается fallback-отправка от имени аккаунта владельца.
В режиме dry_run: true публикация не выполняется, но ответ фиксируется в лог-файле.

6. База данных

Используется только PostgreSQL.
Схему БД (таблицы, связи, индексы) и модель хранения разработчик продумывает самостоятельно.
Важно, чтобы база позволяла:
- хранить сообщения и их параметры;
- хранить оценки релевантности (score);
- фиксировать факты публикации ответов;
- предотвращать повторные ответы на одно и то же сообщение.

7. Логирование

Ведение логов в файл и консоль.
Минимум: дата, уровень, действие, результат, chat_id, msg_id.
При dry_run: true логировать текст сгенерированного ответа и целевое сообщение.

8. Комментарии и документация

У каждой функции — короткий docstring (назначение, ключевые аргументы, возвращаемое значение).
Структура кода — модульная и читаемая.
В README.md описать:
- как запустить скрипт;
- как настроить config.yaml;
- порядок подключения к PostgreSQL;
- пример dry-run лога.

Полный документ по требованиям могу скинуть в лс, здесь не пропускает по количеству символов.
Разделы:
Опубликован:
03.11.2025 | 11:08 [поднят: 03.11.2025 | 11:08]
Откликнуться

Выберите способ верификации:

Обновите страницу после прохождения верификации.

Посмотреть другие заказы Разместить заказ

Теги:

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».