问题标签 [pytransitions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
224 浏览

python - 具有有限状态机的电报机器人

我正在开发一个带有 FSM 的电报机器人。它应该是用于订购披萨的聊天机器人。对话应该是这样的:

  • 你想要什么样的披萨?大或小?
  • 伟大的
  • 你将如何付款?
  • 用现金
  • 你想要一个大披萨,现金付款吗?
  • 是的
  • 谢谢你的订单

我有这个代码:

僵尸软件

而这个有限状态机的代码。我用过pytransitions/transitions

FSM.py

但问题是它只是贯穿所有内容,而不是等待用户的回答。只需发送所有的questin。

ps如果写错了,我很抱歉这是我的第一个问题。

0 投票
1 回答
9 浏览

pytransitions - AsyncGraphMachine 与异步 on_enter 回调一起使用

我的问题其实很简单,但是我对pytransition代码并不精通,无法自己找到答案:

是否可以仅将 AsyncGraphMachine 与 async on_enter 回调一起使用。

在文档中:https ://github.com/pytransitions/transitions#-using-async-callbacks 指出:

如果您使用的是 Python 3.7 或更高版本,则可以使用 AsyncMachine 处理异步回调。如果愿意,您可以混合使用同步和异步回调,但这可能会产生不希望的副作用。请注意,需要等待事件,并且事件循环也必须由您处理。

我正在使用 python > 3.7,我无法让我的样本工作:

实际错误是:

但是,根据文档本身,on_enter 类型的函数是回调:https ://github.com/pytransitions/transitions#state-callbacks

所以我想知道这里发生了什么。

预先感谢您的帮助

编辑:好的,问题甚至可能出现在我什至不会考虑的地方:

这是有效的,但是这是失败的:

看起来转换中的普通状态与异步机器不兼容,您应该改用“from transitions.extensions.asyncio import AsyncState”

0 投票
0 回答
5 浏览

pytransitions - 如何实现重试逻辑?

我正在尝试使用 pytransitions 从初始化状态实现重传逻辑。总结就是在init状态期间如果对方1秒后没有响应就重发数据包。这与我在这里看到的非常相似:https ://github.com/pytransitions/transitions/pull/461

我尝试了这个补丁,即使我看到发生超时/失败,我的回调也只是第一次被调用。对于 before/after 和 on_enter/exit 也是如此。无论我尝试了什么,我都无法再次进行重新传输。有任何想法吗?