Создаем Telegram бота

Отправка сообщений в произвольное время

Ваш телеграм бот может писать пользователю в произвольное время, если пользователь хоть раз с ним контактировал и вы запомнили id чата с ним.

В примере ниже после команды /spam бот будет отправлять пользователю сообщение каждые несколько секунд. Для этого используется многопоточность - в одном потоке осуществляется обновление сообщений с сервера телеграма, а во втором - отправка сообщений всем пользователям каждые несколько секунд.

import telebot
import time
from threading import Thread

token = "ТОКЕН"
bot = telebot.TeleBot(token=token)

users = []

@bot.message_handler(commands=['start', 'help'])
def start(message):
    user = message.chat.id
    bot.send_message(user, "https://www.youtube.com/watch?v=rdg4lkgsQ04")

@bot.message_handler(commands=['spam'])
def add_user(message):
    global user
    user = message.chat.id
    if user not in users:
        users.append(user)
    bot.send_message(user, "Берем сироп вишневый!")

@bot.message_handler(commands=['stop'])
def remove_user(message):
    user = message.chat.id
    users.remove(user)
    bot.send_message(user, "Все, все.")

def spam():
    global users
    while True:
        for user in users:
            bot.send_message(user, "Затем сироп вишневый!")
        time.sleep(2)

def polling():
    bot.polling(none_stop=True)

polling_thread = Thread(target=polling)
spam_thread = Thread(target=spam)

polling_thread.start()
spam_thread.start()

Назад Вперед