Простий Telegram-бот на Python з розсилкою всім користувачам

14.11.2025 Andriy Havrilyuk

У цьому уроці ми створимо Telegram-бота, який може:
• реєструвати користувачів,
• зберігати їх у файл,
• робити масову розсилку всім, хто писав боту.

Бот складається всього з двох файлів:
1) config.py — налаштування і токен
2) bot.py — основна логіка бота

Бот написаний на бібліотеці pyTelegramBotAPI, яка дуже проста у використанні.

Для встановлення бібліотеки:

pip install pyTelegramBotAPI
➡️ Файл 1: config.py
TOKEN = "ВАШ_TELEGRAM_BOT_TOKEN"

# Файл, в якому зберігатимемо ID користувачів
USERS_FILE = "users.txt"
➡️ Файл 2: bot.py
import telebot
from config import TOKEN, USERS_FILE

bot = telebot.TeleBot(TOKEN)

# Функція: зберегти user_id, якщо його ще нема
def save_user(user_id):
    try:
        with open(USERS_FILE, "r") as f:
            users = f.read().splitlines()
    except FileNotFoundError:
        users = []

    if str(user_id) not in users:
        with open(USERS_FILE, "a") as f:
            f.write(str(user_id) + "\n")


@bot.message_handler(commands=['start'])
def start_message(message):
    save_user(message.chat.id)
    bot.send_message(message.chat.id, "Привіт! Ти підписаний на бота 😊")


@bot.message_handler(commands=['send'])
def send_message(message):
    # /send текст для розсилки
    text = message.text.replace("/send", "").strip()

    if not text:
        bot.send_message(message.chat.id, "❗ Використання: /send текст_повідомлення")
        return

    # Читаємо всіх користувачів
    try:
        with open(USERS_FILE, "r") as f:
            users = f.read().splitlines()
    except FileNotFoundError:
        bot.send_message(message.chat.id, "Немає жодного зареєстрованого користувача.")
        return

    # Розсилка
    count = 0
    for user_id in users:
        try:
            bot.send_message(user_id, text)
            count += 1
        except:
            pass  # Наприклад, юзер заблокував бота

    bot.send_message(message.chat.id, f"Розсилку завершено! Відправлено: {count} користувачам.")


@bot.message_handler(func=lambda m: True)
def all_messages(message):
    save_user(message.chat.id)
    bot.send_message(message.chat.id, "Я записав тебе у список отримувачів розсилки ✔️")


print("Бот запущений...")
bot.infinity_polling()
➡️ Як це працює?
1. Кожен користувач, який пише боту, автоматично додається до файлу users.txt.
2. Команда /send дозволяє відправляти розсилку всім користувачам.
3. Бот використовує простий текстовий файл замість БД — для навчальних та малих проєктів цього достатньо.

🎉 Готово!
У вас є повністю робочий Telegram-бот у 2 файлах, який легко розширювати.