【发布时间】:2020-01-06 11:54:31
【问题描述】:
我正在尝试从第二次对话开始每天向机器人发送消息,而无需从用户端(例如 commandhadler)触发。
我已经为机器人与用户交互构建了一个基本菜单
但我也在尝试每天通过 job_queue 发送消息
我参考了使用命令处理程序的代码
dp.add_handler(CommandHandler("set", set_timer,
pass_args=True,
pass_job_queue=True,
pass_chat_data=True))
这是在用户输入 /set 之后设置的。 但我正在尝试找到一种方法,每 30 秒自动发送一次消息,或者设置固定时间每天发送消息 我的代码
from telegram.ext import Updater,CommandHandler
from telegram.ext import MessageHandler,Filters,InlineQueryHandler
import logging
import telegram
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger()
def start(bot, update):
update.message.reply_text("Hello , Thanks for choosing us!!")
def callback_minute(context: telegram.ext.CallbackContext):
chat_id = ?
context.bot.send_message(chat_id=chat_id,
text='Hi User, Add Fund to your account to start trading')
def main():
updater = Updater(token,use_context=True)
dp = updater.dispatcher
j = updater.job_queue
dp.add_handler(CommandHandler("start",start))
job_minute = j.run_repeating(callback_minute, interval=10, first=0)
updater.start_polling()
updater.idle()
如何获取chat_id? 如果我正在使用
def callback_minute(update, context: telegram.ext.CallbackContext):
chat_id = update.message.chat.id
我收到了这个错误
TypeError: callback_minute() missing 1 required positional argument: 'context'
【问题讨论】:
-
您无法通过这种方式获取
chat_id。chat_id只能从update对象中获取,而update对象只有在用户向Bot 发送消息时才会被获取。首先,将 job_queue 行移动到单独的函数中。然后应该使用任何处理程序调用此函数。 -
您能否提供一些示例代码,因为我已尝试将其启动,但无法正常工作
-
你想如何开始这个发送消息的工作?这应该是什么触发点?
标签: python python-telegram-bot