Заказчик
Отзывы фрилансеров:
+ 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]