- 45
- 0
- 0
Бот для відстеження активності в коментарях: Як створити?
Telegram-канали – один з найпоширеніших способів заробітку, особливо серед арбітражників. Але щоб там заробляти, на жаль, недостатньо просто створити канал і залити туди декілька публікацій.
Робота над тг-каналом – це ціла система. Стратегія – Контент-план – Регулярність – Моніторинг тощо. Це лиш основні складники процесу без яких розвиток в тг буде лише казковою фантазією.
Моніторинг – саме на цьому аспекті ми зосередимося сьогодні. Як зрозуміти, що відбувається на ринку і тим більше у вашому ж каналі, відчути вайб аудиторії й зрозуміти, що їй потрібно, без ретельного відстеження? Гадаємо, ви погодитеся, якщо ми скажемо: “Ніяк”. Моніторинг – це про злиття з вайбом індустрії. Він дозволяє вам йти в ногу з усіма змінами. Так би мовити, забезпечує відносний спокій та вберігає від ситуації, де ви сидите з круглими очима й не розумієте, чому трапився affiliate-апокаліпсис чи щось на кшталт.
Оскільки наш час можна назвати епохою компʼютерів та ШІ-асистентів, ми не будемо зупинятися на тому, щоб розповісти, як вам самостійно моніторити мільйон каналів одночасно. За вас це зробить бот. Спершу лиш налаштуємо його, а вже після цього отримаєте подарунок у вигляді пари вільних годин у вашому робочому дні.
Як створити бота для відстеження активності під тг-постами?
Зараз ми розберемо спосіб створення такого бота на мові Python за допомогою бібліотеки pyTelegramBotAPI (telebot). Так, процес трошки довгий, але саме так ви зможете створити якісного помічника, який не буде тупити й брехати вам в очі.
Реєструємо бота в BotFather
- Відкрийте Telegram і введіть у пошуку @BotFather (обов’язково перевірте наявність синьої галочки верифікації, щоб точно потрапити на правильну адресу).
- Натисніть кнопку Start або надішліть команду /start.
- Надішліть команду /newbot.
- BotFather попросить ввести назву бота (наприклад, Comment Tracker). Це ім’я бачитимуть користувачі.
- Наступним кроком введіть юзернейм бота (наприклад, affiliate_tracker_bot). Юзернейм обов’язково має закінчуватися на bot англійською мовою і бути унікальним.
- Після цього BotFather надішле повідомлення з HTTP API токеном (виглядає приблизно так: 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ). Скопіюйте його та нікому не показуйте (ну раптом що).
Додаємо бота в потрібний канал чи групу
Як ви знаєте, в Telegram коментарі до постів каналу публікуються у спеціально прив’язаній до каналу групі для обговорень. Бот повинен знаходитися саме тут.
- Зайдіть у групу, де користувачі залишають коментарі під постами вашого каналу.
- Відкрийте налаштування групи ➔ Адміністратори (Administrators) ➔ Додати адміністратора (Add Administrator).
- Знайдіть свого бота за його юзернеймом та додайте його.
- Увімкніть для бота права: Manage messages (Керування повідомленнями) та Delete messages(якщо плануєте видаляти спам). Дозвіл на читання повідомлень увімкнеться автоматично.
Як дізнатися особистий ID?
Щоб бот знав, куди саме надсилати вам сповіщення про нові коментарі, йому потрібен ваш унікальний Telegram ID, тож ось додаткова коротенька інструкція, яка допоможе витягти його за лічені секунди:
- Знайдіть у пошуку бота @userinfobot або @ShowJsonBot.
- Натисніть Start. Бот миттєво поверне числовий код (наприклад, 987654321). Скопіюйте його.
Працюємо з кодом для Python і зпускаємо
Власне, ми підійшли до найскладнішого етапу. Але насправді це не так складно, як може здатися на перший погляд, тож погнали дивитися, що воно таке!
Для запуску бота на комп’ютері чи сервері вам знадобиться встановлений Python.
- Встановіть бібліотеку. Відкрийте термінал (або командний рядок) і виконайте команду:
bash
pip install pyTelegramBotAPI
- Створіть файл. Створіть на комп’ютері файл з назвою tracker.py та вставте в нього наступний код (замініть значення у лапках на ваші власні дані):
python
import telebot
# — НАЛАШТУВАННЯ —
BOT_TOKEN = “ВАШ_ТОКЕН_ВІД_BOTFATHER” # Токен вашого бота
MY_ADMIN_ID = 987654321 # Ваш особистий Telegram ID, куди прийдуть сповіщення
# ——————–
bot = telebot.TeleBot(BOT_TOKEN)
# Обробник усіх нових повідомлень у групі обговорення
@bot.message_handler(func=lambda message: True)
def track_comments(message):
# Перевіряємо, чи є повідомлення відповіддю у гілці коментарів
# (У Telegram коментарі мають thread_id або replies_to_message_id)
if message.reply_to_message:
# Формуємо текст сповіщення
user_name = message.from_user.first_name or “Користувач”
username_link = f”@{message.from_user.username}” if message.from_user.username else “немає юзернейму”
comment_text = message.text or “[Медіафайл/Стікер]”
notification = (
f”🔔 **Новий коментар!**\n\n”
f”👤 **Автор:** {user_name} ({username_link})\n”
f”💬 **Текст:** {comment_text}\n\n”
f”🔗 [Перейти до коментаря](https://t.me{str(message.chat.id)[4:]}/{message.message_id})”
)
# Надсилаємо сповіщення власнику бота
try:
bot.send_message(MY_ADMIN_ID, notification, parse_mode=”Markdown”)
except Exception as e:
print(f”Помилка надсилання сповіщення: {e}”)
# Запуск бота в режимі постійного прослуховування
if __name__ == “__main__”:
print(“Бот успішно запущений і відстежує коментарі…”)
bot.infinity_polling()
- Запустіть скрипт. У терміналі всередині папки з файлом виконайте:
bash
python tracker.py
Тепер, коли будь-який користувач залишить коментар під постом у вашому каналі, бот одразу надішле вам в особисті повідомлення інформацію про автора, текст коментаря та пряме посилання на нього.
Як отримувати від бота щотижневий та щомісячний звіт активності?
Недостатньо просто надсилання ботом кожного коментаря. Найкраще – коли він робить звіти, одразу аналізуючи вайб ситуації та інші аспекти. Щоб бот міг генерувати та надсилати окремо щотижневий та щомісячний звіти, логіку збереження даних потрібно змінити.
Тут будемо використовувати базу даних SQLite (вона вже вбудована в Python і не потребує додаткових налаштувань на PythonAnywhere). Бот записуватиме дату та категорію кожного коментаря, а потім автоматично вираховуватиме показники за останні 7 або 30 днів.
Код бота з SQLite
- Замініть вміст вашого файлу tracker.py цим кодом:
python
import sqlite3
import threading
import time
from datetime import datetime, timedelta
import telebot
import schedule
# — НАЛАШТУВАННЯ —
BOT_TOKEN = “ВАШ_ТОКЕН_ВІД_BOTFATHER”
MY_ADMIN_ID = 987654321
# ——————–
bot = telebot.TeleBot(BOT_TOKEN)
# Словники тригерів для аналізу
POSITIVE_WORDS = [“дякую”, “супер”, “клас”, “рекомендую”, “чудово”, “топ”, “👍”, “🔥”, “best”]
NEGATIVE_WORDS = [“жах”, , “погано”, “не задоволений”, “обман”, “дорого”, “👎”, “😡”, “скарга”]
CONVERSION_WORDS = [“купити”, “ціна”, “скільки”, “замовити”, “в наявності”, “як купити”, “лінк”, “посилання”]
def init_db():
“””Створення бази даних, якщо вона ще не існує”””
conn = sqlite3.connect(“monitoring_stats.db”)
cursor = conn.cursor()
cursor.execute(”’
CREATE TABLE IF NOT EXISTS comments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT,
is_positive INTEGER,
is_negative INTEGER,
is_conversion INTEGER
)
”’)
conn.commit()
conn.close()
@bot.message_handler(func=lambda message: True)
def analyze_and_save_comment(message):
if not message.text:
return
text_lower = message.text.lower()
# Визначаємо категорії коментаря (0 або 1)
pos = 1 if any(w in text_lower for w in POSITIVE_WORDS) else 0
neg = 1 if any(w in text_lower for w in NEGATIVE_WORDS) else 0
conv = 1 if any(w in text_lower for w in CONVERSION_WORDS) else 0
now_str = datetime.now().strftime(“%Y-%m-%d %H:%M:%S”)
# Зберігаємо дані в базу
try:
conn = sqlite3.connect(“monitoring_stats.db”)
cursor = conn.cursor()
cursor.execute(
“INSERT INTO comments (timestamp, is_positive, is_negative, is_conversion) VALUES (?, ?, ?, ?)”,
(now_str, pos, neg, conv)
)
conn.commit()
conn.close()
except Exception as e:
print(f”Помилка запису в БД: {e}”)
def generate_report(days_period, report_title):
“””Генерація аналітики за вказану кількість днів”””
conn = sqlite3.connect(“monitoring_stats.db”)
cursor = conn.cursor()
# Вираховуємо початкову дату періоду
start_date = (datetime.now() – timedelta(days=days_period)).strftime(“%Y-%m-%d %H:%M:%S”)
# Запит для отримання суми метрик за період
cursor.execute(”’
SELECT COUNT(*), SUM(is_positive), SUM(is_negative), SUM(is_conversion)
FROM comments
WHERE timestamp >= ?
”’, (start_date,))
row = cursor.fetchone()
conn.close()
total = row[0] if row[0] else 0
pos_count = row[1] if row[1] else 0
neg_count = row[2] if row[2] else 0
conv_count = row[3] if row[3] else 0
if total == 0:
return f”📊 **{report_title}**\n\nЗа останні {days_period} днів активності не зафіксовано.”
# Розрахунок відсотків
conv_rate = (conv_count / total) * 100
pos_rate = (pos_count / total) * 100
neg_rate = (neg_count / total) * 100
neutral_rate = ((total – pos_count – neg_count) / total) * 100
# Визначення рівня активності залежно від періоду
if days_period == 7:
activity_level = “Високий 🔥” if total > 200 else “Середній 📊” if total > 50 else “Низький 📉”
else:
activity_level = “Високий 🔥” if total > 800 else “Середній 📊” if total > 200 else “Низький 📉”
return (
f”📊 **{report_title}**\n”
f”⏱️ _Період: останні {days_period} днів_\n\n”
f”📈 **Загальна активність:** {activity_level} ({total} коментарів)\n”
f”💰 **Конверсія (ліди):** {conv_rate:.1f}% ({conv_count} запитів)\n\n”
f”🎭 **Тональність коментарів:**\n”
f”🟢 Позитивні: {pos_rate:.1f}% ({pos_count} шт.)\n”
f”🔴 Негативні: {neg_rate:.1f}% ({neg_count} шт.)\n”
f”⚪ Нейтральні: {neutral_rate:.1f}%\n”
)
def send_weekly_report():
report = generate_report(days_period=7, report_title=”ЩОТИЖНЕВИЙ ЗВІТ МОНІТОРИНГУ”)
bot.send_message(MY_ADMIN_ID, report, parse_mode=”Markdown”)
def send_monthly_report():
report = generate_report(days_period=30, report_title=”ЩОМІСЯЧНИЙ ЗВІТ МОНІТОРИНГУ”)
bot.send_message(MY_ADMIN_ID, report, parse_mode=”Markdown”)
# — НАЛАШТУВАННЯ РОЗКЛАДУ —
# Щотижневий звіт надсилатиметься щонеділі о 20:00
schedule.every().sunday.at(“20:00”).do(send_weekly_report)
# Щомісячний звіт надсилатиметься 1-го числа кожного місяця о 09:00
schedule.every().month.at(“09:00”).do(send_monthly_report)
def run_schedule():
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == “__main__”:
init_db() # Ініціалізуємо базу даних при запуску
print(“Бот-аналітик (тиждень/місяць) успішно запущений…”)
threading.Thread(target=run_schedule, daemon=True).start()
bot.infinity_polling()
Підсумовуючи
Навіщо ламати мізки щоразу, коли можна виділити максимум 1 день для підготовки бота, який щотижня й щомісяця збиратиме всю потрібну інформацію за вас. Тож користуйтеся, тестуйте й не забувайте полегшувати своє життя в часи розквіту технологій.
- 45
- 0
- 0
- За рейтингом
- По порядку