Бот Telegram для отправки автоматического сообщения каждые n часов с помощью python-telegram-botPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Бот Telegram для отправки автоматического сообщения каждые n часов с помощью python-telegram-bot

Сообщение Anonymous »

Я новичок в создании ботов, поэтому я создал очень простой бот Telegram, и он отлично работает, но не могу понять, как заставить бота отправлять сообщения каждые n минут или n часов при запуске команды /start_auto. p>
Я нашел обходной путь с помощью цикла while, но он выглядит глупо, и во время цикла пользователи не смогут взаимодействовать с ботом по другим темам.
Я хочу, чтобы пользователи могли запускать и останавливать эту запланированную задачу с помощью таких команд, как /start_auto и /stop_auto.
Я знаю, что есть много других ответов на вопросы, связанные с этой темой, но ни один из них кажется, работает с моим кодом.
import logging
import os
import time

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

logger = logging.getLogger(__name__)

PORT = int(os.environ.get('PORT', '8443'))

def start(update, context):
"""Sends a message when the command /start is issued."""
update.message.reply_text('Hi!')

def help(update, context):
"""Sends a message when the command /help is issued."""
update.message.reply_text('Help!')

def start_auto(update, context):
"""Sends a message when the command /start_auto is issued."""
n = 0
while n < 12:
time.sleep(3600)
update.message.reply_text('Auto message!')
n += 1

def error(update, context):
"""Logs Errors caused by Updates."""
logger.warning('Update "%s" caused error "%s"', update, context.error)

def main():
TOKEN = 'TOKEN_GOES_HERE'
APP_NAME = 'https://my-tele-test.herokuapp.com/'

updater = Updater(TOKEN, use_context=True)

# Get the dispatcher to register handlers
dp = updater.dispatcher

dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help))
dp.add_handler(CommandHandler("start_auto", start_auto))

# log all errors
dp.add_error_handler(error)
updater.start_webhook(listen="0.0.0.0", port=PORT, url_path=TOKEN, webhook_url=APP_NAME + TOKEN)
updater.idle()

if __name__ == '__main__':
main()


Подробнее здесь: https://stackoverflow.com/questions/721 ... legram-bot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»