电报机器人的设计模式
Design pattern for telegram bot
我目前正在开发一个电报机器人,它将具有许多功能并且会非常复杂。我目前完成了机器人的一项功能,但代码已经难以管理。
例如,对话处理程序当前如下所示:
# BOT STATES
FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH = range(6)
# Callback data
ONE, TWO, THREE, FOUR, CANCEL = range(5)
conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', self.start)],
states={
FIRST: [
CallbackQueryHandler(
self.one, pattern='^' + str(ONE) + '$'),
CallbackQueryHandler(
self.cancel, pattern='^' + str(CANCEL) + '$'),
],
SECOND: [
CallbackQueryHandler(
self.two, pattern='^' + str(TWO) + '$'),
# extra handler here
CallbackQueryHandler(
self.five, pattern='^' + str(THREE) + '$')
],
THIRD: [
MessageHandler(Filters.text, self.three)
],
FIFTH: [
MessageHandler(Filters.text, self.six)
],
FOURTH: [
MessageHandler(Filters.text, self.four)
],
SIXTH: [
MessageHandler(Filters.text, self.seven)
]
},
fallbacks=[CommandHandler('cancel', self.cancel)]
)
随着机器人变得越来越复杂,我必须继续为机器人添加更多回调数据和更多状态。
我还必须继续向同一个 .py 文件添加更多函数以处理回调函数的使用:
def six(self, update, context):
update.message.reply_text("Enter name")
return SIXTH
有没有更好的方法来管理我的代码?或者我可以使用推荐的设计模式来更轻松地管理我的项目?
设计模式 "recipes" 旨在用于解决已知问题。
例如,如果你需要通知一个对象,当另一个对象改变时,你可以使用observer pattern.
在您的情况下,您似乎需要对架构进行一些修改,尝试确定可以使用设计模式抽象的点。
例如,如果您处于收到大量事件的情况,并且需要跟踪并对特定序列做出反应,也许值得考虑 state pattern or the strategy pattern。
总的来说,我们的想法是既要尝试识别已知模式,又要尝试对您的软件进行建模,以便您可以陷入已知情况,这可以通过设计模式解决。
我目前正在开发一个电报机器人,它将具有许多功能并且会非常复杂。我目前完成了机器人的一项功能,但代码已经难以管理。
例如,对话处理程序当前如下所示:
# BOT STATES
FIRST, SECOND, THIRD, FOURTH, FIFTH, SIXTH = range(6)
# Callback data
ONE, TWO, THREE, FOUR, CANCEL = range(5)
conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', self.start)],
states={
FIRST: [
CallbackQueryHandler(
self.one, pattern='^' + str(ONE) + '$'),
CallbackQueryHandler(
self.cancel, pattern='^' + str(CANCEL) + '$'),
],
SECOND: [
CallbackQueryHandler(
self.two, pattern='^' + str(TWO) + '$'),
# extra handler here
CallbackQueryHandler(
self.five, pattern='^' + str(THREE) + '$')
],
THIRD: [
MessageHandler(Filters.text, self.three)
],
FIFTH: [
MessageHandler(Filters.text, self.six)
],
FOURTH: [
MessageHandler(Filters.text, self.four)
],
SIXTH: [
MessageHandler(Filters.text, self.seven)
]
},
fallbacks=[CommandHandler('cancel', self.cancel)]
)
随着机器人变得越来越复杂,我必须继续为机器人添加更多回调数据和更多状态。
我还必须继续向同一个 .py 文件添加更多函数以处理回调函数的使用:
def six(self, update, context):
update.message.reply_text("Enter name")
return SIXTH
有没有更好的方法来管理我的代码?或者我可以使用推荐的设计模式来更轻松地管理我的项目?
设计模式 "recipes" 旨在用于解决已知问题。 例如,如果你需要通知一个对象,当另一个对象改变时,你可以使用observer pattern.
在您的情况下,您似乎需要对架构进行一些修改,尝试确定可以使用设计模式抽象的点。
例如,如果您处于收到大量事件的情况,并且需要跟踪并对特定序列做出反应,也许值得考虑 state pattern or the strategy pattern。
总的来说,我们的想法是既要尝试识别已知模式,又要尝试对您的软件进行建模,以便您可以陷入已知情况,这可以通过设计模式解决。