gpt4 book ai didi

python - 如何通过 python 电报 bot 库在固定时间或间隔从 bot 向用户发送消息?

转载 作者:行者123 更新时间:2023-12-05 02:57:45 26 4
gpt4 key购买 nike

我正在尝试每天向机器人发送消息,而无需从第二次对话开始从用户端(例如 commandhadler)触发。

我已经为机器人构建了一个与用户交互的基本菜单

enter image description here

但我也在尝试每天通过 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'

最佳答案

下面对其进行了修改,以便从 /start 命令调用 run_repeating()(正如 Gagan T K 在评论中所建议的那样)。在这个例子中 first=30 所以它将在 30 秒后开始。

the wiki documentation for JobQueue 的底部有一个以这种方式使用作业队列的很好的例子。在 GitHub 上。

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()

bot = telegram.Bot(token=token)

def start(update, context):
context.bot.send_message(chat_id=update.message.chat_id,
text="Hello , Thanks for choosing us!!")

context.job_queue.run_repeating(callback_minute, interval=10, first=30,
context=update.message.chat_id)

def callback_minute(context):
chat_id=context.job.context
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
dp.add_handler(CommandHandler("start",start, pass_job_queue=True))

updater.start_polling()

updater.idle()

if __name__ == '__main__':
main()

关于python - 如何通过 python 电报 bot 库在固定时间或间隔从 bot 向用户发送消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59611662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com