python 如何结束infinity_polling()循环,或者如何替换它?

9udxz4iz  于 2022-12-02  发布在  Python
关注(0)|答案(1)|浏览(151)

现在,正如您所理解的,代码不会在bot.infinity_polling()行之外执行,但是代码必须询问电报bot是否有传入的消息,然后继续执行main.tochka()函数。如何实现它?可以说,是否有任何函数是一次性bot轮询的,而不是循环轮询的?

import telebot
import asyncio
import config
import main
import time

bot = telebot.TeleBot(config.TOKEN)

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'We work...')

@bot.message_handler(commands=['qwerty'])
def message(message):
    try:
        bot.send_document(message.chat.id, main.log_file())
    except ZeroDivisionError:
        bot.send_message(message.chat.id, 'Твой запрос по понятной тебе причине вызвал в коде ошибку ZeroDivisionError.\n'
                                          'Повтори свой запрос позже, примерно через час ;)')

def log_every_day():
    if main.timer() == '12:00' or '12:01' or '12:02' or '12:03' or '12:04' or \
            '12:05' or '12:06' or '12:07' or '12:08' or '12:09' or '12:10':
        bot.send_document(462809334, main.log_file())

try:
    while True:
        bot.infinity_polling()
        main.tochka()

except TimeoutError:
    print(f'\n==========================================='
          f'===========================================Похоже возникла ошибка подключения к сети.\n'
          f'===========================================Попробую переподкючиться через минуту.'
          f'\n===========================================\n')

    with open(f"log_{main.ti}.txt", 'a') as file:
        print(f'\n==========================================='
              f'===========================================Похоже возникла ошибка подключения к сети.\n'
              f'===========================================Попробую переподкючиться через минуту.'
              f'\n===========================================\n', file=file)
    time.sleep(60)

    while True:
        bot.infinity_polling()
        main.tochka()

我在网上搜索了三天想找到答案。

相关问题