import plugin from '../../../lib/plugins/plugin.js'
import Ledger from '../model/ledger.js'
import puppeteer from '../../../lib/puppeteer/puppeteer.js'
import fs from 'node:fs'

export class ledger extends plugin {
  constructor () {
    super({
      name: '札记查询',
      dsc: '原神体米游社札记原神查询',
      event: 'message',
      priority: 300,
      rule: [
        {
          reg: '^(#原石|#*札记)([0-9]|[一二两三四五六七八九十]+)*月*$',
          fnc: 'ledger'
        },
        {
          reg: '^(#签到|#*米游社(自动)*签到)$',
          fnc: 'sign'
        },
        {
          reg: '^#原石任务$',
          permission: 'master',
          fnc: 'ledgerTask'
        },
        {
          reg: '^#*(原石|札记)统计$',
          fnc: 'ledgerCount'
        },
        {
          reg: '^#*(去年|今年|\\d{4}年)(原石|札记)统计$',
          fnc: 'ledgerCountHistory'
        }
      ]
    })

    // this.set = gsCfg.getConfig('mys', 'set')

    // /** 定时任务 */
    // this.task = {
    //   cron: this.set.signTime,
    //   name: '米游社签到任务',
    //   fnc: () => this.signTask()
    // }
  }

  async init () {
    if (!fs.existsSync('./data/NoteData')) {
      fs.mkdirSync('./data/NoteData')
    }
  }

  /** #原石札记 */
  async ledger () {
    let data = await new Ledger(this.e).get()
    if (!data) return

    /** 生成图片 */
    let img = await puppeteer.screenshot('ledger', data)
    if (img) await this.reply(img)
  }

  /** 原石任务 */
  async ledgerTask () {
    let ledger = new Ledger(this.e)
    await ledger.ledgerTask(!!this?.e?.msg)
  }

  async ledgerCount () {
    let data = await new Ledger(this.e).ledgerCount()
    if (!data) return

    /** 生成图片 */
    let img = await puppeteer.screenshot('ledgerCount', data)
    if (img) await this.reply(img)
  }

  async ledgerCountHistory () {
    let data = await new Ledger(this.e).ledgerCountHistory()
    if (!data) return

    /** 生成图片 */
    let img = await puppeteer.screenshot('ledgerCount', data)
    if (img) await this.reply(img)
  }
}