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

如何用Session与JSON文件连接Telegram(Pyrogram)?解决SQLite报错

问题解决:sqlite3.OperationalError: no such column: number

核心错误原因

这个错误是因为你的.session会话文件是用旧版本Pyrogram生成的,新版本Pyrogram的会话数据库结构发生了变化,导致读取时找不到对应的number字段。

修复步骤

  • 删除当前的.session文件,让Pyrogram重新生成适配当前版本的新会话数据库。
  • 重新运行脚本,按照提示完成手机号验证,完成账号授权流程。

代码中的其他问题修正

你的代码存在未定义变量、参数错误等问题,修正后的完整代码如下:

import asyncio
from pyrogram import Client
import json

# 加载会话配置
with open('session.json', 'r') as sessiondatafile:
    session_data = json.load(sessiondatafile)

# 自定义目标聊天ID、消息内容和视频笔记路径
TARGET_CHAT_ID = "目标聊天ID或用户名(如@test_chat或123456789)"
MESSAGE_TEXT = "要发送的文本消息内容"
VIDEO_NOTE_FILE = "视频笔记文件路径(如./circle_video.mp4)"

async def main():
    async with Client(
        name=session_data['session_file'],
        api_id=session_data["app_id"],
        api_hash=session_data["app_hash"],
        app_version=session_data["app_version"],
        device_model=session_data["device"],
        system_version=session_data["system_version"],  # 修正原代码中错误赋值为app_version的问题
        lang_code=session_data['lang_code'],
        phone_number=session_data['phone']
    ) as app:
        # 发送视频笔记(若不需要可删除此段)
        if VIDEO_NOTE_FILE:
            await app.send_video_note(chat_id=TARGET_CHAT_ID, video_note=VIDEO_NOTE_FILE)
        # 发送文本消息
        await app.send_message(chat_id=TARGET_CHAT_ID, text=MESSAGE_TEXT)

if __name__ == "__main__":
    asyncio.run(main())

额外注意事项

  • 确保session.json中的system_version字段值正确,原代码错误将其设置为app_version。
  • 视频笔记文件需符合Telegram要求:圆形比例、时长不超过60秒,格式支持MP4等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:34:52