Ответы пользователя по тегу Python
  • Как отправить письмо на эл/почту?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    # Отправка электронного письма
    def send_email(message):
        msg_email = MIMEMultipart()
    
        msg_email['From'] = email_from
        msg_email['To'] = email_to
        msg_email['Subject'] = 'Тема'
    
        body = 'Текст сообщения'
    
        msg_email.attach(MIMEText(body, 'plain'))
    
        server = smtplib.SMTP_SSL('smtp.mail.ru:465')
        server.login(email_from, email_password)
        text = msg_email.as_string()
        server.sendmail(email_from, email_to, text)
        server.quit()
    Ответ написан
    Комментировать
  • Python, openpyxl, не сохраняет файл, как решить проблему?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    def xlsx(message):
        time.sleep(3)
    
        date = datetime.now()
        quantity = message
        doc = openpyxl.load_workbook(filename='table.xlsx')
        sheet = doc['test']
    
        rows = (
            (date, quantity),
        )
    
        for row in rows:
            sheet.append(row)
        doc.save('table.xlsx')


    нашёл в старом проекте, проверил - всё работает, записывается каждый вызов функции, при условии, что файл table.xlsx закрыт в момент вызова функции.

    5e89b29b1252b455487510.jpeg
    Ответ написан
    Комментировать
  • Как подключиться к удаленному серверу python(socket)?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    s = socket(AF_INET, SOCK_STREAM)
        try:
            s.settimeout(2)
            s.connect((hostname, port))
            s.sendall(packet)
            data = s.recv(1024)
            s.close()
            return data
        except Exception as e:
            return e
    Ответ написан
    Комментировать
  • Как установить vk_api.bot_longpoll?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
    
    vk_session = vk_api.VkApi(token=constant.token)
    vk = vk_session.get_api()
    longpoll = VkBotLongPoll(vk_session, constant.group_id)
    
    # Обработка событий ВК
    for event in longpoll.listen():
        # Начало беседы
        if event.obj.text == 'Начать':
    ...
    Ответ написан
    Комментировать
  • Как отправить сообщение по id?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    from pyrogram import Client
    
    app = Client(
        session_name="pyro",
        proxy=dict(
            hostname="",
            port=1080,
            username="",
            password=""),
        api_id='',
        api_hash='')
    
    app.start()
    app.send_message(chat_id=123, text='привет')
    app.stop()


    api_id и api_hash получаем тут
    Ответ написан
    Комментировать
  • Как сделать поиск по таблице с подключением к Active Directory для получения email пользователя и отправки ему значений этого пользователя?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    from ldap3 import Server, Connection, SUBTREE
    
    s = Server(ad_domain, use_ssl=True, port=636)  # Адрес домена, шифрование, порт
    c = Connection(s, ad_admin, ad_password)
    
    # Поиск учётной записи в домене (Active Directory) по фамилии или логину
    def search_ad(last='*', login='*'):
        c.bind()
        c.search('ou=Офис, dc=domain, dc=local',
                 '(&(objectCategory=Person)(sn={})(sAMAccountName={}))'.format(last, login), SUBTREE,
                 attributes=['sAMAccountName', 'givenName', 'sn', 'cn', 'whenCreated', 'lastLogon', 'pwdLastSet',
                             'msDS-UserPasswordExpiryTimeComputed', 'memberOf', 'ipPhone', 'lockoutTime',
                             'distinguishedName'])
        a = c.entries
        c.unbind()
        return a


    # Вывод информации учётной записи в домене (Active Directory)
    def change_ad(cn):
        c.bind()
        c.search('ou=Офис, dc=domain, dc=local', '(&(objectCategory=Person)(cn={}))'.format(cn), SUBTREE,
                 attributes=['sAMAccountName', 'givenName', 'sn', 'cn', 'whenCreated', 'lastLogon', 'pwdLastSet',
                             'msDS-UserPasswordExpiryTimeComputed', 'memberOf', 'ipPhone', 'lockoutTime'])
        a = c.entries
        for ad_user in c.entries:
            name = ad_user['givenName']
            last = ad_user['sn']
            login = ad_user['sAMAccountName']


    # Отправка электронного письма
    def send_email(message):
        msg_email = MIMEMultipart()
    
        msg_email['From'] = email_from
        msg_email['To'] = email_to
        msg_email['Subject'] = 'Тема'
    
        body = 'Текст сообщения'
    
        msg_email.attach(MIMEText(body, 'plain'))
    
        server = smtplib.SMTP_SSL('smtp.yandex.ru:465')
        server.login(email_from, email_password)
        text = msg_email.as_string()
        server.sendmail(email_from, email_to, text)
        server.quit()
    Ответ написан
    2 комментария
  • Возможно ли через inline отправить в чат команду?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    Ответ написан
    Комментировать
  • Ошибка, при установке модуля tesseract-ocr, как решить?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    раз

    два: pip install pytesseract pillow

    пример:
    from PIL import Image
    import pytesseract
    
    pytesseract.pytesseract.tesseract_cmd = r'C:\Users\Violet\AppData\Local\Tesseract-OCR\tesseract.exe'
    
    print(pytesseract.image_to_string(Image.open(r'img\driver_fr\777.jpg'), lang="rus"))
    Ответ написан
    1 комментарий
  • Почему бот не отправляет id стикера?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    stickers = ['CAADAgADGQADFkJrCiW-o11UT9X6FgQ', 'CAADAgADHQADFkJrCoaz3LxWR4WIFgQ', 'CAADAgADKgADFkJrCmgXzyFhnidgFgQ']
    
        # Стикеры
        elif call.data == 'sticker':
            bot.send_sticker(call.message.chat.id, random.choice(constant.stickers))
    Ответ написан
    Комментировать
  • Почему файл css не может найти картинку (flask)?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    <link rel="icon" type="image/png" href="/static/images/icons/favicon.ico"/>


    так у меня папка img тоже лежит в style

    тогда просто

    body {
      background-image: url(/img/bg.jpg) repeat;
    }
    Ответ написан
    Комментировать
  • Как корректно обрабатывать в RegexHandler id строки на русском языке?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    @bot.message_handler(regexp=".*(отмен(?:а|ить|ите) печат(?:ь|и))")


    вот так прекрасно работает
    Ответ написан
    Комментировать
  • Как получить доступ к json через модуль pytelegrambotapi для python?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    import json
    Ответ написан
    Комментировать
  • Как отправить файл от телеграм бота?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    uis_pdf = open('files/' + uis_login + '.pdf', 'rb')
    bot.send_document(message.chat.id, uis_pdf)
    uis_pdf.close()
    Ответ написан
    Комментировать
  • Как после callback заново ввести текст?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    elif call.data == 'no':
            get_text_messages(call.message)
    Ответ написан
    Комментировать
  • Как заставить телеграм бота ждать сообщения от пользователя и записывать его в переменную на питоне?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    сделайте по аналогии

    для передачи текста в другую функцию используйте bot.register_next_step_handler().
    например этот код сначала запросит домен, после ФИО должность и номер телефона, и в итоге создаст корпоративный email с указанными параметрами
    
    @bot.message_handler(commands=['emailcreate'])
    def email_create_request_domain(message):
        if message.text.lower() == 'отмена':
            bot.send_message(message.from_user.id, 'На нетъ и суда нетъ')
            return
        send = bot.send_message(message.chat.id, 'Зьдати емейлъ\nПочтовый ящикъ:\n'
                                                 'example.ru, example1.ru, example2.ru, example3.ru, example4.ru ')
        bot.register_next_step_handler(send, email_create_request_data)
    
    
    def email_create_request_data(message):
        global domain_uis
        domain_uis = message.text.lower()
        if message.text.lower() == 'отмена':
            bot.send_message(message.from_user.id, 'На нетъ и суда нетъ')
            return
        send = bot.send_message(message.chat.id, 'Введите: ФИО должность нумеръ')
        bot.register_next_step_handler(send, email_create)
    
    
    def email_create(message):
        first = message.text.split()[1]
        last = message.text.split()[0]
        middle = message.text.split()[2]
        phone = message.text.split()[4]
        position = message.text.split()[3]
    
        uis_login = create_nickname(first, last, middle, 'email_create')
        bot.send_message(message.chat.id, '✅ логинъ')
    
        uis_password = create_password()
        bot.send_message(message.chat.id, '✅ шифръ')
    
        id_yc = create_email(first, last, middle, phone, position, uis_password, uis_login, domain_uis)
        if 'Response' in str(id_yc):
            bot.send_message(message.chat.id, '❌ емейлъ' + '\n' + id_yc)
            return
        else:
            bot.send_message(message.chat.id, '✅ емейлъ')
            bot.send_message(message.chat.id, uis_login + '@' + domain_uis + '\n' + uis_password)
    Ответ написан
    1 комментарий
  • Как сделать так, чтобы при не соответствии условиям бот прекращал дальнейшую работу?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    # Ограничение доступа к боту по ID
    @bot.message_handler(func=lambda message: message.chat.id not in users)
    def some(message):
        bot.send_message(message.chat.id, 'Не дозволено общаться с незнакомцами')
    
    
    # Ограничение выполнение команды start
    @bot.message_handler(func=lambda message: message.chat.id not in users, commands=['start'])
    def some(message):
        bot.send_message(message.chat.id, 'Не дозволено')
    
    
    # Ограничение выполнение команд
    @bot.message_handler(func=lambda message: message.chat.id not in users_command,
                         commands=['command1', 'command2', 'command3', 'command4'])
    def some(message):
        bot.send_message(message.chat.id, 'Не дозволено')
    Ответ написан
    Комментировать
  • Как отредактировать сообщение телеграм?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    пример для изменения inline клавиатуры. (используется @bot.callback_query_handler)
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Выберите:',
                                  reply_markup=system_keyboard)
    Ответ написан
    Комментировать
  • Как получить текст в переменную из сообщения боту telegram на python?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    сам текст сообщения можно вытащить из message.text, для передачи этого текста в другую функцию используйте bot.register_next_step_handler().
    например этот код сначала запросит домен, после ФИО должность и номер телефона, и в итоге создаст корпоративный email с указанными параметрами

    @bot.message_handler(commands=['emailcreate'])
    def email_create_request_domain(message):
        if message.text.lower() == 'отмена':
            bot.send_message(message.from_user.id, 'На нетъ и суда нетъ')
            return
        send = bot.send_message(message.chat.id, 'Зьдати емейлъ\nПочтовый ящикъ:\n'
                                                 'example.ru, example1.ru, example2.ru, example3.ru, example4.ru ')
        bot.register_next_step_handler(send, email_create_request_data)
    
    
    def email_create_request_data(message):
        global domain_uis
        domain_uis = message.text.lower()
        if message.text.lower() == 'отмена':
            bot.send_message(message.from_user.id, 'На нетъ и суда нетъ')
            return
        send = bot.send_message(message.chat.id, 'Введите: ФИО должность нумеръ')
        bot.register_next_step_handler(send, email_create)
    
    
    def email_create(message):
        first = message.text.split()[1]
        last = message.text.split()[0]
        middle = message.text.split()[2]
        phone = message.text.split()[4]
        position = message.text.split()[3]
    
        uis_login = create_nickname(first, last, middle, 'email_create')
        bot.send_message(message.chat.id, '✅ логинъ')
    
        uis_password = create_password()
        bot.send_message(message.chat.id, '✅ шифръ')
    
        id_yc = create_email(first, last, middle, phone, position, uis_password, uis_login, domain_uis)
        if 'Response' in str(id_yc):
            bot.send_message(message.chat.id, '❌ емейлъ' + '\n' + id_yc)
            return
        else:
            bot.send_message(message.chat.id, '✅ емейлъ')
            bot.send_message(message.chat.id, uis_login + '@' + domain_uis + '\n' + uis_password)
    Ответ написан
    Комментировать
  • Как отредактировать сообщение используя bot.edit_message_text?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    для Inline
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text='Выберите:',
                                  reply_markup=service_keyboard)
    Ответ написан
    Комментировать
  • Как использовать telegram.ReplykeyboardMarkup?

    Danya_Violet
    @Danya_Violet
    Системный администратор
    Если вы про это
    5d666f17a8d52496414331.png
    то:
    @bot.message_handler(commands=['start'])
    def cmd_start(message):
        start_keyboard = types.InlineKeyboardMarkup()
        start_service = types.InlineKeyboardButton(text='Службы', callback_data='service')
        start_system = types.InlineKeyboardButton(text='Система', callback_data='system')
        start_check = types.InlineKeyboardButton(text='Чек', callback_data='check')
        start_other = types.InlineKeyboardButton(text='Другое', callback_data='other')
        start_keyboard.add(start_service, start_system)
        start_keyboard.add(start_check, start_other)
        bot.send_message(message.chat.id, '', reply_markup=start_keyboard)
    
        start = telebot.types.ReplyKeyboardMarkup(True, False)
        start.row('Wunderlist')
        start.row('Telegraph')
        start.row('Погода')
        start.row('Контакты')
        bot.send_message(message.from_user.id, 'Выбери сервис', reply_markup=start)
    Ответ написан
    Комментировать