телеграм бот не работает, он не отправляет ежедневно сообщения

очень хотела осуществить действие отправки сообщения ежедневно, но у меня никак не получается, подскажите, пожалуйста, как поправить код( к слову, когда я пыталась поставить bot.polling() в конце он выделялся серым цветом и просто не читался)

import schedule
import time


bot = telebot.TeleBot("")

def send_message(message):
    bot.send_message(message.chat.id, 'Не спишь?')

schedule.every().day.at("08:00").do(send_message)
schedule.every().day.at("23:00").do(send_message)

def bot_polling():
    bot.polling()
    
while True:
    schedule.run_pending()
    time.sleep(1)

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

Автор решения: Ben Puls

bot.send_message(), кому вы собираетесь отправлять сообщение, если id неизвестен.

Чтобы отправить сообщение определённому пользователю, в аргумент функции сначала вложите id пользователя, которому хотите отправить.

Узнать свой id можно следующим образом.

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
    bot.send_message(message.chat.id, f'Ваш id: {message.from_user.id}')

Отправка нескольким пользователям по id:

list_id = [123456789, 987654321]

def time_to_send_message(list_id):
    for id in list_id:
      bot.send_message(id, 'some text')
  
time_to_send_message(list_id)

Отправка одному пользователю по id:

tg_id = # Ваш Telegram ID

def time_to_send_message(): 
  bot.send_message(tg_id, 'some text')
  
time_to_send_message()

В вашем случае это будет выглядеть примерно так:

import schedule
import time


bot = telebot.TeleBot("")

tg_id = # Ваш Telegram ID


def send_message():
    bot.send_message(tg_id, 'Не спишь?')

schedule.every().day.at("08:00").do(send_message)
schedule.every().day.at("23:00").do(send_message)

def bot_polling():
    bot.polling()
    
while True:
    schedule.run_pending()
    time.sleep(1)
→ Ссылка
Автор решения: portside

Рекомендую подключить базу данных, в ней хранить значения userID, при нажати на /start пользоваткль занесётся в базу данных с таким параметрами: userID: айди пользователя

В команде /start необходимо сделать проверку на существование пользователя, если пользователь уже 1 раз вводил /start, то больше он не будет заноситься в базу данных.

Далее уже вы можете брать айди из базы данных и каждому пользователю через цикл отправлять сообщения. Так-же рекомендую вставить блок try except, в целях если кто-либо из пользователей заблокирует бота, то бот не вернет ошибку, а продолжит выполнение рассылки.

→ Ссылка