如何使用 python-telegram-bot 删除群聊中超过 2 天的消息?
How to delete messages older than 2 days in a group chat using 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 函数中删除旧消息,但不确定如何操作。它每天都在预期的时间工作。
(还有什么建议可以使代码更好?)
谢谢!
尝试将消息 ID 与日期一起存储。
你可以使用 python 字典
使用 Telegram BOT API 时,您无法删除超过 2 天的消息。
A message can only be deleted if it was sent less than 48 hours ago.
删除超过 2 天的消息的唯一方法是使用 TDLib,Telegram API 而不是 Telegram BOT API。参见 https://core.telegram.org/api
我想制作一个机器人来获取群组中的所有消息(我的群组中只有 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 函数中删除旧消息,但不确定如何操作。它每天都在预期的时间工作。 (还有什么建议可以使代码更好?) 谢谢!
尝试将消息 ID 与日期一起存储。 你可以使用 python 字典
使用 Telegram BOT API 时,您无法删除超过 2 天的消息。
A message can only be deleted if it was sent less than 48 hours ago.
删除超过 2 天的消息的唯一方法是使用 TDLib,Telegram API 而不是 Telegram BOT API。参见 https://core.telegram.org/api