• Как вывести все элементы массива, если len не помогает?

    Судя по всему, массив в твоём примере это список элементов класса Lesson, который содержит атрибуты day, start, end, room... Если да, то один из вариантов:
    lessons_list = [Lesson(day=datetime.date(2023, 11, 23), start=datetime.time(8, 0), end=datetime.time(8, 40), room='304 - физика (н)', number=1, subject='Геометрия', assignments=[]), Lesson(day=da
    tetime.date(2023, 11, 23), start=datetime.time(8, 50), end=datetime.time(9, 30), room='104 - информатика (н)', number=2, subject='Информатика', assignments=[Assignment(id=88616187,
     comment='', type='Домашнее задание', content='п. 23 - читать, решить задачу', mark=None, is_duty=False, deadline=datetime.date(2023, 11, 23)), Assignment(id=0, comment='', type='С
    амостоятельная работа', content='Практическая работа по теме "Дискретизация звуковой информации"', mark=3, is_duty=False, deadline=datetime.date(2023, 11, 23))]), Lesson(day=dateti
    me.date(2023, 11, 23), start=datetime.time(9, 40), end=datetime.time(10, 20), room='206 - биология (н)', number=3, subject='Русский язык', assignments=[]), Lesson(day=datetime.date
    (2023, 11, 23), start=datetime.time(10, 30), end=datetime.time(11, 10), room='310 - математика (н)', number=4, subject='Алгебра и начала математического анализа', assignments=[Assi
    gnment(id=0, comment='', type='Самостоятельная работа', content='Иррациональные уравнения. Основные методы решения иррациональных уравнений', mark=2, is_duty=False, deadline=dateti
    me.date(2023, 11, 23))]), Lesson(day=datetime.date(2023, 11, 23), start=datetime.time(11, 30), end=datetime.time(12, 10), room='304 - физика (н)', number=5, subject='Физика', assig
    nments=[]), Lesson(day=datetime.date(2023, 11, 23), start=datetime.time(12, 30), end=datetime.time(13, 10), room='103 - хореография (н)', number=6, subject='Иностранный язык', assi
    gnments=[]), Lesson(day=datetime.date(2023, 11, 23), start=datetime.time(13, 20), end=datetime.time(14, 0), room='209 - история (н)', number=7, subject='Индивидуальный проект', ass
    ignments=[]), Lesson(day=datetime.date(2023, 11, 23), start=datetime.time(14, 10), end=datetime.time(14, 50), room='304 - физика (н)', number=8, subject='Проект "Россия - мои горизонты"', assignments=[])]
    
    for lesson in lessons_list:
        print(lesson.subject)


    Если это просто текст и самого класса Lesson у тебя нет, то тебе нужно работать с этим массивом, как со строкой (ответ уже писали выше). Либо же самому написать класс с такими же полями)
    Ответ написан
    1 комментарий
  • Не работает Ultra Key в Adobe Premiere Pro, как исправить?

    EntireMusic
    @EntireMusic Автор вопроса
    (:
    Всё удивительно просто - Ультра ключ не хотел работать с чёрным фоном. Зелёный удалил без проблем.
    Но если у вас будут проблемы, особенно при использовании внешнего монитора, пробуйте через Shift+Alt сбросить настройки, это должно помочь.
    Ответ написан
    Комментировать
  • Есть ли возможность получить ID юзеров, поставивших реакции в чате Telegram, с реализацией на Python?

    EntireMusic
    @EntireMusic Автор вопроса
    (:
    https://qna.habr.com/q/1249668 ответ с реализацией с помощью библиотеки Pyrogram
    Ответ написан
    Комментировать
  • Как использовать функцию GetMessageReactionsList с помощью юзербота Pyrogram?

    EntireMusic
    @EntireMusic Автор вопроса
    (:
    Благодаря хорошей документации сам нашёл и понял, как правильно пользоваться подобными функциями, может кому пригодится:
    from pyrogram import Client, filters
    from pyrogram.raw.functions.messages import GetMessageReactionsList
    
    @app.on_message(filters.command("get_react"))
    async def get_mess_reactions(client, message):
        mess_id, mess_chat = 12345678, "some_chat" #тут id нужного сообщения и чат (id / username)
        r_peer = await app.resolve_peer(mess_chat) #обязательно использовать этот метод для получения правильного пира
        print(await app.invoke(GetMessageReactionsList(peer=r_peer, id=mess_id, limit=-1))) #обязательно используем именованные параметры
    Ответ написан
    Комментировать
  • Как сделать уведомление в Aiogram?

    https://docs.aiogram.dev/en/latest/telegram/types/...
    await bot.answer_callback_query(callback_query_id=cmd.id, text="Уведомление", show_alert=True)

    либо
    await callback_query.answer("Уведомление", show_alert=True)
    Ответ написан
    4 комментария
  • Как проверять что введен русский язык?

    Решил написать свой вариант такой функции, чтобы продемонстрировать её несовершенство. Вариант с флагом и только русскими буквами делать не стал, сделал с процентами. Третья проверка не проходит, тк русских букв слишком мало в соотношении с другими, хотя текст по сути русский. Но это скорее исключение, в целом такая функция имеет место быть, но лучше перестраховаться от разных вариантов.

    import string
    
    def is_russian(text):
        alpha = "абвгдеёжзиклмнопрстуфхцчшщъыьэюя"
        new_text = text.translate(str.maketrans('', '', string.punctuation)).lower().replace(' ', '')
        
        rulet = 0
        for letter in new_text:
            if letter in alpha:
                rulet += 1
         
        # Если больше или равно 70%       
        if rulet/len(new_text) >= 0.7:
            return(True)
        else:
            return(False)
        
    
    good_text = "Какой-то текст, со знаками препинания, конечно же, sorry!"
    bad_text = "Some english text, isn't russian."
    secret = "Люблю Gucci"
    
    print(is_russian(good_text)) #вернёт True
    print(is_russian(bad_text)) #вернёт False
    print(is_russian(secret)) #вернёт False
    Ответ написан
    4 комментария
  • Как разделить строку по последнему указанному символу?

    s = r"С:\User\Users\Programs\program.py"
    print(s[:s.rindex("\\")+1])


    Для получения "чистой" строки, чтобы обратный слэш не использовался как экранирующий символ, использовал r-строку. А уже для поиска последнего индекса методом .rindex() использовал два слэша: один экранирующий, второй видит программа.

    Вывод сделал обычным срезом от начала до индекса последнего слэша+1, чтобы путь отображался включая его.
    Ответ написан
  • Как извлечь информацию из сайта?

    description в твоём случае это всё ещё список объектов супа. К ним можно/нужно применить метод text, чтобы получить именно текстовую составляющую.

    import requests
    from bs4 import BeautifulSoup
    
    url = "http://www.swhl.ru/page/1018390"
    r = requests.get(url)
    
    soup = BeautifulSoup(r.content, "lxml")
    description = soup.find_all("div", class_="page-text")
    
    for element in description:
        print(element.text)
    Ответ написан
  • Как отделить числа от букв в списке?

    lst = ['4', '10', '4', 'A', 'T']
    new_lst=[]
    
    for element in lst:
        if element.isdigit():
            new_lst.append(int(element))
        else:
            new_lst.append(element)


    С заменой в текущем списке:
    lst = ['4', '10', '4', 'A', 'T']
    
    for i in range(len(lst)):
        if lst[i].isdigit():
            lst[i] = int(lst[i])
            
    print(lst)
    Ответ написан
    4 комментария
  • Как в экселе найти номер заказа и забрать из него состав заказа?

    Искать по номеру можно так и выводить, используя срез:
    orders = [[1, "first", "order"], [2, "second", "order"], [3, "third", "order"], [4, "fourth", "order"]]
    
    order = int(input("Введите номер заказа: "))
    for line in orders:
        if line[0] == order:
            print(*line[1:])


    Обратите внимание, что перед этим, лучше сделать преведение типа номера заказа в строку, тк у вас в некоторых номерах заказов буквенные значения. Тогда и код будет выглядеть немного иначе.

    orders = [["1", "first", "order"], ["2", "second", "order"], ["3", "third", "order"], ["4", "fourth", "order"]] #первый элемент - строка
    
    order = input("Введите номер заказа: ") #не int
    for line in orders:
        if str(line[0]) == order: #если не преобразовывать список, можно здесь
            print(*line[1:])
    Ответ написан
    Комментировать
  • Как сделать автоматический перезапуск программы на python?

    import random
    
    from random import randint
    
    a = randint(1,5)
    while True:
        b = int(input("Веедите число от одного до пяти!"))
        if b == a:
            print("Число верное!")
            break
        else:
            print("Число неверное!")


    На забудь обернуть input в функцию int, а то никогда введенное число не будет верным, тк исходно input принимает строковое значение.
    Ответ написан
    1 комментарий
  • Как найти min и max в массиве в списке?

    dict = {
        "a": [131, 531],
        "b": [842, 612],
         "c": [516, 19]
    }
    
    float_nums = []
    for value in dict.values():
        for num in value:
            float_nums.append(float(num))
            
    a = min(float_nums)
    b = max(float_nums)
    a_index = []
    b_index = []
    
    for key, values in dict.items():
        if a in values:
            a_index.append(key)
            a_index.append(values.index(a))
        if b in values:
            b_index.append(key)
            b_index.append(values.index(b))
            
    print(a, *a_index)
    print(b, *b_index)
    Ответ написан
    4 комментария
  • Как сделать бот в Телеграм без приставки bot на конце?

    1. Авторизоваться с аккаунта, который будет использоваться в качестве бота тут: https://my.telegram.org/

    2. Создать там "приложение" и получить API id, API hash.

    3. Написать бота на библиотеке, поддерживающей Telegram client API, например Pyrogram
    (я пользуюсь им) https://docs.pyrogram.org/ или Telethon https://docs.telethon.dev/en/stable/ .
    Ответ написан
    2 комментария
  • Как посмотреть ID старых сообщений на телеграмм канале?

    Можно спарсить историю чата и собрать из неё нужную информацию, если нужен айди старого сообщения. Делал это на библиотеках Telethon и Pyrogram. НО учти, что для этого нужен уже не бот, а юзер (юзербот). Так же эти варианты подойдут и для автопостинга с других каналов через "хендлер".

    Мне больше понравилась реализация на Pyrogram. И там очень хорошая понятная документация, есть примеры.
    Ответ написан
    Комментировать
  • Как отделить дату от даты и сделать его прописью?

    from datetime import datetime #импортируем нужное
    
    created = ...   #дата регистрации, взятая откуда-то ранее
    you_with_us = (datetime.now() - regdate).strftime(%d)
    #вычитаем из нынешней даты дату регистрации, форматируем, оставляя только дни
    Ответ написан
    2 комментария
  • Ошибка в боте, который отправляет комментарии.Что делать?

    Во первых не светите свой ID и Hash на форумах, это как логин и пароль от аккаунта)

    Ошибка у вас из-за того, что в цикле переменная msg это и есть сообщение чата. Нужно сделать так:
    print(f”Пропускаем уже обработанное message _id={msg.id}”)


    Для отладки в следующий раз можете делать вывод переменной в консоль, чтобы понять какие там есть поля и как к ним обращаться.
    Ответ написан
    Комментировать
  • Как в Telegram сделать бота, который будет отправлять сообщения подписчику после его вступления в канал?

    Возможно вы имеете в виду Чат? Если да, то схема такая:
    1. Создаём бота
    2. Добавляем в чат
    Работа кода:
    3. Ловим служебное сообщение о новом пользователе
    4. Выполняем необходимые действия.

    Это всё работает внутри чата, тк:
    1. Служебные сообщения присутствуют только в чате.
    2. Бот не может писать пользователю в личные сообщения первым. Только отвечать в чате.

    Код зависит от библиотеки.
    Ответ написан
    Комментировать
  • Pyrogram bot: как отправить фото по айди?

    EntireMusic
    @EntireMusic Автор вопроса
    (:
    Всем большое спасибо за подсказки, особенно User . Проблема была как раз в фильтре. Нужно было искать photo и photo.file_id.
    Универсальный вариант - скачивать и отправлять фото, т.к. пересылка не будет работать из закрытых чатов. Вот такую функцию по-быстрому сообразил для загрузки фото.
    async def dl_last_photo(target):    #передаём в функцию ID или Username чата
        async for msg in app.get_chat_history(target, limit = 50, offset_id = -1):    #ищем в истории с конца, обрабатываем 50 сообщений
            if msg.photo:    #если есть фото
                print(msg.photo.file_id)    #в консоль выводим ID - не обязательно
                await app.download_media(msg.photo) #скачиваем фото из сообщения в стандартный каталог (папка_бота/downloads)


    По аналогии можно фильтровать и другие типы файлов. Так же можно менять папку, куда скачивается файл. И если вы уверены, что чат открыт и разрешена пересылка - можно и сразу переслать фото по ID куда нужно.
    Ответ написан
    Комментировать
  • Пишу тг бота для отправки комментариев на pyrogram. Выдаёт ошибку,что делать?

    В такой каше сложно разобраться. Но если я правильно понимаю, ты пытаешься проверить несуществующий атрибут:
    Выдаёт ошибку: if (msg.from_user is None and msg.forward_from_chat.id == public.id):
    AttributeError: ‘NoneType’ object has no attribute ‘I’d’

    Из твоего кода:
    if (msg.from_user is None) # если сообщение не имеет автора
    # и это репост из паблика (проверка по id)


    Это так не работает. Если нет автора, то такого атрибута нет вообще, эта часть не работает. Вот тебе пример на Pyrogram как из сообщения вытащить ID.
    any_sender_id = message.from_user.id if message.from_user else message.sender_chat.id #вытаскиваем ID
    if any_sender_id == public.id: #проверяем что это нужный паблик
        #дальше твоя логика

    Если сообщение "from_user", значит принимает его ID. Иначе - принимает ID чата/канала.

    этот же код чуть понятнее:
    any_sender_id = None    #объявляем переменную для хранения ID
    if message.from_user:    #если у нас есть параметр from_user
        any_sender_id = message.from_user.id    #присваеваем ID юзера
    else:    #иначе
        any_sender_id = message.sender_chat.id    #присваеваем ID канала или чата
    
    if any_sender_id == public.id:    #проверяем что это нужный паблик
        #дальше твоя логика
    Ответ написан
    Комментировать