Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/mcv_rss/__init__.py

104 lines
4.5 KiB
Python
Raw Normal View History

2021-02-01 15:13:11 +00:00
import asyncio
2021-08-07 07:56:48 +00:00
import json
import os
2021-02-01 15:13:11 +00:00
import traceback
2021-08-07 07:56:48 +00:00
from core.elements import FetchTarget
from core.loader.decorator import command
from core.logger import Logger
2021-08-07 07:56:48 +00:00
from core.scheduler import Scheduler
2021-08-19 12:17:48 +00:00
from core.utils import get_url, PrivateAssets
from database import BotDBUtil
2021-03-21 08:14:28 +00:00
2021-04-10 14:41:19 +00:00
def getfileversions(path):
2021-04-08 12:23:38 +00:00
if not os.path.exists(path):
a = open(path, 'a')
a.close()
w = open(path, 'r+')
2021-02-01 15:13:11 +00:00
s = w.read().split('\n')
w.close()
return s
@command('mcv_rss', autorun=True)
2021-08-07 07:56:48 +00:00
async def mcv_rss(bot: FetchTarget):
2021-08-07 03:37:17 +00:00
@Scheduler.scheduled_job('interval', seconds=30)
async def java_main():
url = 'http://launchermeta.mojang.com/mc/game/version_manifest.json'
2021-02-01 15:13:11 +00:00
try:
2021-08-19 12:17:48 +00:00
version_file = os.path.abspath(f'{PrivateAssets.path}/mcversion.txt')
Logger.info('Checking mcv...')
2021-04-10 14:41:19 +00:00
verlist = getfileversions(version_file)
file = json.loads(await get_url(url))
2021-02-01 15:13:11 +00:00
release = file['latest']['release']
snapshot = file['latest']['snapshot']
if release not in verlist:
Logger.info(f'huh, we find {release}.')
get_target_id = BotDBUtil.Module.get_enabled_this('mcv_rss')
for x in get_target_id:
fetch = bot.fetch_target(x)
if fetch:
try:
await fetch.sendMessage('启动器已更新' + file['latest']['release'] + '正式版。')
await asyncio.sleep(0.5)
except Exception:
traceback.print_exc()
2021-04-10 14:41:19 +00:00
addversion = open(version_file, 'a')
2021-02-01 15:13:11 +00:00
addversion.write('\n' + release)
addversion.close()
2021-04-10 14:41:19 +00:00
verlist = getfileversions(version_file)
2021-02-01 15:13:11 +00:00
if snapshot not in verlist:
Logger.info(f'huh, we find {snapshot}.')
get_target_id = BotDBUtil.Module.get_enabled_this('mcv_rss')
for x in get_target_id:
fetch = bot.fetch_target(x)
if fetch:
try:
await fetch.sendMessage('启动器已更新' + file['latest']['snapshot'] + '快照。')
await asyncio.sleep(0.5)
except Exception:
traceback.print_exc()
2021-08-19 12:17:48 +00:00
addversion = open(version_file, 'a')
2021-02-01 15:13:11 +00:00
addversion.write('\n' + snapshot)
addversion.close()
Logger.info('mcv checked.')
2021-02-01 15:13:11 +00:00
except Exception:
traceback.print_exc()
2021-04-10 14:41:19 +00:00
2021-08-07 07:56:48 +00:00
@command('mcv_jira_rss', autorun=True)
async def mcv_jira_rss(bot: FetchTarget):
@Scheduler.scheduled_job('interval', seconds=30)
2021-08-19 12:17:48 +00:00
async def jira():
urls = {'Java': {'url': 'https://bugs.mojang.com/rest/api/2/project/10400/versions', 'display': 'Java版'},
'Bedrock': {'url': 'https://bugs.mojang.com/rest/api/2/project/10200/versions', 'display': '基岩版'},
'Minecraft Dungeons': {'url': 'https://bugs.mojang.com/rest/api/2/project/11901/versions',
'display': 'Minecraft Dungeons'}}
for url in urls:
2021-08-07 03:37:17 +00:00
try:
2021-08-19 12:17:48 +00:00
version_file = os.path.abspath(f'{PrivateAssets.path}/mcjira_{url}.txt')
Logger.info(f'Checking Jira mcv {url}...')
2021-08-07 03:37:17 +00:00
verlist = getfileversions(version_file)
2021-08-19 12:17:48 +00:00
file = json.loads(await get_url(urls[url]['url']))
2021-08-07 07:56:48 +00:00
releases = []
2021-08-07 03:37:17 +00:00
for v in file:
if not v['archived']:
2021-08-07 07:56:48 +00:00
releases.append(v['name'])
for release in releases:
if release not in verlist:
Logger.info(f'huh, we find {release}.')
verlist.append(release)
2021-08-07 03:37:17 +00:00
get_target_id = BotDBUtil.Module.get_enabled_this('mcv_jira_rss')
2021-08-07 07:56:48 +00:00
for id_ in get_target_id:
fetch = bot.fetch_target(id_)
2021-08-07 03:37:17 +00:00
if fetch:
2021-08-07 07:56:48 +00:00
send = await fetch.sendMessage(
2021-08-19 12:17:48 +00:00
f'Jira已更新{urls[url]["display"]} {release}\nJira上的信息仅作版本号预览用不代表启动器已更新此版本')
2021-08-07 03:37:17 +00:00
addversion = open(version_file, 'a')
2021-08-07 07:56:48 +00:00
addversion.write('\n' + release)
2021-08-07 03:37:17 +00:00
addversion.close()
2021-08-07 07:56:48 +00:00
Logger.info('jira mcv checked.')
2021-08-07 03:37:17 +00:00
except Exception:
traceback.print_exc()