Отправка сообщений телеграмм бота в определенное время
Задача заключается в отправки сообщений в определенное время без встречного сообщения. Пытаюсь написать код (использую 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)
Ну как то так я это решил, уж не знаю на столько это плохой тон.