1

i am using pytransitions for first time and faced this problem, i am trying to do some states and test it

from transitions import Machine


class TelegramBot(object):
    states = ['asleep',
              'wait_for_size',
              'size_selected'
              'wait_for_payment',
              'payment_selected',
              'wait_for_confirmation',
              'confirmed']
    transitions = [
        {'trigger': 'wait_for_size', 'source': 'asleep', 'dest': 'size_selected'},
        {'trigger': 'wait_for_payment', 'source': 'size_selected', 'dest': 'payment_selected'},
        {'trigger': 'wait_for_confirmation', 'source': 'payment_selected', 'dest': 'confirmed'},
        {'trigger': 'asleep', 'source': 'confirmed', 'dest': 'asleep'}
    ]

    def __init__(self, name):
        self.name = name

        self.pizza_orders = 0

        self.machine = Machine(model=self,
                               states=TelegramBot.states,
                               initial='asleep')

        self.machine.add_transition(trigger='wait_for_size',
                                    source='asleep',
                                    dest='size_selected')

        self.machine.add_transition(trigger='wait_for_payment',
                                    source='size_selected',
                                    dest='payment_selected')

        self.machine.add_transition(trigger='wait_for_confirmation',
                                    source='payment_selected',
                                    dest='confirmed')

        self.machine.add_transition(trigger='confirmed',
                                    source='wait_for_confirmation',
                                    dest='asleep')

    def update_orders(self):
        self.pizza_orders += 1


tgBot = TelegramBot('KVINT_TEST')
print(tgBot.state)
tgBot.wait_for_size()
print(tgBot.state)

i am trying to change states by my self and got this error: ValueError: State 'size_selected' is not a registered state.

i followed up by the documentation sorry might be silly question

  • your code lacks a comma in the state list right behind ‘size_selected’. Is that just some copy/paste error or literally your code? – aleneum Nov 25 '21 at 21:23

0 Answers0