• Проблемы с машинным состоянием aiogram?

    i229194964
    @i229194964
    Веб разработчик
    Проблема заключается в том, что при вызове функции support она не переходит к следующему состоянию support_user.subject. Это можно сделать с помощью метода next() объекта state в функции поддержки.
    async def support(message: types.Message, state: FSMContext):
        await message.answer('Введите тему обращения')
        await state.set_state(support_user.subject)  # установить состояние subject
    
    
    async def support_subject(message: types.Message, state: FSMContext):
        await state.update_data(subject=message.text)
        await message.answer('Введите номер заказа')
        await support_user.next()  # переход на следующее состояние

    В support_subject, await support_user.next() также должен быть заменен на await state.set_state(support_user.number_order) для перехода к следующему состоянию.

    Функция support_number_order также должна установить состояние с помощью await state.reset_state() и await state.finish().

    Кроме того, при регистрации обработчика сообщений не забудьте передать объект состояния в функцию support.
    dp.register_message_handler(support, state=support_user.subject)
    Ответ написан
    Комментировать
  • Как создать язык программирования?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как создать свой язык программирования?

    Точно так же, как и любую другую программу: сначала спроектировать, а потом реализовать.

    Без другого языка программирования! Полностью с нуля.

    В самом низу находится машинный код. Выглядит примерно вот так:
    08 04 83 fa 08 04 83 fb 08 04 83 fd 08 04 84 00
    У каждого процессора есть свой набор инструкций, которые кодируются машинным кодом. Открываем справочник и пишем нужный код для нужной ОС/железа. Ничего сложного, правда же? =)

    Ведь как-то создали первый ЯП.

    Достаточно почитать историю появления первых ЭВМ. Они представляли из себя набор переключателей отдельных битов, которые позже эволюционировали в перфокарты, которые в свою очередь представляли из себя прообраз современных исполняемых файлов. С увеличением количества доступных команд, усложнением техники и появлением накопителей программы так же становились все сложнее и сложнее: поэтому решили упростить запись и придумали первый ассемблер. Дальнейшее развитие привело к появлению первого ЯП высокого уровня и далее более высокие уровни абстракции, используя которые сегодня пишутся все программы.

    Так что в вашем случае вам надо пройти весь этот путь самостоятельно. Примерно так:
    1. На машинном коде реализовать минимальный ассемблер
    2. Используя свой минимальный ассемблер реализовать простейший компилятор этого ассемблера
    3. Расширить компилятор ассемблера до стандартного набора инструкций
    4. На ассемблере реализовать транслятор и компилятор ЯП высокого уровня
    5. Реализовать необходимый набор инструкций для написания компилятора этого же ЯП
    6. Написать этот самый компилятор своего ЯП на нём же и далее уже скомпилировать первую самостоятельную версию своего ЯП без использования других ЯП
    Ответ написан
    3 комментария
  • Как создать язык программирования?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    практически все ЯП написаны на с.
    Даже gcc компилируется сначала на старой версии и создается бутстрап, а потом он компилирует новые фичи.

    Хотите сложностей? Создайте бутстрап на ассемблере, который соберет компилятор вашего языка или бутстрап для дальнейшей сборки.
    Вот кстати пример https://habr.com/ru/post/133780/
    Ответ написан
  • Как отобразить кнопки в столбик в aiogram?

    kbb = [
           [
               types.KeyboardButton("Button1")
           ],
    [
               types.KeyboardButton("Button2")
    
           ],
    [
               types.KeyboardButton("Button3")
    
           ],
    [
               types.KeyboardButton("Button4")
    
           ],
       ]
    Ответ написан
    Комментировать
  • Как записать ответ от пользователя в ТГ боте в переменную?

    @DMITRY1234455
    если я правильно понял, то вот ответ

    @bot.message_handler(commands=['add'])
    def send_welcome(message):
        age = message.text
        bot.reply_to(message, f"Вам {age} лет")
    Ответ написан
    Комментировать
  • Как сделать так чтобы пользователь мог создавать новый ключ в словаре?

    @mladenez
    k = input('Хотите создать новый ключ?')
    dictionary = {}
    if k == 'Да':
        key = input('Введите ключ: ')
        value = input('Введите значение: ')
        dictionary[key] = value
    else:
        print('Конец!')
    
    print(dictionary)
    Ответ написан
    1 комментарий
  • Как записать в переменную значение из словаря?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    from itertools import cycle
    
    for k,v in cycle(LIC.items()):
        tgb = v
    Ответ написан
    2 комментария
  • Как в момент задержки выполнять другую часть кода?

    Vindicar
    @Vindicar
    RTFM!
    Зависит от того, что имеется ввиду под "в момент задержки".
    "Вместо задержки"? Т.е. второй код выоплняется, когда начинается задержка, и останавливается по её окончанию? Тогда выполняй код вместо вызова time.sleep()
    Нужно выполнять вторую часть кода независимо, но только тогда, когда первая часть кода не работает? Так работают асинхронные приложения, читай про них. Их сложнее понять, но проще синхронизировать, т.е. избегать столкновений между двумя частями кода.
    Нужно выполнять вторую часть кода абсолютно независимо от первой, чтобы там первая ни делала? Это уже в сторону многопоточности. Она проще в понимании, но сложнее, если обеим частям кода нужен доступ в одни и те же переменные.
    Ответ написан
    Комментировать
  • Как сделать постинг на канал?

    WhiteMarlin
    @WhiteMarlin
    def step_opis(message):
        chat_id = message.chat.id
        opis = message.text
        msg = bot.send_message(message.chat.id, text="Ваша заявка в описании")
        bot.register_next_step_handler(msg, start)
        fank = f'Тема заявки {tema} Описание заявки {op}'
        bot.send_message(@username_channel, fank)


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

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Не надо внутри функции объявлять другую функцию! Это делают в некоторых специфических случаях (например, создание нового декоратора), но чаще всего это категорически неправильно и никаких задач не решает. В том числе и в этом случае никак это не поможет.

    Что касается задачи, то это типичный FSM https://github.com/eternnoir/pyTelegramBotAPI/blob...

    Использовать одну глобальную переменную тут бессмысленно, так как с ботом взаимодействует много пользователей, и у каждого должно быть своё значение. А не одно на всех.
    Ответ написан
    3 комментария
  • Как записать ответ от пользователя в ТГ боте в переменную?

    @twistfire92
    Python backend developer
    Если вы пользуетесь библиотекой PyTelegramBotApi (telebot), то вам надо гуглить register_next_step_handler
    Если aiogram - гуглите FSM

    На этом ресурсе очень много вопросов и ответов по использованию и первого и второго
    Ответ написан
    Комментировать