Потому что у вас в коде есть вечный цыкл (While True).
Если хотите чтобы работало и то и то - вам нужно создать функцию, в нее поместить код
###################################################
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()
#---------------------------#
и запустить функцию в потоке (
Потоки)
Код выполняеться сверху в низ, и без бот.полинга код останавливаеться на вечном цыкле, если используете бот.полинг - программа срабатывает на хендлер