如何使用python-telegram-bot在群聊中删除超过2天的消息?

时间:2019-03-23 07:47:55

标签: telegram python-telegram-bot

我想制作一个机器人来获取组中的所有消息(该组中只有2个人,并且该机器人),将其存储在文件中,然后删除每天2天以上的所有消息一定的时间。我可以成功获取所有邮件并将其存储在文件中,但是我不确定如何删除2天以上的邮件。

这是到目前为止的代码:

from telegram.ext import Updater, MessageHandler, Filters
import schedule
import time
from datetime import datetime

#schedule.clear()

#Created an event handler
updater = Updater(token='')

# add a new event handler
dispatcher = updater.dispatcher

def job1(bot, update):
    #print(update.message.message_id)
    #bot.get_updates()[-1].message.chat_id
    #print(update.message.text)
    #print(update.message.from_user['username'])
    message_text = update.message.text
    if update.message.from_user['username'] == 'myusername':
        #print('person1')
        name = 'person1'
    else:
        #print('person2')
        name = 'person2'
    line = name + ',' + message_text + '\n'
    #print(line)
    f = open("chat.csv", "a")
    f.write(line)

def job2():
    print('works')

schedule.every().day.at('00:00').do(job2)

dispatcher.add_handler(MessageHandler(Filters.text, job1))

# start polling
updater.start_polling()

while 1:
    schedule.run_pending()
    time.sleep(1)

# # lets the  program end in terminal using ctrl+c
updater.idle()

我希望程序删除job2函数中的旧消息,但不确定如何删除。它每天在预期的时间工作。 (还有任何使代码更好的建议吗?) 谢谢!

2 个答案:

答案 0 :(得分:0)

尝试通过存储带有日期的消息ID。 您可以使用python字典

答案 1 :(得分:0)

使用Telegram BOT API时,您不能删除超过2天的邮件。

A message can only be deleted if it was sent less than 48 hours ago.

删除超过2天的消息的唯一方法是使用TDLib(电报API)而不是电报BOT API。参见https://core.telegram.org/api