Как сделать рассылку сообщений всем пользователям бота Python(pyTelegramBotApi) после обновления его функций? Список id записан в Excel файл

В программировании буквально неделю, просто захотелось сделать бот для игры с коллегами с обменом подарками. Использую библиотеки telebot и openpyxl для работы с файлами Excel. Сначала бот собирает все данные, начиная от id пользователя, заканчивая тем, какой подарок он хочет. Все фиксируется в файле эксель. Хочу поставить дату окончания регистрации участников и закрыть. После чего, направить всем напоминание о игре и том, кому нужно будет подарить подарок. Пока не удалось найти рабочий для своих библиотек вариант рассылки подобного уведомления, без предварительной отправки сообщения самим пользователем.

Кроме того, может так же есть способ поставить часть кода выполнятся до определенной даты, после чего запустить другой цикл с предварительной рассылкой сообщений?


Ответы (1 шт):

Автор решения: Otets Valerian
@tb.message_handler(content_types=['text'])
def ras(message):
    if message.chat.id == "id того, кто может отправлять рассылку" and message.text == 'Рассылка':
        msg = tb.send_message(message.chat.id, "Напишите текст рассылки или отправьте 'СТОП' для отмены.")
        tb.register_next_step_handler(msg, ras2)
    else:
        pass

def ras2(message):
    wb = load_workbook('user_bd.xlsx')
    sheet = wb.active
    l = sheet.max_row
    bd = []
    for i in range(2, l + 1):
        bd.append(sheet[f'A{i}'].value)
    if message.text == 'СТОП':
        tb.send_message(message.chat.id, 'Рассылка отменена')
    else:
        for user_id in bd:
            tb.send_message(int(user_id), message.text)

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

Если у вас нет названия столбцов, то начинайте цикл for не с 2, а с 1

→ Ссылка