Te sugerimos que revises esta resolución en un entorno controlado antes de pasarlo a producción, un saludo.
Solución:
Debe usar el parámetro de contexto al definir el trabajo en su función. Mira este ejemplo:
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, InlineQueryHandler
def sayhi(bot, job):
job.context.message.reply_text("hi")
def time(bot, update,job_queue):
job = job_queue.run_repeating(sayhi, 5, context=update)
def main():
updater = Updater("BOT TOKEN")
dp = updater.dispatcher
dp.add_handler(MessageHandler(Filters.text , time,pass_job_queue=True))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Ahora en su función de devolución de llamada donde lo necesite update.
escribe job.context
en lugar de.
Para enviar mensajes periódicamente, puede usar JobQueue Extention de python-telegram-bot
Aquí hay un ejemplo
from telegram.ext import Updater, CommandHandler
def callback_alarm(bot, job):
bot.send_message(chat_id=job.context, text='Alarm')
def callback_timer(bot, update, job_queue):
bot.send_message(chat_id=update.message.chat_id,
text='Starting!')
job_queue.run_repeating(callback_alarm, 5, context=update.message.chat_id)
def stop_timer(bot, update, job_queue):
bot.send_message(chat_id=update.message.chat_id,
text='Stoped!')
job_queue.stop()
updater = Updater("YOUR_TOKEN")
updater.dispatcher.add_handler(CommandHandler('start', callback_timer, pass_job_queue=True))
updater.dispatcher.add_handler(CommandHandler('stop', stop_timer, pass_job_queue=True))
updater.start_polling()
los /start
El comando iniciará JobQueue y enviará un mensaje con un intervalo de 5 segundos, y la cola puede ser detenida por /stop
mando.
Nos puedes añadir valor a nuestro contenido añadiendo tu veteranía en las reseñas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)