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

Telethon中是否有方法可获取聊天消息并附带发送者姓名、日期和时间?

聊天消息关联发送者姓名与时间信息实现方案

通用逻辑

聊天消息的基础数据结构默认会关联用户标识、时间戳两个核心字段,你只需要在获取消息时同步做映射转换即可,无需额外开发复杂的同步逻辑:

  • 先确认你当前调用的消息查询接口/消息表返回的原始数据,是否包含send_user_id(发送者用户ID)、msg_timestamp(消息发送时间戳)两个字段,绝大多数商用IM服务、自研聊天系统都会默认携带这两个基础字段
  • 发送者姓名关联:提前维护用户ID与姓名的映射缓存,拿到消息的send_user_id后直接从缓存中匹配即可。如果需要实时获取最新昵称,优先做批量ID查询,不要单条消息循环查库,避免性能问题
  • 时间信息转换:直接将msg_timestamp按你需要的格式(如YYYY-MM-DD HH:mm:ss)做格式化转换即可,无需额外存储冗余时间字段

代码示例(Python 服务端场景)

# 初始化用户ID-姓名映射缓存,可在服务启动时生成、定期更新保证数据准确性
user_id_to_name = {
    "u_1001": "张三",
    "u_1002": "李四"
}

def assemble_complete_msg(raw_msg):
    # 从原始消息数据中提取基础字段
    msg_content = raw_msg.get("content")
    sender_uid = raw_msg.get("send_user_id")
    send_timestamp = raw_msg.get("msg_timestamp")

    # 关联发送者姓名
    sender_name = user_id_to_name.get(sender_uid, "未知用户")
    # 转换时间戳为可读时间格式,注意适配时间戳的秒/毫秒单位
    from datetime import datetime
    send_time = datetime.fromtimestamp(send_timestamp / 1000).strftime("%Y-%m-%d %H:%M:%S")

    # 返回组装后的完整消息结构体
    return {
        "content": msg_content,
        "sender_name": sender_name,
        "send_time": send_time
    }

前端页面抓取场景适配

如果你是从已渲染的聊天页面中抓取消息,直接通过父DOM节点关联查询即可:

  • 每条聊天消息的父级DOM容器下,一般会同时存在发送者昵称、消息内容、消息时间三类子节点,通过父节点选择器同时获取三类字段即可
  • 不要单独全局批量获取所有消息内容、所有昵称后按下标匹配,极易出现消息顺序错位的问题

注意事项

  • 时间戳转换时注意区分单位是秒还是毫秒,避免出现时间异常
  • 多端同步场景下优先使用服务端返回的时间戳,不要使用本地生成的时间,避免不同设备时间不一致导致的顺序错乱

内容的提问来源于stack exchange,提问作者Vedha Vikash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:54:03