• Как скомпилировать сложный проект python?

    @HardX
    JustLonelyDog, а модуль на самом то деле существует? Версию питона при разработке не менял?(установил себе 3.11, и пришлось все модули заново ставить под него)
    Про относительные пути, я имею ввиду c:\data\program => .\\program
  • Как скомпилировать сложный проект python?

    @HardX
    Попробуй auto-py-to-exe, не так давно попробовал, все скомпилировалось без ошибок. Ну и впринципе запустились приложение.
    Проверь ещё все пути, которые указываешь в скриптах, они все должны быть относительными.(у меня с этим была проблема)
  • Sqllite ерунда в ответе на запрос (дата/время)?

    @HardX Автор вопроса
    Владимир Коротенко, спасибо за наводку, придется прописать дополнительный фильтр через strptime....
  • Telegram bot есть ограничения?

    @HardX Автор вопроса
    Алексей Уколов, ну тогда это будет памятка для новичков, которые столкнутся с данной проблемой. Я лично очень долго искал эту информацию.
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Блин ну да, если такой запрос писать то все так и есть, я выше об этом писал, а мне нужно в цикле for ret in cursor.execute....
    Но т.к. цикл не выполнится ни разу если cursor пустой, то похож иначе никак
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Алан Гибизов, что-то не могу сообразить как посмотреть длину cursor.execute?
    Len ничего не дает
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Алан Гибизов, это интересно, не думал что возможно измерить длину курсора. Сейчас попробую, спасибо за наводку! Приношу извинения, изначально Вас неправильно понял
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Да, именно так и получается. Спасибо
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Алан Гибизов, Вопрос был конкретно про ЦИКЛ FOR RET IN CUR.EXECUTE, Цикл ничего не возвращает, а точнее и не происходит, по этому RET не существует и его размер измерить невозможно.
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Алан Гибизов, print(len(ret)) ничего не дает, я так понимаю переменная не существует

    если убрать цикл,
    ret = cur.execute('SELECT Photo FROM Collect_Foto_5 WHERE Address == ? AND Entrance_N == ?',(adress,entrance)).fetchall()
    print(ret)

    То ret = []

    Но меня интересует именно цикл
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    import sqlite3 as sq

    base=sq.connect('Some_base.db')
    cur=base.cursor()
    for ret in cur.execute('SELECT Photo FROM Collect_Foto_5 WHERE Address == ? AND Entrance_N == ?',(adress,entrance)).fetchall():

    конкретный кусок вытащил, посмотреть.

    Если в Collect_Foto_5 ничего нет, то как это отловить?
  • Что возвращает sql запрос, если поле пустое?

    @HardX Автор вопроса
    Длину чего? Не возвращается ж ничего, и переменная ret видимо не создаётся даже
  • Aiogram как ограничить число присылаемых фото?

    @HardX Автор вопроса
    В итоге использовал state.curent как переменную, и если state сменился,
    Только тогда счётчик фото обнуляю. Так все работает, и загружается именно первые n фотографий, и в state data добавляются photo file_id первых n фотографий
  • Aiogram как ограничить число присылаемых фото?

    @HardX Автор вопроса
    В state.data ничего писать нет желания, т.к в базу должен улетать state.data конкретного вида, и при изменении в нем, записи не произойдет. Много переписывать придется
  • Aiogram как ограничить число присылаемых фото?

    @HardX Автор вопроса
    Михаил Кростелев, с кнопкой не вариант, замедлит работу пользователя, фото шлются разом, перед отправкой пользователю и так бот пишет сколько шт. отправить, но человеческий фактор...
    Попробовал при переходе на следующий state, счётчик не обнулять , а n-m (где m число реально отправленных фото), вроде работает корректно, но теперь нужно думать как подчищать state.data
  • Есть ли какой-то способ прохода по заданным в переменной состояниям в AIOgramm Python?

    @HardX Автор вопроса
    class FSMAdmin(StatesGroup):
    adress = State()
    podiezd = State()
    photostate = [State() for stt in range(10)]
  • Есть ли какой-то способ прохода по заданным в переменной состояниям в AIOgramm Python?

    @HardX Автор вопроса
    Насколько я понял, photostates = [State() for i in range(10)] состояния вообще не создаются, по крайней мере через print(FSMAdmin.states) я вижу только address и podiezd как состояния
  • Есть ли какой-то способ прохода по заданным в переменной состояниям в AIOgramm Python?

    @HardX Автор вопроса
    Vindicar, последовательность формируется при запуске бота, для всех пользователей последовательность одна, меняется последовательность при перезапуске бота. (грубо - есть список нужных последовательностей, запустил бота, отработал, отключил бота)
  • Есть ли какой-то способ прохода по заданным в переменной состояниям в AIOgramm Python?

    @HardX Автор вопроса
    продолжение:

    #Ввод номера подьезда
    @dp.message_handler(content_types=['photo','text'],state=All_executions.podiezd)  
    async def podiezd_input(message: types.Message, state:FSMContext):
            if len(pod)>0:
                if message.content_type == 'text':
                    if message.text.isdigit() == True:
                            if int(message.text) in pod:
                                await All_executions.podiezd.set()
                                async with state.proxy() as data:
                                    data['podiezd']= message.text
                                    global pod_load
                                    pod_load=message.text
                                    await All_executions.next()
                                    await message.answer("Отлично, мы в подьезде № "+message.text+" \nПо адресу "+data['adress'])
                                    await message.answer('Сделайте '+str(kolfoto)+' фотографии:\n1.Фото объекта (общий вид на здание)')
                            elif message.text == '0':
                                await All_executions.previous()
                                keyboard = types.InlineKeyboardMarkup()
                                if len(adresses)>0:
                                    for j in range(len(adresses)):
                                        keyboard.add(types.InlineKeyboardButton(text=adresses[j],\
                                             callback_data=adresses[j])) #забиваем клавиатуру по списку из БД
                                    await message.answer('Доступные адреса:',reply_markup=keyboard) #вывод клавиатуры с адресами
                                    await All_executions.adress.set() #Запуск состояния ADRESS
                                    await message.answer('Выберите адрес: \
    (если адрес отсутствует, введите вручную)\nИли введите 0 чтобы выйти')
                                else:
                                    await message.answer('Нет доступных адресов\nВведите новый логин/пароль')
                            else:
                                await message.answer('нет такого подьезда, введите номер подьезда')
                    else:
                        await message.answer('Только цифры')
                elif message.content_type == 'photo':
                    await message.answer('Введите номер подьезда')
                    return
            else:
                await strt_bot(loginin, state)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[1])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['2.Неисправность выступающих конструкций: балконов,козырьков,эркеров,карнизов и т.п.','Введите № подьезда, в который пойдете или 0 чтобы ввести адрес заново','1']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[2])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['3.Повреждение целостности ступеней,перил,пандусов и дверей входной группы','1.Фото объекта (общий вид на здание)','2']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[3])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['4.Повреждение целостности/отсутствие светильников, лампочек на входной группе','2.Неисправность выступающих конструкций: балконов,козырьков,эркеров,карнизов и т.п.','3']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[4])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['5.Повреждение целостности/отсутствие светильников, лампочек в МОП','3.Повреждение целостности ступеней,перил,пандусов и дверей входной группы','4']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[5])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['6.Поверхности пола и стен в местах общего пользования подъездов','4.Повреждение целостности/отсутствие светильников, лампочек на входной группе','5']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[6])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['7.Неисправность конструкций внутренних стен, нарушение окрасочного покрытия стен, потолков подъезда','5.Повреждение целостности/отсутствие светильников, лампочек в МОП','6']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[7])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['8.Неисправности дверей в местах общего пользования (в т.ч. отсутствие пружин, доводчиков)','6.Поверхности пола и стен в местах общего пользования подъездов','7']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[8])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['9.Двери выхода на чердак/кровлю закрыты (отсутствует несанкционированный доступ на чердак/кровлю)','7.Неисправность конструкций внутренних стен, нарушение окрасочного покрытия стен, потолков подъезда','8']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[9])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['10.Акт осмотра выхода на чердак/кровлю на предмет отсутствия несанкционированного доступа составлен','8.Неисправности дверей в местах общего пользования (в т.ч. отсутствие пружин, доводчиков)','9']
        await loading_photo(state,message,ans_list)
    
    # Загрузка коллекции фото
    @dp.message_handler(content_types=['photo','text'], state=All_executions.photostate[10])   
    async def load_photo(message: types.Message, state:FSMContext):
        ans_list=['Все готово','9.Двери выхода на чердак/кровлю закрыты (отсутствует несанкционированный доступ на чердак/кровлю)','10']
        await loading_photo(state,message,ans_list)
    
    #Запуск Бота
    executor.start_polling(dp, skip_updates=True, on_startup=on_startup)