如何停止和重启电报机器人

How to stop and restart telegram bot

我在电报群里有一个翻译机器人。它翻译组中每个成员键入的所有消息。

但有时上传大量文本会很烦人,所以我想暂停一段时间,然后输入一些命令重新开始,例如

/开始 /结束

你觉得有可能吗?我想要一些提示

text=update.message.text.lower()

def handler(update, context):
if "/start" in text:
    try:
        if text_src==lang_type[0]: 
            a = 'ko : ' + translator.translate(user_text, dest=lang_type[0]).text + '\n' + 'en : ' + translator.translate(user_text, dest=lang_type[1]).text + '\n' + 'es : ' +translator.translate(user_text, dest=lang_type[2]).text
            telegram.Bot(TelegramToken).send_message(user_id, reply_to_message_id=update.message.message_id, text=a) 
            # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text) 
            # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text) 

        elif text_src==lang_type[1]:
            b = 'en : ' + translator.translate(user_text, dest=lang_type[1]).text + '\n' + 'ko : ' + translator.translate(user_text, dest=lang_type[0]).text + '\n' + 'es : ' + translator.translate(user_text, dest=lang_type[2]).text
            telegram.Bot(TelegramToken).send_message(user_id, reply_to_message_id=update.message.message_id, text=b)
            # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text) 
            # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text)

        elif text_src==lang_type[2]: 
            c = 'es : ' + translator.translate(user_text, dest=lang_type[2]).text + '\n' + 'ko : ' + translator.translate(user_text, dest=lang_type[0]).text + '\n' + 'en : ' + translator.translate(user_text, dest=lang_type[1]).text
            telegram.Bot(TelegramToken).send_message(user_id, reply_to_message_id=update.message.message_id, text=c)
            # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[1]).text)
            # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text)

    except:
        pass

if "/end" in text:
    pass

我认为这行不通,实际上行不通。如果您修复一些问题,我将不胜感激

干杯!

您可以使用全局变量来控制何时可以翻译以及何时不能翻译 - 即 paused。并使用消息 /start 将其设置为 False,并使用 /end 将其设置为 True.

未测试代码 - 我不确定模块是否在一个线程中全部运行
(多处理需要将其保存在文件或数据库中)。

代码还需要检查用户 ID,因此只有管理员可以执行此操作。

paused = False  # created outside functions 

def handler(update, context):
    global paused   # inform function to use external variable instead of local variable
    
    text = update.message.text.lower().strip()
    
    if text == '/start':
        paused = False
        return 

    if text == '/end':
        paused = True
        return        
        
    if not paused:
        try:
            if text_src==lang_type[0]: 
                a = 'ko : ' + translator.translate(user_text, dest=lang_type[0]).text + '\n' + 'en : ' + translator.translate(user_text, dest=lang_type[1]).text + '\n' + 'es : ' +translator.translate(user_text, dest=lang_type[2]).text
                telegram.Bot(TelegramToken).send_message(user_id, reply_to_message_id=update.message.message_id, text=a) 
                # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text) 
                # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text) 
    
            elif text_src==lang_type[1]:
                b = 'en : ' + translator.translate(user_text, dest=lang_type[1]).text + '\n' + 'ko : ' + translator.translate(user_text, dest=lang_type[0]).text + '\n' + 'es : ' + translator.translate(user_text, dest=lang_type[2]).text
                telegram.Bot(TelegramToken).send_message(user_id, reply_to_message_id=update.message.message_id, text=b)
                # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text) 
                # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text)
    
            elif text_src==lang_type[2]: 
                c = 'es : ' + translator.translate(user_text, dest=lang_type[2]).text + '\n' + 'ko : ' + translator.translate(user_text, dest=lang_type[0]).text + '\n' + 'en : ' + translator.translate(user_text, dest=lang_type[1]).text
                telegram.Bot(TelegramToken).send_message(user_id, reply_to_message_id=update.message.message_id, text=c)
                # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[1]).text)
                # telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text)
    
        except Exception as ex:
            print('Exception:', ex)