(python) Telegram bot - 如何定期发送消息?

2024-03-11

我对我的电报机器人感到左右为难。假设我必须创建一个函数,每周/每月一次向每个连接到机器人的用户询问一个问题:

def check_the_week(bot, update):
reply_keyboard = [['YES', 'NO']]
bot.send_message(
    chat_id=update.message.chat_id,
    text=report,

    reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))  # sends the total nr of hours
update.reply_text("Did you report all you working hour on freshdesk for this week?",
                  ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))

if update.message.text == "YES":
    update.message.reply_text(text="Are you sure?",
                              reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))

    # Asks confirmation
    if update.message.text == "YES":
        update.message.reply_text(text="Thank you for reporting your working hours in time!")

    elif update.message.text == "NO":
        update.message.reply_text(text="Please, check you time reports and add missing")

elif update.message.text == "NO":
    update.message.reply_text(text="Please, check you time reports and add missing")

我希望每周触发此功能。我正在考虑使用JobQueue https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-JobQueue。问题是,在这种情况下,函数应该有两个参数 - bot 和 job_queue,但没有更新:

def callback_30(bot, job):
    bot.send_message(chat_id='@examplechannel',
    text='A single message with 30s delay')

j.run_once(callback_30, 30)

如何在电报机器人中创建作业调度程序(或任何其他解决方案)以每周触发一次我的功能? 附注请不要使用“while True”+time.sleep() 解决方案。循环永远卡住了,我试过了。


在函数中定义作业时需要使用上下文参数。看这个例子:

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

现在在您需要的回调函数中update. type job.context反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(python) Telegram bot - 如何定期发送消息? 的相关文章

随机推荐

  • 不使用
    标签是否可以实现类似
    的效果?

    我个人喜欢 fieldset http www w3 org wiki HTML Elements fieldset标签 因为它如何绘制一个盒子并放置 legend http www w3 org wiki HTML Elements le
  • django 中的竞争条件

    下面是一个带有潜在竞争条件的 django 视图的简单示例 myapp views py from django contrib auth models import User from my libs import calculate p
  • 重载方法调用重新设计

    我有一个界面IAction它有一个通用方法 public interface IAction void doAction ISignal sig IState state 另一堂课IActionAbstract然后实现IAction接口并调
  • 如何从 SugarCRM 的表中检索所有记录?

    我正在使用 Sugar Pro 6 1 想知道如何从产品表中检索所有产品及其 id 我正在尝试使用以下代码 sql SELECT id name FROM products order by name result GLOBALS db g
  • 如何让 Spring @ControllerAdvice 与其他自定义 Spring @Aspect 一起工作?

    我有一个自定义记录器使用 Aspect我希望它总是最后运行 这样无论控制器返回什么响应 它都会被记录到数据库中 所以我放了一个 Order 1 在这方面 我还使用编写了一个错误处理程序 ControllerAdvice处理所有意外异常并返回
  • 注意:无法读取...等的 get kotlin 元数据和类型转换器

    添加房间数据库依赖项并使用我的应用程序配置它后 我遇到了几个错误 其中大部分是Failed to read get kotlin metadata for 虽然我在项目中没有使用 kotlin 但第二个错误是关于变量的 TypeConver
  • 如何在 JavaScript 中对 NodeList 进行重新排序/排序?

    我有一个我认为应该是一个简单的问题 让我快速解释一下 在我的 JavaScript 中 food xml读入为 getMenuXml open GET food xml false getMenuXml send xmlDoc getMen
  • npm start 无法打开浏览器选项卡

    我正在学习 AngularJS 2 我想从他们的官方网站上在 AngularJS 2 中进行我的第一个应用程序 所以我从这里开始关注所有内容https angular io guide quickstart https angular io
  • 是否有 Angular / Angular-CLI 和 Node.js 的兼容性列表?

    我定期遇到这个问题 必须使用已弃用的 Angular 依赖项来启动旧的 Angular 项目 因为我通常运行最新的 Node js 版本 至少是最新的 LTS 版本 所以我经常遇到问题 即我无法运行旧项目 我通过使用节点版本管理器解决了这个
  • iTunes Connect 错误:“应用内购买已被退回”

    我看到以下错误iTunes Connect in the in app purchase我的应用程序部分 应用内购买已退回并在表中突出显示 以下 全部in app purchases新应用程序已被拒绝 他们都显示出状态开发者需要采取行动 走
  • XPath 在任何文本节点中查找文本

    我试图在文档中的任何文本节点中查找特定文本 到目前为止我的语句如下所示 doc xpath text Alliance Consulting do node end 这显然行不通 有人能建议更好的选择吗 这个表情 text Alliance
  • Spring security 3 带索引的拦截url模式

    我正在尝试在项目中使用 Spring Security v3 2 目前 我总是使用 Coldfusion 文件来调用其他文件来构建视图 所以我所有的网址都通过了index cfm blablah 现在我坚持允许匿名用户进入主视图 下列的Sp
  • 初学者打开资源管理器显示文件夹内容

    我几天来一直在 Windows 7 上修改 Python 3 66 取得了良好的进展 但我完全不知道如何让 Windows 资源管理器打开并显示我想要的文件夹内容 我已经尝试了至少 7 种不同的解决方案 但似乎都不起作用 他们都可以很好地打
  • 使用php过滤JSON数据

    我正在尝试迭代此 json 文件并过滤掉不需要的元素 我想拆分结果 以便我有一个客户列表或供应商列表 json 文件 descriptor Test resources uuid 281d393c 7c32 4640 aca2 c286f6
  • Google 日历 API + 电子邮件通知 ics 文件

    我正在使用 Google Calendar API 在 Google Calendar 上创建活动 该 API 工作正常 当我修改 Google 日历中的其中一项活动时 Google 可以通过电子邮件向我发送包含 ics 文件的更新 有没有
  • 在 jasper 报告中的单个文本字段中使用多种字体

    我有一个显示的字段 命名 Here To 是静态的并且 NAME 是一个变量 所以我使用了一个文本字段 attr 和 收件人 F 名称 作为一种表达方式 现在的问题是 我必须为 收件人 和 名称 使用两种单独的字体 我尝试过使用风格 但我一
  • 具有相同标识符的多个 HTTP GET 参数

    假设我收到如下请求 http www example com index php id 123 version 3 id 234 version 4 是否可以在我的 php 代码中以简单的方式提取这些内容 我意识到我可以使用 window
  • 动态加载用户控件 ASP.net 中的单选选项 GroupName 问题

    我有用户控制 table tr td td tr table
  • 如何自定义FirebaseUI-Web主题

    我只想定制徽标和颜色 有谁知道解决方案吗 我只看到了安卓的解决方案 下面的代码 if process browser const firebaseui require firebaseui console log firebaseui co
  • (python) Telegram bot - 如何定期发送消息?

    我对我的电报机器人感到左右为难 假设我必须创建一个函数 每周 每月一次向每个连接到机器人的用户询问一个问题 def check the week bot update reply keyboard YES NO bot send messa