Простий Telegram-бот на Python з розсилкою всім користувачам
У цьому уроці ми створимо Telegram-бота, який може:
• реєструвати користувачів,
• зберігати їх у файл,
• робити масову розсилку всім, хто писав боту.
Бот складається всього з двох файлів:
1) config.py — налаштування і токен
2) bot.py — основна логіка бота
Бот написаний на бібліотеці pyTelegramBotAPI, яка дуже проста у використанні.
Для встановлення бібліотеки:
pip install pyTelegramBotAPI➡️ Файл 1: config.pyTOKEN = "ВАШ_TELEGRAM_BOT_TOKEN"
# Файл, в якому зберігатимемо ID користувачів
USERS_FILE = "users.txt"➡️ Файл 2: bot.pyimport 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 файлах, який легко розширювати.