Python Telegrambot 每次重新启动机器人时都需要 /start

问题描述 投票:0回答:1

我使用 python-telegram-bot 库创建了一个机器人,用户能够浏览状态,但是当出现错误时,我需要重新启动机器人,当我重新启动机器人时,用户需要再次输入 /start 以便与机器人进行通信,而不是这样,有没有一种方法可以让用户从用户之前在机器人中的任何状态继续?

python python-telegram-bot
1个回答
0
投票

除了CommandHandler之外,通过在entry_points中添加MessageHandler,您可以检查用户之前是否曾在您的程序中,并且可以重定向注册用户,而无需键入/start

async def check_user_state(update: Update, context:ContextTypes):
    if user_exists:
        return MENU_EXE
    elif user_exists_is_not_active:
        return NONEACTIVE
    else:
        return START

为特定状态定义附加消息处理程序

def main():
    app = Application.builder().token(Token).build()
    conv_handler = ConversationHandler(
        entry_points=[
            MessageHandler(None, check_user_state),
            CommandHandler("start", start_command)
        ],
© www.soinside.com 2019 - 2024. All rights reserved.