You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发Twitch开播桌面通知 如何避免同次开播重复推送通知

问题根因

notified是stream_notification函数的局部变量,每次调用函数都会被重新初始化为0,无法保留上一次调用的推送状态。同时原有逻辑缺少下播后重置状态的分支,就算状态能保留,主播下播后再次开播也无法触发新的通知。

修复方案

使用函数静态属性存储推送状态,函数多次调用也不会重置属性值,同时补充下播重置逻辑,改动最小可直接运行:

import time
# 你原有代码缺失导入逻辑,notification对应是win10toast库的实例,按需替换为你用的通知库即可
from win10toast import ToastNotifier
notification = ToastNotifier()

def streamer_data():
    # 原有获取主播数据的逻辑不变
    stream_data = stream.json();
    streaming_state = len(stream_data['data'])
    return streaming_state, streamer_name

def stream_notification(streaming_state,streamer_name):
    # 第一次调用函数时初始化静态属性存储推送状态,后续调用不会重置
    if not hasattr(stream_notification, 'notified'):
        stream_notification.notified = 0
    
    if streaming_state == 1:
        # 开播且未推送过才触发通知
        if stream_notification.notified == 0:
            notifyMe("Twitch", f"{streamer_name} 正在直播")
            stream_notification.notified = 1
    else:
        # 主播下播后重置状态,下次开播可以重新触发通知
        stream_notification.notified = 0
    time.sleep(5)

def notifyMe(title,message):
    notification.notify(
        title = title,
        message = message,
        app_icon = 'Clock_icon.ico',
        timeout = 5
    )

if __name__ == '__main__':
    while True:
        streaming_state,streamer_name = streamer_data()
        stream_notification(streaming_state,streamer_name)
可选优化

如果需要同时监控多个主播,可以把stream_notification.notified改为字典类型,键存储主播名称,值存储对应主播的推送状态,避免不同主播的状态互相干扰。

内容的提问来源于stack exchange,提问作者Hoprap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:06:02