2021-02-01 15:13:11 +00:00
|
|
|
|
import asyncio
|
2021-03-05 15:54:07 +00:00
|
|
|
|
import re
|
2021-02-01 15:13:11 +00:00
|
|
|
|
import traceback
|
|
|
|
|
from os.path import abspath
|
|
|
|
|
|
2021-03-05 15:54:07 +00:00
|
|
|
|
import aiohttp
|
2021-02-01 15:13:11 +00:00
|
|
|
|
from graia.application import MessageChain
|
|
|
|
|
from graia.application.message.elements.internal import Plain
|
|
|
|
|
|
2021-02-09 13:05:19 +00:00
|
|
|
|
from core.loader import logger_info
|
2021-03-21 08:14:28 +00:00
|
|
|
|
from database import BotDB
|
2021-02-01 15:13:11 +00:00
|
|
|
|
from modules.mcv.mcv import get_data
|
2021-02-09 13:05:19 +00:00
|
|
|
|
|
2021-02-01 15:13:11 +00:00
|
|
|
|
|
2021-03-21 08:14:28 +00:00
|
|
|
|
check_enable_modules_all = BotDB().check_enable_modules_all
|
|
|
|
|
|
|
|
|
|
|
2021-02-01 15:13:11 +00:00
|
|
|
|
def mcversion():
|
|
|
|
|
w = open(abspath('./assets/mcversion.txt'), 'r+')
|
|
|
|
|
s = w.read().split('\n')
|
|
|
|
|
w.close()
|
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def mcversion_jira():
|
|
|
|
|
w = open(abspath('./assets/mcversion_jira.txt'), 'r+')
|
|
|
|
|
s = w.read().split('\n')
|
|
|
|
|
w.close()
|
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def mcv_rss(app):
|
|
|
|
|
url = 'http://launchermeta.mojang.com/mc/game/version_manifest.json'
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info('Subbot ver launched')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
while True:
|
|
|
|
|
try:
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info('Checking mcv...')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
verlist = mcversion()
|
|
|
|
|
file = await get_data(url, 'json')
|
|
|
|
|
release = file['latest']['release']
|
|
|
|
|
snapshot = file['latest']['snapshot']
|
|
|
|
|
if release not in verlist:
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info(f'huh, we find {release}.')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
for qqgroup in check_enable_modules_all('group_permission', 'mcv_rss'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendGroupMessage(int(qqgroup), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain('启动器已更新' + file['latest']['release'] + '正式版。')]))
|
2021-02-01 15:13:11 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-25 12:36:19 +00:00
|
|
|
|
for qqfriend in check_enable_modules_all('friend_permission', 'mcv_rss_self'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendFriendMessage(int(qqfriend), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain('启动器已更新' + file['latest']['release'] + '正式版。')]))
|
2021-02-25 12:36:19 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-01 15:13:11 +00:00
|
|
|
|
addversion = open('./assets/mcversion.txt', 'a')
|
|
|
|
|
addversion.write('\n' + release)
|
|
|
|
|
addversion.close()
|
|
|
|
|
verlist = mcversion()
|
2021-03-05 15:54:07 +00:00
|
|
|
|
release_ = re.sub('\.', '-', release)
|
2021-03-10 16:09:34 +00:00
|
|
|
|
article_link = 'https://www.minecraft.net/en-us/article/minecraft-java-edition-' + release_
|
2021-03-05 15:54:07 +00:00
|
|
|
|
async with aiohttp.ClientSession() as getart:
|
|
|
|
|
async with getart.get(article_link) as getstatus:
|
|
|
|
|
if getstatus.status == 200:
|
|
|
|
|
for qqgroup in check_enable_modules_all('group_permission', 'mcv_rss'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendGroupMessage(int(qqgroup), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain(f'Mojang已发布{release}的更新日志:{article_link}')]))
|
2021-03-05 15:54:07 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
|
|
|
|
for qqfriend in check_enable_modules_all('friend_permission', 'mcv_rss_self'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendFriendMessage(int(qqfriend), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain(f'Mojang已发布{release}的更新日志:{article_link}')]))
|
2021-03-05 15:54:07 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-01 15:13:11 +00:00
|
|
|
|
if snapshot not in verlist:
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info(f'huh, we find {snapshot}.')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
for qqgroup in check_enable_modules_all('group_permission', 'mcv_rss'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendGroupMessage(int(qqgroup), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain('启动器已更新' + file['latest']['snapshot'] + '快照。')]))
|
2021-02-01 15:13:11 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-25 12:36:19 +00:00
|
|
|
|
for qqfriend in check_enable_modules_all('friend_permission', 'mcv_rss_self'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendFriendMessage(int(qqfriend), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain('启动器已更新' + file['latest']['snapshot'] + '快照。')]))
|
2021-02-25 12:36:19 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-01 15:13:11 +00:00
|
|
|
|
addversion = open('./assets/mcversion.txt', 'a')
|
|
|
|
|
addversion.write('\n' + snapshot)
|
|
|
|
|
addversion.close()
|
2021-03-10 16:09:34 +00:00
|
|
|
|
article_link = 'https://www.minecraft.net/en-us/article/minecraft-snapshot-' + snapshot
|
2021-03-05 15:54:07 +00:00
|
|
|
|
async with aiohttp.ClientSession() as getart:
|
|
|
|
|
async with getart.get(article_link) as getstatus:
|
|
|
|
|
if getstatus.status == 200:
|
|
|
|
|
for qqgroup in check_enable_modules_all('group_permission', 'mcv_rss'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendGroupMessage(int(qqgroup), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain(f'Mojang已发布{snapshot}的更新日志:{article_link}')]))
|
2021-03-05 15:54:07 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
|
|
|
|
for qqfriend in check_enable_modules_all('friend_permission', 'mcv_rss_self'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendFriendMessage(int(qqfriend), MessageChain.create(
|
2021-04-01 15:58:02 +00:00
|
|
|
|
[Plain(f'Mojang已发布{snapshot}的更新日志:{article_link}')]))
|
2021-03-05 15:54:07 +00:00
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info('mcv checked.')
|
2021-02-16 14:24:30 +00:00
|
|
|
|
await asyncio.sleep(40)
|
2021-02-01 15:13:11 +00:00
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-16 14:24:30 +00:00
|
|
|
|
await asyncio.sleep(20)
|
2021-02-01 15:13:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def mcv_jira_rss(app):
|
|
|
|
|
url = 'https://bugs.mojang.com/rest/api/2/project/10400/versions'
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info('Subbot jira launched')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
while True:
|
|
|
|
|
try:
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info('Checking Jira mcv...')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
verlist = mcversion_jira()
|
|
|
|
|
file = await get_data(url, 'json')
|
|
|
|
|
release = []
|
|
|
|
|
for v in file:
|
|
|
|
|
if not v['archived']:
|
|
|
|
|
release.append(v['name'])
|
|
|
|
|
for x in release:
|
|
|
|
|
if x not in verlist:
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info(f'huh, we find {x}.')
|
2021-02-01 15:13:11 +00:00
|
|
|
|
for qqgroup in check_enable_modules_all('group_permission', 'mcv_jira_rss'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendGroupMessage(int(qqgroup), MessageChain.create(
|
|
|
|
|
[Plain(f'Jira已更新{x}。\n(Jira上的信息仅作版本号预览用,不代表启动器已更新此版本)')]))
|
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-25 12:36:19 +00:00
|
|
|
|
for qqfriend in check_enable_modules_all('friend_permission', 'mcv_jira_rss_self'):
|
|
|
|
|
try:
|
|
|
|
|
await app.sendFriendMessage(int(qqfriend), MessageChain.create(
|
|
|
|
|
[Plain(f'Jira已更新{x}。\n(Jira上的信息仅作版本号预览用,不代表启动器已更新此版本)')]))
|
|
|
|
|
await asyncio.sleep(0.5)
|
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-01 15:13:11 +00:00
|
|
|
|
addversion = open('./assets/mcversion_jira.txt', 'a')
|
|
|
|
|
addversion.write('\n' + x)
|
|
|
|
|
addversion.close()
|
2021-02-03 14:43:24 +00:00
|
|
|
|
logger_info('jira mcv checked.')
|
2021-02-16 14:24:30 +00:00
|
|
|
|
await asyncio.sleep(40)
|
2021-02-01 15:13:11 +00:00
|
|
|
|
except Exception:
|
|
|
|
|
traceback.print_exc()
|
2021-02-16 14:24:30 +00:00
|
|
|
|
await asyncio.sleep(20)
|
2021-02-01 15:13:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rss = {'mcv_rss': mcv_rss, 'mcv_jira_rss': mcv_jira_rss}
|
|
|
|
|
options = ['mcv_rss', 'mcv_jira_rss']
|
2021-02-25 12:36:19 +00:00
|
|
|
|
friend_options = ['mcv_rss_self', 'mcv_jira_rss_self']
|
2021-02-09 13:05:19 +00:00
|
|
|
|
help = {'mcv_rss': {'help': '订阅Minecraft Java版游戏版本检测。(仅群聊)'},
|
|
|
|
|
'mcv_jira_rss': {'help': '订阅Minecraft Java版游戏版本检测(Jira记录,仅作预览用)。(仅群聊)'}}
|