Python实现机器人勿扰模式 控制playsound通知音播放
机器人请勿打扰模式实现修复方案
核心修复点
- 修正赋值错误:所有给
dont_disturb赋值的位置把比较运算符==替换为赋值运算符=,==仅用于值相等判断,不能用来修改变量值 - 修正分支缩进:两个指令判断的
if逻辑为平级关系,移除错误的嵌套缩进 - 新增状态判断:消息打印完成后先校验
dont_disturb状态,仅在通知开启状态下触发音效播放 - 补全停止逻辑:收到关闭通知指令时,终止正在播放的提示音,同时修正原代码里的拼写错误、字符串断行问题
- 采用非阻塞模式加载音效,避免播放逻辑卡住主程序,同时支持随时中断播放
可直接运行的修复后代码
from playsound import playsound # 状态初始化:0=通知开启,1=请勿打扰模式(通知关闭) dont_disturb = 0 current_play_obj = None # 保留原有彩色消息打印逻辑 print(Fore.CYAN + "[", current_time, "]",Fore.WHITE + "[", nickname, "]", Fore.WHITE + content, Fore.CYAN + "[", title, "(", chatName, ")", "]") # 仅非请勿打扰状态播放通知音 if not dont_disturb: # block=False 为非阻塞播放,不卡主流程,同时返回播放对象支持后续停止 current_play_obj = playsound('notification.mp3', block=False) # 关闭通知指令分支 if content.lower().startswith("disable notifications"): dont_disturb = 1 # 停掉正在播放的提示音 if current_play_obj is not None: current_play_obj.stop() current_play_obj = None sub_client.send_message( message="Sound notifications were successfully deactivated.", chatId=chatId, replyTo=id ) # 开启通知指令分支(和上一个分支平级,不要嵌套) if content.lower().startswith("activate notifications"): dont_disturb = 0 sub_client.send_message( message="Sound notifications were successfully activated.", chatId=chatId, replyTo=id )
补充说明
如果你使用的
playsound版本较高,存在非阻塞模式失效、无法调用stop()方法的问题,可以替换为pygame.mixer做音频播放控制,兼容性和稳定性会更好。
内容的提问来源于stack exchange,提问作者Moxiess
相关产品推荐
相关产品推荐

