python 我不希望电报机器人重复发送信息

5rgfhyps  于 2023-02-07  发布在  Python
关注(0)|答案(1)|浏览(150)

我在学Python!
我正在建立一个机器人,在电子商务搜索产品,机器人将始终发送一个消息,价格由我预定义!
机器人每5分钟进行一次新的搜索,但我不想在下一条消息中再次发送相同的产品,我做了一些研究,但没有找到任何符合我需要的。
对不起,我的英语不好!我希望你明白我的意思。

    • 代码:**
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')

我尝试了一些模块,如:但最终机器人还是发送了重复的消息。

mspsb9vt

mspsb9vt1#

我设法解决了我的问题,我会把解决方案留给任何人谁有类似的疑问在未来!
为了避免使用Python的Telegram机器人发送重复的消息,可以存储已经发送的消息的记录,并在发送新消息之前检查该记录。

import os
import pickle

sent_messages_file = "sent_messages.pickle"

if os.path.exists(sent_messages_file):
    with open(sent_messages_file, "rb") as f:
        sent_messages = pickle.load(f)
else:
    sent_messages = []

def send_message(mensagem):

    apiToken = 'XXXXXXXXXX'
    chatID = 'XXXXXXXX'
    bot = telebot.TeleBot(apiToken)
    bot.send_message(
        chat_id=chatID, text=message, parse_mode='HTML')
    sent_messages.append(message)
    with open(sent_messages_file, "wb") as f:
        pickle.dump(sent_messages, f)

在此代码中,使用pickle模块将sent_messages列表保存到文件中。在发送新消息之前,此代码检查sent_messages_file是否存在。如果存在,则此代码从该文件加载sent_messages列表。如果不存在,则此代码创建一个空的sent_messages列表。在发送消息之后,此代码将更新后的sent_messages列表保存到该文件中。
这样,当您再次运行代码时,它将从文件中加载sent_messages列表,并且只发送以前未发送过的新消息。

相关问题