如何用Python编写自扩展代码?优化Telegram机器人指令逻辑
优化后的可扩展Telegram机器人条件匹配实现
优化代码实现
# 存储条件与结果的映射,支持动态添加 condition_mapping = {} # 管理员密码(请根据实际需求修改为安全密码) ADMIN_PASSWORD = "your_admin_pass" def handle_user_trigger(): user_input = input("请输入触发指令:") # 遍历映射表匹配条件,输出对应结果 for cond, outc in condition_mapping.items(): if user_input == cond: print(outc) return print("未知触发指令") def add_condition_pair(): # 管理员权限验证 password = input("请输入管理员密码:") if password != ADMIN_PASSWORD: print("密码错误,无权限添加规则") return # 录入新的条件与结果 cond = input("请输入触发条件:") outc = input("请输入对应输出结果:") condition_mapping[cond] = outc print(f"规则添加成功:{cond} → {outc}") def main_loop(): while True: sys_command = input("系统指令(add/program/exit):") if sys_command == "add": add_condition_pair() elif sys_command == "program": handle_user_trigger() elif sys_command == "exit": print("程序已退出") break else: print("未知系统指令,请重新输入") if __name__ == "__main__": main_loop()
核心优化说明
- 动态映射存储:用字典
condition_mapping替代多个全局变量,无需重复定义setupN函数,可无限添加条件-结果对,扩展性拉满 - 统一匹配逻辑:
handle_user_trigger函数通过遍历字典完成条件匹配,新增规则后无需修改匹配代码,符合开闭原则 - 权限控制:添加规则前强制验证管理员密码,避免未授权操作
- 清晰的逻辑划分:将系统管理指令(添加/运行/退出)和用户触发指令分离,代码结构更清晰易懂
- 可读性提升:函数命名语义化,去掉冗余的全局变量,整体代码更整洁
注:如果需要支持更复杂的结果(比如多段文本、特殊格式内容),直接让管理员输入对应字符串即可,程序会原样输出;如果需要重启机器人后保留规则,可将字典内容写入本地文件或数据库实现持久化。
内容的提问来源于stack exchange,提问作者smbrine
相关产品推荐
相关产品推荐

