JobQueue.run_repeating 到 运行 Telegram 中没有命令处理程序的函数
JobQueue.run_repeating to run a function without command handler in Telegram
我需要开始向 TG 组发送通知,在此之前我想 运行 一个连续查询 API 并将数据存储在数据库中的函数。虽然此功能是 运行ning,但我希望能够发送通知(如果它们在数据库中可用):
这是我的代码:
import telegram
from telegram.ext import Updater,CommandHandler, JobQueue
token = "tokenno:token"
bot = telegram.Bot(token=token)
def start(update, context):
context.bot.send_message(chat_id=update.message.chat_id,
text="You will now receive msgs!")
def callback_minute(context):
chat_id = context.job.context
# Check in DB and send if new msgs exist
send_msgs_tg(context, chat_id)
def callback_msgs():
fetch_msgs()
def main():
JobQueue.run_repeating(callback_msgs, interval=5, first=1, context=None)
updater = Updater(token,use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start",start, pass_job_queue=True))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
这段代码给我错误:
类型错误:run_repeating() 缺少 1 个必需的位置参数:'callback'
如有任何帮助,我们将不胜感激
您的代码存在一些问题,让我试着指出它们:
1。
def callback_msgs(): fetch_msgs()
您使用 callback_msgs
作为您工作的回调。但是作业回调只接受一个 telegram.ext.CallbackContext
.
类型的参数
-
JobQueue.run_repeating(callback_msgs, interval=5, first=1, context=None)
JobQueue
是一个 class。要使用实例方法 run_repeating
,您需要 class 的一个实例。事实上 Updater
已经为您构建了一个实例,在您的情况下它可以作为 updater.job_queue
使用。所以调用应该是这样的:
updater.job_queue.run_repating(callback_msgs, interval=5, first=1, context=None)
-
CommandHandler("start",start, pass_job_queue=True)
严格来说这不是问题,bot pass_job_queue=True
根本没有效果,因为你使用 use_context=True
请注意,在 ptb-wiki. There is also an example 上有一个关于 JobQueue
的很好的教程,介绍如何使用它。
免责声明:我目前是 python-telegram-bot
的维护者
我需要开始向 TG 组发送通知,在此之前我想 运行 一个连续查询 API 并将数据存储在数据库中的函数。虽然此功能是 运行ning,但我希望能够发送通知(如果它们在数据库中可用):
这是我的代码:
import telegram
from telegram.ext import Updater,CommandHandler, JobQueue
token = "tokenno:token"
bot = telegram.Bot(token=token)
def start(update, context):
context.bot.send_message(chat_id=update.message.chat_id,
text="You will now receive msgs!")
def callback_minute(context):
chat_id = context.job.context
# Check in DB and send if new msgs exist
send_msgs_tg(context, chat_id)
def callback_msgs():
fetch_msgs()
def main():
JobQueue.run_repeating(callback_msgs, interval=5, first=1, context=None)
updater = Updater(token,use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start",start, pass_job_queue=True))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
这段代码给我错误: 类型错误:run_repeating() 缺少 1 个必需的位置参数:'callback'
如有任何帮助,我们将不胜感激
您的代码存在一些问题,让我试着指出它们:
1。
def callback_msgs(): fetch_msgs()
您使用 callback_msgs
作为您工作的回调。但是作业回调只接受一个 telegram.ext.CallbackContext
.
-
JobQueue.run_repeating(callback_msgs, interval=5, first=1, context=None)
JobQueue
是一个 class。要使用实例方法run_repeating
,您需要 class 的一个实例。事实上Updater
已经为您构建了一个实例,在您的情况下它可以作为updater.job_queue
使用。所以调用应该是这样的:updater.job_queue.run_repating(callback_msgs, interval=5, first=1, context=None)
-
CommandHandler("start",start, pass_job_queue=True)
严格来说这不是问题,bot
pass_job_queue=True
根本没有效果,因为你使用use_context=True
请注意,在 ptb-wiki. There is also an example 上有一个关于 JobQueue
的很好的教程,介绍如何使用它。
免责声明:我目前是 python-telegram-bot