Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (12)

Лучшие ответы пользователя

Все ответы (11)
  • Постоянно падает телеграмм бот, как решить?

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

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


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

    @del4pp
    На пайтоне есть библиотека imaplib, которая позволяет получать письма с вашего ящика через IMAP и парсить их . Ниже мой код который я создавал для себя для такой же задачи.

    def read(sender_of_interest=None):
        imap = imaplib.IMAP4_SSL("imap.gmail.com", 993)
        imap.login('Почта', 'пароль')
        imap.select('INBOX')
        if sender_of_interest:
            status, response = imap.uid('search', None, 'UNSEEN', 'FROM {0}'.format(sender_of_interest))
        else:
            status, response = imap.uid('search', None, 'UNSEEN')
        if status == 'OK':
            unread_msg_nums = response[0].split()
        else:
            unread_msg_nums = []
        data_list = []
        for e_id in unread_msg_nums:
            e_id = e_id.decode('utf-8')
            _, response = imap.uid('fetch', e_id, '(RFC822)')
            html = response[0][1].decode('utf-8')
            email_message = email.message_from_string(html)
            data_list.append(email_message.get_payload())
        for elem in data_list:
            clean_html(elem)


    а дальше все просто:
    if "ключевое слово" in массив_с_сообщениями[индекс сообщения]:
    ...то что надо сделать если ключевое слово найдено.

    ну и в цыкле понятное дело
    Ответ написан
    Комментировать
  • Как отправить фото через telebot?

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

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

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


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

    @del4pp
    img = open('путь к картинке', 'rb')
    bot.send_photo(id, photo=img, caption='подпись')
    img.close()
    Ответ написан
    1 комментарий
  • Как отправить данные при нажатии кнопки в телеграм-боте 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 комментариев

Лучшие вопросы пользователя

Все вопросы (31)