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

Telegram电商商品查询Bot重复消息发送问题求助

解决Telegram Bot重复推送同一商品的问题

问题描述

我正在学习Python,开发了一款查询电商商品的Telegram Bot,会推送符合预设价格的商品信息,每5分钟执行一次新搜索。但目前Bot会重复推送同一商品,尝试过schedule、time模块后仍存在这个问题,寻求解决方法。

现有代码

def send_to_telegram(message):

    apiToken = 'xxxxx'
    chatID = '-xxxx'
    bot = telebot.TeleBot(apiToken)

    if placa and fabricante_1 in marca:
        bot.send_message(
            chat_id=chatID, text=f"<b>Modelo:</b> {marca} \n<b>Fabricante:</b> {fabricante_1}\n<b>Preço a vista:</b> R$ {valor_preco_avista} \n<b>Preço a prazo:</b> R$ {valor_preco_prazo} \n<b>Loja:</b> {loja} \n\n<b>Link Produto:</b> {url_completa}", parse_mode='HTML')

解决方案

核心思路是记录已推送过的商品唯一标识,每次推送前检查该商品是否已推送过,未推送才执行发送操作。

1. 选择唯一标识

商品的url_completa(商品链接)是天然的唯一标识,用它来区分不同商品即可;如果商品有官方SKU/唯一ID,用ID替代URL会更可靠(避免URL参数变化导致误判)。

2. 实现推送记录管理

用集合存储已推送的商品标识(集合查询效率远高于列表),如果需要程序重启后保留记录,可将集合持久化到文件中。

修改后的代码示例

# 初始化已推送商品链接集合,程序启动时加载历史记录
sent_items = set()
try:
    with open('sent_items.txt', 'r', encoding='utf-8') as f:
        # 读取每行链接并加入集合
        for line in f:
            sent_items.add(line.strip())
except FileNotFoundError:
    # 文件不存在则创建空集合
    pass

def send_to_telegram():
    apiToken = 'xxxxx'
    chatID = '-xxxx'
    bot = telebot.TeleBot(apiToken)

    # 先检查当前商品是否已推送
    if url_completa not in sent_items:
        if placa and fabricante_1 in marca:
            bot.send_message(
                chat_id=chatID, 
                text=f"<b>Modelo:</b> {marca} \n<b>Fabricante:</b> {fabricante_1}\n<b>Preço a vista:</b> R$ {valor_preco_avista} \n<b>Preço a prazo:</b> R$ {valor_preco_prazo} \n<b>Loja:</b> {loja} \n\n<b>Link Produto:</b> {url_completa}", 
                parse_mode='HTML'
            )
            # 推送成功后,将链接加入已推送集合
            sent_items.add(url_completa)
            # 写入文件持久化记录
            with open('sent_items.txt', 'a', encoding='utf-8') as f:
                f.write(url_completa + '\n')

补充说明

  • 原函数的message参数未被使用,可直接移除。
  • 定时任务逻辑(schedule/time模块)无需改动,只需确保每次搜索到商品后,先执行上述检查再推送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:00:53