fix sr公告推送转发消息无法获取e.bot (#165)
This commit is contained in:
		
							parent
							
								
									86b2b7d60a
								
							
						
					
					
						commit
						765719533f
					
				| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
import plugin from '../../../lib/plugins/plugin.js'
 | 
					import plugin from '../../../lib/plugins/plugin.js'
 | 
				
			||||||
import MysNews from '../model/mysNews.js'
 | 
					import MysNews from '../model/mysNews.js'
 | 
				
			||||||
import srNews from '../model/srmysNews.js'
 | 
					import MysSrNews from '../model/mysSrNews.js'
 | 
				
			||||||
import fs from 'node:fs'
 | 
					import fs from 'node:fs'
 | 
				
			||||||
import lodash from 'lodash'
 | 
					import lodash from 'lodash'
 | 
				
			||||||
import gsCfg from '../model/gsCfg.js'
 | 
					import gsCfg from '../model/gsCfg.js'
 | 
				
			||||||
| 
						 | 
					@ -25,16 +25,16 @@ export class mysNews extends plugin {
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          reg: '^(#*铁道(公告|资讯|活动)|#*星铁(公告|资讯|活动)|#星穹公告|#星穹资讯|#星穹活动)[0-9]*$',
 | 
					          reg: '^(#*铁道(公告|资讯|活动)|#*星铁(公告|资讯|活动)|#星穹公告|#星穹资讯|#星穹活动)[0-9]*$',
 | 
				
			||||||
          fnc: 'srnews'
 | 
					          fnc: 'srNews'
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          reg: '^#*(开启|关闭)(铁道|星铁|星穹)(公告|资讯)推送$',
 | 
					          reg: '^#*(开启|关闭)(铁道|星铁|星穹)(公告|资讯)推送$',
 | 
				
			||||||
          fnc: 'srsetPush'
 | 
					          fnc: 'srSetPush'
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          reg: '^#推送(铁道|星铁|星穹)(公告|资讯)$',
 | 
					          reg: '^#推送(铁道|星铁|星穹)(公告|资讯)$',
 | 
				
			||||||
          permission: 'master',
 | 
					          permission: 'master',
 | 
				
			||||||
          fnc: 'srmysNewsTask'
 | 
					          fnc: 'srMysNewsTask'
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          reg: '(.*)(bbs.mihoyo.com|miyoushe.com)/ys(.*)/article(.*)',
 | 
					          reg: '(.*)(bbs.mihoyo.com|miyoushe.com)/ys(.*)/article(.*)',
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,7 @@ export class mysNews extends plugin {
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        cron: gsCfg.getConfig('mys', 'pushNews').pushTime,
 | 
					        cron: gsCfg.getConfig('mys', 'pushNews').pushTime,
 | 
				
			||||||
        name: '崩坏星穹铁道公告推送任务',
 | 
					        name: '崩坏星穹铁道公告推送任务',
 | 
				
			||||||
        fnc: () => this.srmysNewsTask(),
 | 
					        fnc: () => this.srMysNewsTask(),
 | 
				
			||||||
        log: false
 | 
					        log: false
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -88,8 +88,8 @@ export class mysNews extends plugin {
 | 
				
			||||||
    await this.reply(data)
 | 
					    await this.reply(data)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async srnews () {
 | 
					  async srNews () {
 | 
				
			||||||
    let data = await new srNews(this.e).getNews()
 | 
					    let data = await new MysSrNews(this.e).getNews()
 | 
				
			||||||
    if (!data) return
 | 
					    if (!data) return
 | 
				
			||||||
    await this.reply(data)
 | 
					    await this.reply(data)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -99,8 +99,8 @@ export class mysNews extends plugin {
 | 
				
			||||||
    await mysNews.mysNewsTask()
 | 
					    await mysNews.mysNewsTask()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async srmysNewsTask () {
 | 
					  async srMysNewsTask () {
 | 
				
			||||||
    let mysNews = new srNews(this.e)
 | 
					    let mysNews = new MysSrNews(this.e)
 | 
				
			||||||
    await mysNews.mysNewsTask()
 | 
					    await mysNews.mysNewsTask()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -123,7 +123,7 @@ export class mysNews extends plugin {
 | 
				
			||||||
    await this.reply(data)
 | 
					    await this.reply(data)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async srsetPush () {
 | 
					  async srSetPush () {
 | 
				
			||||||
    if (!this.e.isGroup) {
 | 
					    if (!this.e.isGroup) {
 | 
				
			||||||
      await this.reply('推送请在群聊中设置')
 | 
					      await this.reply('推送请在群聊中设置')
 | 
				
			||||||
      return
 | 
					      return
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,10 +5,9 @@ import puppeteer from '../../../lib/puppeteer/puppeteer.js'
 | 
				
			||||||
import common from '../../../lib/common/common.js'
 | 
					import common from '../../../lib/common/common.js'
 | 
				
			||||||
import gsCfg from '../model/gsCfg.js'
 | 
					import gsCfg from '../model/gsCfg.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const _path = process.cwd()
 | 
					 | 
				
			||||||
let emoticon
 | 
					let emoticon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class MysNews extends base {
 | 
					export default class MysSrNews extends base {
 | 
				
			||||||
  constructor (e) {
 | 
					  constructor (e) {
 | 
				
			||||||
    super(e)
 | 
					    super(e)
 | 
				
			||||||
    this.model = 'mysNews'
 | 
					    this.model = 'mysNews'
 | 
				
			||||||
| 
						 | 
					@ -245,6 +244,15 @@ export default class MysNews extends base {
 | 
				
			||||||
    let sended = await redis.get(`${this.key}${groupId}:${postId}`)
 | 
					    let sended = await redis.get(`${this.key}${groupId}:${postId}`)
 | 
				
			||||||
    if (sended) return
 | 
					    if (sended) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // TODO: 暂时处理,后续待更好的解决方案 (定时任务无法获取e.bot)
 | 
				
			||||||
 | 
					    this.e.bot = Bot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 判断是否存在群关系
 | 
				
			||||||
 | 
					    if (!this.e.bot.gl.get(Number(groupId))) {
 | 
				
			||||||
 | 
					      logger.mark(`[崩坏星穹铁道${typeName}推送] 群${groupId}未关联`)
 | 
				
			||||||
 | 
					      return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!this[postId]) {
 | 
					    if (!this[postId]) {
 | 
				
			||||||
      const param = await this.newsDetail(postId)
 | 
					      const param = await this.newsDetail(postId)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -269,6 +277,8 @@ export default class MysNews extends base {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    redis.set(`${this.key}${groupId}:${postId}`, '1', { EX: 3600 * 10 })
 | 
					    redis.set(`${this.key}${groupId}:${postId}`, '1', { EX: 3600 * 10 })
 | 
				
			||||||
 | 
					    // 随机延迟10-90秒
 | 
				
			||||||
 | 
					    await common.sleep(lodash.random(10, 90) * 1000)
 | 
				
			||||||
    await this.e.group.sendMsg(tmp)
 | 
					    await this.e.group.sendMsg(tmp)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue