我想获取当前聊天并观察当前时间以后的聊天
打印组中当前正在发送的所有消息并打印全部
但仅打印当前日期或时间
from telethon.sync import TelegramClient
import datetime
import pandas as pd
from openpyxl.workbook import Workbook
# import configparser
# config = configparser.ConfigParser()
# config.read("telethon.config")
api_id = 12345678
api_hash = 'b4272661f3crandom'
chats = ['crypto_king']
client = TelegramClient('none', api_id, api_hash)
df = pd.DataFrame()
#time 20 sec ago
df = pd.DataFrame()
for chat in chats:
with TelegramClient('test', api_id, api_hash) as client:
time_ago = datetime.datetime.now() - datetime.timedelta(seconds=1)
print(time_ago)
for message in client.iter_messages(chat,offset_date=time_ago,reverse=True):
print(message)
data = { "group" : chat, "sender" : message.sender_id, "text" : message.text, "date" : message.date}
print(message.text)
# temp_df = pd.DataFrame(data, index=[1])
# df = df.append(temp_df)
# df['date'] = df['date'].dt.tz_localize(None)
#
# df.to_excel("E:\\crypto\\data_{}.xlsx".format(datetime.date.today()), index=False)
1条答案
按热度按时间xxhby3vn1#
试试这个:
在这个更新的代码中,time_ago变量在代码开始时被初始化为当前日期和时间。外部while循环无限期运行,每10秒检查一次新消息(可以根据需要调整这个间隔)。
对于chats列表中的每个聊天,内部for循环从time_ago开始以相反的顺序迭代所有消息,对于处理的每个消息,time_ago更新为该消息的日期和时间,确保循环只检索代码开始运行后发送的消息。