Ответы пользователя по тегу Боты
  • Как отправить данные при нажатии кнопки в телеграм-боте python?

    @del4pp
    Потому что у вас в коде есть вечный цыкл (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()
    #---------------------------#


    и запустить функцию в потоке (Потоки)

    Код выполняеться сверху в низ, и без бот.полинга код останавливаеться на вечном цыкле, если используете бот.полинг - программа срабатывает на хендлер
    Ответ написан
    6 комментариев
  • Как правильно написать кнопочный бот в Телеграм на Python?

    @del4pp
    Как вариант
    if message.text == 'A':
    bot.register_next_step_hendler(message, функция1)
    elif message.text == 'B':
    bot.register_next_step_hendler(message, функция2)

    И т.д

    Ещё вы используете .lower() что приводит строку в нижний регистр, и потом сравнтваете с буквой верхнего регистра.
    Так делать не хорошо.
    Ответ написан
    Комментировать
  • Встроенная ссылка?

    @del4pp
    bot.send_message(message.chat.id, 'добавить закупкиэту?\n', parse_mode='html', disable_web_page_preview=True)
    Ответ написан
  • Как определить, что боту прислали файл?

    @del4pp
    Если хотите именно фото

    @bot.message_handler(content_types=["photo"])
    def photo_message(msg):
          *ваш код обработки фото *
    Ответ написан
    Комментировать
  • Постоянно падает телеграмм бот, как решить?

    @del4pp
    Попробуй в в конце вместо бот.полинг это

    if __name__ == '__main__':
        while True:
            try:
                bot.polling(none_stop=True)
            except Exception as e:
                time.sleep(3)
                print(e)


    Тогда даже когда он упадет - через 3 сек запуститься опять, а ошибку принт выведет в консоль
    Ответ написан
    3 комментария
  • Как отправить фото через telebot?

    @del4pp
    -1 элемент это последний (часто когда не знают длину списка и хотят взять последний - пишуть именно минус один),

    Отправить фото через telebot:

    photo = open('путь_к_фото', 'rb')
    bot.send_photo(chat_id, photo)


    Также у вас декоратор
    @bot.message_handler(content_types=['photo'])
    Он работает с фотографиями которые пользователи отправили боту.
    Ответ написан
    1 комментарий