私信功能
2026/2/11大约 4 分钟
私信功能
所有账号类型(学生、教师、家长)都支持私信功能,可以查看和发送私信消息。
获取私信列表
获取当前账号的私信消息列表,支持分页查询。
方法定义
def get_personal_messages(
page_index: int = 1,
page_size: int = 10000
) -> PersonalMessageList参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
page_index | int | 1 | 页码,从 1 开始 |
page_size | int | 10000 | 每页大小 |
返回值
返回 PersonalMessageList 对象,包含以下信息:
PersonalMessageList 属性
| 属性 | 类型 | 描述 |
|---|---|---|
messages | ExtendedList[PersonalMessage] | 消息列表 |
page_info | MessagePageInfo | 分页信息 |
total_count | int | 消息总数 |
方法:
get_unread_messages()- 获取未读消息列表get_messages_by_sender(sender_id)- 获取指定发送者的消息列表
PersonalMessage 属性
| 属性 | 类型 | 描述 |
|---|---|---|
id | int | 消息 ID |
content | str | 消息内容 |
create_time | int | 创建时间(毫秒时间戳) |
update_time | int | 更新时间(毫秒时间戳) |
send_user_id | str | 发送者用户 ID |
sender | MessageUser | 发送者信息 |
subscriber | str | 订阅者 ID |
subscriber_name | str | 订阅者名称 |
is_delete | bool | 是否删除 |
is_top | bool | 是否置顶 |
view_count | int | 查看次数 |
like_count | int | 点赞数 |
comment_count | int | 评论数 |
方法:
get_create_datetime()- 获取创建时间的 datetime 对象get_update_datetime()- 获取更新时间的 datetime 对象
示例代码
基础用法
from zhixuewang import login_cookie
# 登录账号(学生/教师/家长都可以)
account = login_cookie(cookies)
# 获取私信列表
message_list = account.get_personal_messages()
# 打印消息总数
print(f"共有 {message_list.total_count} 条私信")
# 遍历所有消息
for msg in message_list.messages:
print(f"来自: {msg.sender.user_name}")
print(f"内容: {msg.content}")
print(f"时间: {msg.get_create_datetime()}")
print(f"已读: {'是' if msg.view_count > 0 else '否'}")
print("---")按发送者筛选消息
# 获取私信列表
message_list = account.get_personal_messages()
# 获取特定用户的所有消息
sender_id = "user_123456"
messages_from_user = message_list.get_messages_by_sender(sender_id)
print(f"来自该用户的消息共 {len(messages_from_user)} 条")
for msg in messages_from_user:
print(f"{msg.get_create_datetime()}: {msg.content}")分页查询
# 获取第一页,每页 10 条
page1 = account.get_personal_messages(page_index=1, page_size=10)
print(f"当前第 {page1.page_info.current_page} 页")
print(f"共 {page1.page_info.total_page} 页")
print(f"总消息数: {page1.total_count}")
# 获取下一页
if page1.page_info.next_page <= page1.page_info.total_page:
page2 = account.get_personal_messages(
page_index=page1.page_info.next_page,
page_size=10
)查看消息详情
from datetime import datetime
message_list = account.get_personal_messages()
for msg in message_list.messages:
# 基本信息
print(f"消息 ID: {msg.id}")
print(f"发送者: {msg.sender.user_name} ({msg.sender.role})")
print(f"内容: {msg.content}")
# 时间信息
create_time = msg.get_create_datetime()
print(f"发送时间: {create_time.strftime('%Y-%m-%d %H:%M:%S')}")
# 状态信息
print(f"是否置顶: {msg.is_top}")
print(f"查看次数: {msg.view_count}")
print(f"点赞数: {msg.like_count}")
print(f"评论数: {msg.comment_count}")
print("=" * 50)返回示例
共有 15 条私信
来自: 张老师
内容: 请注意完成本周作业
时间: 2026-02-10 14:30:25
已读: 是
---
来自: 李同学
内容: 你好,能帮我解答一个问题吗?
时间: 2026-02-11 09:15:10
已读: 否
---发送私信
向指定用户发送私信消息。
方法定义
def send_personal_message(receiver_id: str, content: str) -> bool参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
receiver_id | str | - | 接收者用户 ID |
content | str | - | 消息内容 |
返回值
返回 bool,发送成功返回 True,失败返回 False。
示例代码
发送单条消息
from zhixuewang import login_cookie
# 登录账号
account = login_cookie(cookies)
# 发送私信
receiver_id = "user_123456"
content = "你好,请问这道题怎么做?"
success = account.send_personal_message(receiver_id, content)
if success:
print("消息发送成功!")
else:
print("消息发送失败!")批量发送消息
# 要发送的用户列表
receivers = ["user_001", "user_002", "user_003"]
content = "提醒:明天的考试请准时参加"
# 批量发送
for receiver_id in receivers:
success = account.send_personal_message(receiver_id, content)
if success:
print(f"✓ 发送给 {receiver_id} 成功")
else:
print(f"✗ 发送给 {receiver_id} 失败")回复消息
# 获取消息列表
message_list = account.get_personal_messages()
# 获取未读消息
unread_messages = message_list.get_unread_messages()
# 回复第一条未读消息
if unread_messages:
first_msg = unread_messages[0]
sender_id = first_msg.send_user_id
reply_content = f"收到你的消息:{first_msg.content}。我会尽快处理。"
success = account.send_personal_message(sender_id, reply_content)
if success:
print("回复发送成功")给老师发消息
# 学生给老师发消息请教问题
teacher_id = "teacher_123456"
question = """
老师您好,
关于今天数学课上的第5题,我有些疑问:
1. 为什么要先化简?
2. 最后一步的结论是怎么得出的?
谢谢老师!
"""
success = account.send_personal_message(teacher_id, question)
if success:
print("问题已发送给老师")返回示例
消息发送成功!
✓ 发送给 user_001 成功
✓ 发送给 user_002 成功
✓ 发送给 user_003 成功相关类型定义
完整的类型定义请参考 类型定义 文档中的"消息相关数据类"部分。