我正在使用https://github.com/python-telegram-bot/python-telegram-bot编写电报机器人。
我从echo示例开始,并不想远离它:换句话说,我希望机器人代码只将文本转发到另一个函数,转换它并将其发回。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Simple Bot to reply to Telegram messages
# This program is dedicated to the public domain under the CC0 license.
"""
This Bot uses the Updater class to handle the bot.
First, a few handler functions are defined. Then, those functions are passed to
the Dispatcher and registered at their respective places.
Then, the bot is started and runs until we press Ctrl-C on the command line.
Usage:
Basic Echobot example, repeats messages.
Press Ctrl-C on the command line or send a signal to the process to stop the
bot.
"""
from telegram import Updater
import logging
import process
# Enable logging
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
# Define a few command handlers. These usually take the two arguments bot and
# update. Error handlers also receive the raised TelegramError object in error.
def start(bot, update):
bot.sendMessage(update.message.chat_id, text='Hi!')
def help(bot, update):
bot.sendMessage(update.message.chat_id, text='Help!')
def echo(bot, update):
bot.sendMessage(chat_id=update.message.chat_id, text = process.do_something(update.message.text))
def error(bot, update, error):
logger.warn('Update "%s" caused error "%s"' % (update, error))
def main():
# Create the EventHandler and pass it your bot's token.
updater = Updater("MYTOKEN")
# Get the dispatcher to register handlers
dp = updater.dispatcher
# on different commands - answer in Telegram
dp.addTelegramCommandHandler("start", start)
dp.addTelegramCommandHandler("help", help)
# on noncommand i.e message - echo the message on Telegram
dp.addTelegramMessageHandler(echo)
# log all errors
dp.addErrorHandler(error)
# Start the Bot
updater.start_polling()
# Run the bot until the you presses Ctrl-C or the process receives SIGINT,
# SIGTERM or SIGABRT. This should be used most of the time, since
# start_polling() is non-blocking and will stop the bot gracefully.
updater.idle()
if __name__ == '__main__':
main()
所以,echo
函数就是这样做的。
让我们假设这个过程如下:
def do_something(text):
return text+" bla bla bla"
现在这个有效。但是,如果我想做其他事情,然后在一小时后写回用户,以防其他一些数据发生变化,该怎么办?
有没有办法在用户不必再次回写系统的情况下返回一些文本?就像把这个功能搁置一样?
因此,当用户写入系统时,交互开始,并且它可以存活最多1小时。我不想使用tell(userid,text)
功能。我有一些感觉,认为我是正确的工具。我对吗 ?对我来说它是如何工作的完全模糊。