Задать вопрос
  • Как правильно встроить FSM в телеграм бот на библиотеке telebot?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    1. storage - объявили, но не используете, надо:
    bot = telebot.TeleBot('TOKEN', state_storage=storage)

    2. Состояние не меняете.
    3. В интернете логичнее всего смотреть примеры в репе создателей: custom_states.
    4. Код:
    import telebot
    from telebot import types
    from telebot.states import State, StatesGroup
    from telebot.states.sync.context import StateContext
    from telebot.states.sync.middleware import StateMiddleware
    from telebot.storage import StateMemoryStorage
    from telebot.types import ReplyParameters
    
    
    storage = StateMemoryStorage()
    bot = telebot.TeleBot('TOKEN', state_storage=storage, use_class_middlewares=True)
    
    class MyStates(StatesGroup):
        START = State()
        US = State()
        SUP = State()
    
    
    @bot.message_handler(commands=["start"])
    def start(message: types.Message, state: StateContext):
        state.set(MyStates.START)
        bot.send_message(
            message.chat.id,
            f'Привет, {message.from_user.first_name}!\n/sup - оформить подписку\n/us - информация о нас',
            reply_parameters=ReplyParameters(message_id=message.message_id),
        )
    
    @bot.message_handler(commands=["us"])
    def us(message: types.Message, state: StateContext):
        state.set(MyStates.US)
        bot.send_message(
            message.chat.id,
            'Информация о нас',
            reply_parameters=ReplyParameters(message_id=message.message_id),
        )
    
    @bot.message_handler(commands=["sup"])
    def sup(message: types.Message, state: StateContext):
        state.set(MyStates.SUP)
        bot.send_message(
            message.chat.id,
            'Оформить подписку',
            reply_parameters=ReplyParameters(message_id=message.message_id),
        )
    
    
    if __name__ == '__main__':
        print('start')
        bot.setup_middleware(StateMiddleware(bot))
        bot.infinity_polling()
    Ответ написан
    Комментировать
  • Как разобраться в задании лабораторной работы?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    По-моему все просто. А 1 bool опечатка с вероятностью 99%

    Если N положительное число, вам нужно создать одномерный массив размера N, заполненный случайными значениями типа данных M
    1. 6 int означает, что нужно создать массив размера 6, заполненный случайными целыми числами.
    2. 3 bool означает, что нужно создать массив размера 3, заполненный случайными булевыми значениями (True или False).
    3. 4 float означает, что нужно создать массив размера 4, заполненный случайными числами с плавающей точкой.

    Если N меньше -2, вам нужно создать квадратную матрицу размера ∣N∣×∣N∣, где ∣N∣ — это абсолютное значение. Матрица должна быть заполнена нулями, за исключением границ, которые должны быть заполнены случайными значениями типа данных M
    1. -3 int означает, что нужно создать матрицу размера 3x3, заполненную нулями, с границами, заполненными случайными целыми числами.
    2. -10 float означает, что нужно создать матрицу размера 10x10, заполненную нулями, с границами, заполненными случайными числами с плавающей точкой.

    Если N находится в диапазоне от -2 до 0 (включительно), вам нужно вывести сообщение об ошибке.
    Ответ написан
    1 комментарий