Параллельная работа bot.polling совместно с другой функцией

Всем привет! У меня имеется код который отправляет данные через телеграм-бота в группу телеграм, используя API-ключ

import OpenOPC
import time
import requests
###################################################
react_temp = int(input("Введите температуру слоя реактора (целое число): "))
r_tmp_lim = int(input("Введите допустимое отклонение температур реактора (+- x градусов, целое число): "))
###################################################
def send_telegram(text: str):
    token = "1854430581:AAFupZdsev5kfmwKDLe9OPdwan210gX0p4o"
    url = "https://api.telegram.org/bot"
    channel_id = "@newOilPlant"
    url += token
    method = url + "/sendMessage"

    r = requests.post(method, data={
         "chat_id": channel_id,
         "text": text
          })
    if r.status_code != 200:
        raise Exception("post_text error")
###################################################
opc = OpenOPC.client()
servers = opc.servers()
opc.connect("Owen.OPCNet.DA.1")
print("Удачное подключение к " + servers[0])
#--------------------------------------------------------------------------------------------------------#
tagsValue = [];
# Тр-ра Верх
tagsValue.append(opc.list("COM4.TRM_202(adr=104)T_слой_Ср_р-ра.Оперативные параметры")[3])

while True:
    print("-----------------------------------------------------------------------------------------")
    try:
        ############################################################
        # Проверка температур слоя реактора
        val = opc.read(tagsValue, update=1, include_error=True)
        if int(val[0][1]) > (react_temp + r_tmp_lim) or int(val[1][1]) > (react_temp + r_tmp_lim) or int(val[2][1]) > (react_temp + r_tmp_lim):
            try:
                #print("here")
                send_telegram("Слой реактора перегрет до {0:.2f} {1:.2f} {2:.2f} С".format(val[0][1], val[1][1], val[2][1]))
            except:
                print("Включите VPN (test 1)")
        if int(val[0][1]) < (react_temp - r_tmp_lim) or int(val[1][1]) < (react_temp - r_tmp_lim) or int(val[2][1]) < (react_temp - r_tmp_lim):
    except:
        print("error read item")
    time.sleep(20)
opc.close()
#---------------------------#

Этот код уже использует бота. Я хотел сделать так, чтобы при вызове из бота команды /get_data появлялась кнопка (код ниже) и я мог отправить в диалог пользователя с ботом данные из основного скрипта (который находится выше). Получается так, что у меня либо код снизу, либо код сверху.

import telebot
token = "1203397890:AAF3Z53lbtmCWkXlsxJl4fXRj6Dtcv6TEc0"

bot = telebot.TeleBot(token)

@bot.message_handler(commands=['start'])
def start_message(message):
    keyboard = telebot.types.ReplyKeyboardMarkup(True)
    bot.send_message(message.chat.id, 'Привет!', reply_markup=keyboard)

@bot.message_handler(commands=['get_data'])
def get_data(message):
    markup = telebot.types.InlineKeyboardMarkup()
    markup.add(telebot.types.InlineKeyboardButton(text='Получить данные', callback_data=3))
    bot.send_message(message.chat.id, text="Что вы хотите сделать?", reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
    #bot.answer_callback_query(callback_query_id=call.id, text='Спасибо за честный ответ!')
    answer = ''
    if call.data == '3':
        answer = '...Тут будут данные...'
    bot.send_message(call.message.chat.id, answer)

bot.polling()

Если я добавляю bot.polling() у меня работает только диалог с ботом, если я убираю bot.polling(), то у меня работает основной код, но не работает бот. Как решить данную проблему?


Ответы (0 шт):