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

Задача заключается в отправки сообщений в определенное время без встречного сообщения. Пытаюсь написать код (использую pyTelegramBotAPI 4.2.2), который в заданное время (например, 12 часов дня) должен отправить определенное сообщение в группу. Проблема заключается в том, что без встречного сообщения, отправленного пользователем, бот ничего не может отправить, а нужно чтобы несмотря на встречное сообщение и другие факторы отправлял сообщение в назначенное время. Помогите пожалуйста написать код

import random
from datetime import datetime

now = datetime.now() 
current_time = now.strftime("%H:%M")

bot = telebot.TeleBot( "TOKEN" , parse_mode = None)

BOT_URL = "URL"
@bot.message_handler(content_types=['text'])
def send_echo(message):
    

bot.infinity_polling()

import time
from datetime import datetime

bot = telebot.TeleBot( "" , parse_mode = None)
BOT_URL = "URL"
otv = "123"
now = datetime.now() 
current_time = now.strftime("%H:%M")

#Запускаем цикл для проверки времени
while True:
    time.sleep(1)
    if current_time == '19:40':#Выставляете ваше время
        print('pass')
        bot.send_message(message.chat.id, otv)
    
bot.infinity_polling()

Что здесь неправильно?


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

Автор решения: DisanD_08

если вам такое подойдет, то вот:

import telebot
import time
from datetime import datetime

bot = telebot.TeleBot( "TOKEN" , parse_mode = None)
BOT_URL = "URL"

now = datetime.now() 
current_time = now.strftime("%H:%M")

#Запускаем цикл для проверки времени
while True:
    time.sleep(1)
    if current_time == '12:00':#Выставляете ваше время
        print('pass')
        bot.send_message("тут айди вашей группы", 'text')
    
bot.infinity_polling()

надеюсь смог вам помочь

→ Ссылка
Автор решения: Алексей Тарасов
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import asyncio
from datetime import datetime

bot = Bot(token=os.getenv('TOKEN'))
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def command_start(message : types.Message):
    while True:
        await asyncio.sleep(1)
        now = datetime.now()
        current_time = now.strftime("%H:%M:%S")
        if current_time == '23:44:01': 
            await bot.send_message(message.chat.id, f'"Это сообщение отправлено в {current_time}"')

@dp.message_handler(commands=['mess'])
async def command(message : types.Message):
    await bot.send_message(message.chat.id, 'Для полной картины, асинхронность работает')

executor.start_polling(dp, skip_updates=True)

Ну как то так я это решил, уж не знаю на столько это плохой тон.

→ Ссылка