diff --git a/modules/mcv/__init__.py b/modules/mcv/__init__.py index 9aad7dd2..ab1e5b68 100644 --- a/modules/mcv/__init__.py +++ b/modules/mcv/__init__.py @@ -1,6 +1,6 @@ from core.builtins import Bot from core.component import module -from .mcv import mcv, mcbv, mcdv, mcev +from .mcv import mcv, mcbv, mcdv, mcev, mclgv m = module( bind_prefix='mcv', @@ -42,3 +42,13 @@ me = module( @me.handle('{{mcv.help.mcev}}') async def mcev_loader(msg: Bot.MessageSession): await msg.finish(await mcev(msg)) + + +mlg = module( + bind_prefix='mclgv', + developers=['OasisAkari', 'Dianliang233']) + + +@me.handle('{{mcv.help.mclgv}}') +async def mcev_loader(msg: Bot.MessageSession): + await msg.finish(await mclgv(msg)) \ No newline at end of file diff --git a/modules/mcv/locales/en_us.json b/modules/mcv/locales/en_us.json index 489d49bc..a2a89361 100644 --- a/modules/mcv/locales/en_us.json +++ b/modules/mcv/locales/en_us.json @@ -2,16 +2,18 @@ "mcv.help.mcbv": "Get the latest version of Minecraft: Bedrock Edition on Mojira.", "mcv.help.mcdv": "Get the latest version of Minecraft Dungeons on Mojira.", "mcv.help.mcev": "Get the latest version of Minecraft: Education Edition in Windows Edition.", + "mcv.help.mclgv": "Get the latest version of Minecraft Legends on Mojira.", "mcv.help.mcv": "Get the latest version of Minecraft: Java Edition in the launcher.", "mcv.message.error.server": "Server error.", - "mcv.message.mcbv": "The latest version recorded on Mojira is:\n${msg2}\n(The latest version in the stores shall prevail, Mojira is only for previewing the version)", + "mcv.message.mcbv": "The latest version recorded on Mojira is:\n${jira_ver}\n(The latest version in the stores shall prevail, Mojira is only for previewing the version)", + "mcv.message.mcbv.get_failed": "Failed to fetch.", "mcv.message.mcbv.ms_store": "Currently the latest version in Microsoft Store is: ", "mcv.message.mcbv.play_store": "Currently the latest version in Google Play Store is: ", - "mcv.message.mcdv": "The latest version: ${mcdversion}\n(The data from Mojira may be earlier than the official release. Information is for reference purposes only).", - "mcv.message.mcev": "The latest version: ", - "mcv.message.mcv": "The latest version in the launcher is: \n${message1}\nThe latest version recorded on Mojira is: \n${message2}\n(The latest version in the launcher shall prevail, Mojira is only for previewing the version)", - "mcv.message.mcv.message1": "The latest release: ${release}, the latest snapshot: ${snapshot},", - "mcv.message.mcv.message1.failed": "Failed to get manifest.json.", - "mcv.message.mcv.message2.failed": "Failed to get Mojira information.", - "mcv.message.mcbv.get_failed": "Failed to fetch." + "mcv.message.mcdv": "The latest version: ${version}\n(The data from Mojira may be earlier than the official release. Information is for reference purposes only).", + "mcv.message.mcev": "The latest version: ${version}", + "mcv.message.mclgv": "The latest version: ${version}\n(The data from Mojira may be earlier than the official release. Information is for reference purposes only).", + "mcv.message.mcv": "The latest version in the launcher is: \n${launcher_ver}\nThe latest version recorded on Mojira is: \n${jira_ver}\n(The latest version in the launcher shall prevail, Mojira is only for previewing the version)", + "mcv.message.mcv.jira.failed": "Failed to get Mojira information.", + "mcv.message.mcv.launcher": "The latest release: ${release}, the latest snapshot: ${snapshot},", + "mcv.message.mcv.launcher.failed": "Failed to get manifest.json." } \ No newline at end of file diff --git a/modules/mcv/locales/zh_cn.json b/modules/mcv/locales/zh_cn.json index e083090e..3b0780d7 100644 --- a/modules/mcv/locales/zh_cn.json +++ b/modules/mcv/locales/zh_cn.json @@ -2,16 +2,18 @@ "mcv.help.mcbv": "查询当前 Minecraft 基岩版在 Mojira 内记录的最新版本。", "mcv.help.mcdv": "查询当前 Minecraft Dungeons 在 Mojira 内记录的最新版本。", "mcv.help.mcev": "查询当前 Minecraft:教育版在 Windows 版记录的最新版本。", + "mcv.help.mclgv": "查询当前 Minecraft Legends 在 Mojira 内记录的最新版本。", "mcv.help.mcv": "查询当前 Minecraft:Java 版在启动器内最新版本。", "mcv.message.error.server": "服务器错误。", - "mcv.message.mcbv": "Mojira 上所记录最新版本为:\n${msg2}\n(以商店内最新版本为准,Mojira 仅作版本号预览用)", + "mcv.message.mcbv": "Mojira 上所记录最新版本为:\n${jira_ver}\n(以商店内最新版本为准,Mojira 仅作版本号预览用)", + "mcv.message.mcbv.get_failed": "获取失败。", "mcv.message.mcbv.ms_store": "目前 Microsoft Store 内最新正式版为:", "mcv.message.mcbv.play_store": "目前 Google Play 商店内最新正式版为:", - "mcv.message.mcdv": "最新版:${mcdversion}\n(数据来源于 Mojira,可能会比官方发布要早一段时间。信息仅供参考。)", - "mcv.message.mcev": "最新版:", - "mcv.message.mcv": "目前启动器内最新版本为:\n${message1}\nMojira 上所记录最新版本为:\n${message2}\n(以启动器内最新版本为准,Mojira 仅作版本号预览用)", - "mcv.message.mcv.message1": "最新版:${release},最新快照:${snapshot},", - "mcv.message.mcv.message1.failed": "获取 manifest.json 失败。", - "mcv.message.mcv.message2.failed": "获取 Mojira 信息失败。", - "mcv.message.mcbv.get_failed": "获取失败。" + "mcv.message.mcdv": "最新版:${version}\n(数据来源于 Mojira,可能会比官方发布要早一段时间。信息仅供参考。)", + "mcv.message.mcev": "最新版:${version}", + "mcv.message.mclgv": "最新版:${version}\n(数据来源于 Mojira,可能会比官方发布要早一段时间。信息仅供参考。)", + "mcv.message.mcv": "目前启动器内最新版本为:\n${launcher_ver}\nMojira 上所记录最新版本为:\n${jira_ver}\n(以启动器内最新版本为准,Mojira 仅作版本号预览用)", + "mcv.message.mcv.jira.failed": "获取 Mojira 信息失败。", + "mcv.message.mcv.launcher": "最新版:${release},最新快照:${snapshot},", + "mcv.message.mcv.launcher.failed": "获取 manifest.json 失败。" } \ No newline at end of file diff --git a/modules/mcv/locales/zh_tw.json b/modules/mcv/locales/zh_tw.json index b2cccc4e..28e2ecb2 100644 --- a/modules/mcv/locales/zh_tw.json +++ b/modules/mcv/locales/zh_tw.json @@ -2,16 +2,18 @@ "mcv.help.mcbv": "查詢目前 Minecraft 基岩版在 Mojira 內記錄的最新版本。", "mcv.help.mcdv": "查詢目前 Minecraft Dungeons 在 Mojira 內記錄的最新版本。", "mcv.help.mcev": "查詢目前 Minecraft:教育版在 Windows 版記錄的最新版本。", + "mcv.help.mclgv": "查詢目前 Minecraft Legends 在 Mojira 內記錄的最新版本。", "mcv.help.mcv": "查詢目前 Minecraft:Java 版在啟動器內最新版本。", "mcv.message.error.server": "伺服器錯誤。", - "mcv.message.mcbv": "Mojira 上所記錄最新版本為:\n${msg2}\n(以商店內最新版本為準,Mojira 僅作版本號預覽用)", + "mcv.message.mcbv": "Mojira 上所記錄最新版本為:\n${jira_ver}\n(以商店內最新版本為準,Mojira 僅作版本號預覽用)", + "mcv.message.mcbv.get_failed": "取得失敗。", "mcv.message.mcbv.ms_store": "目前 Microsoft Store 內最新正式版為:", "mcv.message.mcbv.play_store": "目前 Google Play 商店內最新正式版為:", - "mcv.message.mcdv": "最新版:${mcdversion}\n(資訊來源於 Mojira,可能會比官方發布要早一段時間。資訊僅供參考。)", - "mcv.message.mcev": "最新版:", - "mcv.message.mcv": "目前啟動器內最新版本為:\n${message1}\nMojira 上所記錄最新版本為:\n${message2}\n(以啟動器內最新版本為準,Mojira 僅作版本號預覽用)", - "mcv.message.mcv.message1": "最新版:${release},最新快照:${snapshot},", - "mcv.message.mcv.message1.failed": "取得 manifest.json 失敗。", - "mcv.message.mcv.message2.failed": "取得 Mojira 資訊失敗。", - "mcv.message.mcbv.get_failed": "取得失敗。" + "mcv.message.mcdv": "最新版:${version}\n(資訊來源於 Mojira,可能會比官方發布要早一段時間。資訊僅供參考。)", + "mcv.message.mcev": "最新版:${version}", + "mcv.message.mclgv": "最新版:${version}\n(資訊來源於 Mojira,可能會比官方發布要早一段時間。資訊僅供參考。)", + "mcv.message.mcv": "目前啟動器內最新版本為:\n${launcher_ver}\nMojira 上所記錄最新版本為:\n${jira_ver}\n(以啟動器內最新版本為準,Mojira 僅作版本號預覽用)", + "mcv.message.mcv.jira.failed": "取得 Mojira 資訊失敗。", + "mcv.message.mcv.launcher": "最新版:${release},最新快照:${snapshot},", + "mcv.message.mcv.launcher.failed": "取得 manifest.json 失敗。" } \ No newline at end of file diff --git a/modules/mcv/mcv.py b/modules/mcv/mcv.py index 51fe17e0..c3e10d9f 100644 --- a/modules/mcv/mcv.py +++ b/modules/mcv/mcv.py @@ -13,11 +13,11 @@ async def mcv(msg): try: data = json.loads(await get_url('https://piston-meta.mojang.com/mc/game/version_manifest.json', 200)) message1 = msg.locale.t( - "mcv.message.mcv.message1", + "mcv.message.mcv.launcher", release=data['latest']['release'], snapshot=data['latest']['snapshot']) except (ConnectionError, OSError): # Probably... - message1 = msg.locale.t("mcv.message.mcv.message1.failed") + message1 = msg.locale.t("mcv.message.mcv.launcher.failed") try: mojira = json.loads(await get_url('https://bugs.mojang.com/rest/api/2/project/10400/versions', 200)) release = [] @@ -27,8 +27,8 @@ async def mcv(msg): release.append(v['name']) message2 = prefix.join(release) except Exception: - message2 = msg.locale.t("mcv.message.mcv.message2.failed") - return msg.locale.t("mcv.message.mcv", message1=message1, message2=message2) + message2 = msg.locale.t("mcv.message.mcv.jira.failed") + return msg.locale.t("mcv.message.mcv", launcher_ver=message1, jira_ver=message2) async def mcbv(msg): @@ -74,7 +74,7 @@ async def mcbv(msg): f"""{msg.locale.t("mcv.message.mcbv.ms_store")} {ms_store_version if ms_store_version is not None else msg.locale.t('mcv.message.mcbv.get_failed')} """ + \ - msg.locale.t("mcv.message.mcbv", msg2=msg2) + msg.locale.t("mcv.message.mcbv", jira_ver=msg2) async def mcdv(msg): @@ -86,7 +86,7 @@ async def mcdv(msg): for v in data: if not v['archived']: release.append(v["name"]) - return msg.locale.t('mcv.message.mcdv', mcdversion=" | ".join(release)) + return msg.locale.t('mcv.message.mcdv', version=" | ".join(release)) async def mcev(msg): @@ -97,4 +97,16 @@ async def mcev(msg): Logger.debug(version) except (ConnectionError, OSError): # Probably... return ErrorMessage(msg.locale.t('mcv.message.error.server')) - return f'{msg.locale.t("mcv.message.mcev")}{version}' + return msg.locale.t("mcv.message.mcev", version=version) + + +async def mclgv(msg): + try: + data = json.loads(await get_url('https://bugs.mojang.com/rest/api/2/project/12200/versions', 200)) + except (ConnectionError, OSError): # Probably... + return ErrorMessage(msg.locale.t('mcv.message.error.server')) + release = [] + for v in data: + if not v['archived']: + release.append(v["name"]) + return msg.locale.t('mcv.message.mclgv', version=" | ".join(release)) \ No newline at end of file diff --git a/modules/mcv_rss/__init__.py b/modules/mcv_rss/__init__.py index c1d9aab8..55e1a330 100644 --- a/modules/mcv_rss/__init__.py +++ b/modules/mcv_rss/__init__.py @@ -3,7 +3,7 @@ from core.component import module mcv_rss = module('mcv_rss', developers=['OasisAkari', 'Dianliang233'], - recommend_modules=['mcv_jira_rss', 'mcbv_jira_rss', 'mcdv_jira_rss'], + recommend_modules=['mcv_jira_rss', 'mcbv_jira_rss', 'mcdv_jira_rss', 'mclgv_jira_rss'], desc='{mcv_rss.help.mcv_rss.desc}', alias='mcvrss') @@ -23,7 +23,7 @@ async def mcbv_rss(fetch: Bot.FetchTarget, ctx: Bot.ModuleHookContext): mcv_jira_rss = module('mcv_jira_rss', developers=['OasisAkari', 'Dianliang233'], - recommend_modules=['mcv_rss', 'mcbv_jira_rss', 'mcdv_jira_rss'], + recommend_modules=['mcv_rss', 'mcbv_jira_rss', 'mcdv_jira_rss', 'mclgv_jira_rss'], desc='{mcv_rss.help.mcv_jira_rss.desc}', alias='mcvjirarss') @@ -34,7 +34,7 @@ async def mcv_jira_rss(fetch: Bot.FetchTarget, ctx: Bot.ModuleHookContext): mcbv_jira_rss = module('mcbv_jira_rss', developers=['OasisAkari', 'Dianliang233'], - recommend_modules=['mcv_rss', 'mcv_jira_rss', 'mcdv_jira_rss'], + recommend_modules=['mcv_rss', 'mcv_jira_rss', 'mcdv_jira_rss', 'mclgv_jira_rss'], desc='{mcv_rss.help.mcbv_jira_rss.desc}', alias='mcbvjirarss') @@ -45,10 +45,21 @@ async def mcbv_jira_rss(fetch: Bot.FetchTarget, ctx: Bot.ModuleHookContext): mcdv_jira_rss = module('mcdv_jira_rss', developers=['OasisAkari', 'Dianliang233'], - recommend_modules=['mcv_rss', 'mcbv_jira_rss', 'mcv_jira_rss'], + recommend_modules=['mcv_rss', 'mcbv_jira_rss', 'mcv_jira_rss', 'mclgv_jira_rss'], desc='{mcv_rss.help.mcdv_jira_rss.desc}', alias='mcdvjirarss') @mcdv_jira_rss.hook() async def mcdv_jira_rss(fetch: Bot.FetchTarget, ctx: Bot.ModuleHookContext): await fetch.post_message('mcdv_rss', **ctx.args) + + +mclgv_jira_rss = module('mclgv_jira_rss', + developers=['OasisAkari', 'Dianliang233'], + recommend_modules=['mcv_rss', 'mcbv_jira_rss', 'mcv_jira_rss', 'mcdv_jira_rss'], + desc='{mcv_rss.help.mclgv_jira_rss.desc}', alias='mclgvjirarss') + + +@mclgv_jira_rss.hook() +async def mclgv_jira_rss(fetch: Bot.FetchTarget, ctx: Bot.ModuleHookContext): + await fetch.post_message('mclgvv_rss', **ctx.args) diff --git a/modules/mcv_rss/locales/zh_cn.json b/modules/mcv_rss/locales/zh_cn.json index ed69c18f..d720c3dc 100644 --- a/modules/mcv_rss/locales/zh_cn.json +++ b/modules/mcv_rss/locales/zh_cn.json @@ -2,11 +2,13 @@ "mcv_rss.help.mcbv_jira_rss.desc": "开启后 Mojira 更新基岩版时会自动推送消息。", "mcv_rss.help.mcbv_rss.desc": "开启后商店更新 Minecraft 基岩版时会自动推送消息。", "mcv_rss.help.mcdv_jira_rss.desc": "开启后 Mojira 更新 Minecraft Dungeons 时会自动推送消息。", + "mcv_rss.help.mclgv_jira_rss.desc": "开启后 Mojira 更新 Minecraft Legends 时会自动推送消息。", "mcv_rss.help.mcv_jira_rss.desc": "开启后 Mojira 更新 Java 版时会自动推送消息。", "mcv_rss.help.mcv_rss.desc": "开启后 Minecraft 启动器更新 Minecraft:Java 版时会自动推送消息。", "mcv_rss.message.mcbv_jira_rss": "Mojira 已更新基岩版 ${version}。\n(Mojira 上的信息仅作版本号预览用,不代表商店已更新此版本)", "mcv_rss.message.mcbv_rss": "Google Play 商店已更新基岩版 ${version} 正式版。", "mcv_rss.message.mcdv_jira_rss": "Mojira 已更新 Minecraft Dungeons ${version}。\n(Mojira 上的信息仅作版本号预览用,不代表启动器/商店已更新此版本)", + "mcv_rss.message.mclgv_jira_rss": "Mojira 已更新 Minecraft Legends ${version}。\n(Mojira 上的信息仅作版本号预览用,不代表启动器/商店已更新此版本)", "mcv_rss.message.mcv_jira_rss": "Mojira 已更新 Java 版 ${version}。\n(Mojira 上的信息仅作版本号预览用,不代表启动器已更新此版本)", "mcv_rss.message.mcv_jira_rss.future": "Mojira 已新增 Java 版 ${version}。\n(Future Version 仅代表与此相关的版本正在规划中,不代表启动器已更新此版本)", "mcv_rss.message.mcv_rss.release": "启动器已更新 ${version} 正式版。", diff --git a/modules/mcv_rss/locales/zh_tw.json b/modules/mcv_rss/locales/zh_tw.json index d8c34c16..f5c9122e 100644 --- a/modules/mcv_rss/locales/zh_tw.json +++ b/modules/mcv_rss/locales/zh_tw.json @@ -7,6 +7,7 @@ "mcv_rss.message.mcbv_jira_rss": "Mojira 已更新基岩版 ${version}。 \n(Mojira 上的資訊僅作版本號預覽用,不代表啟動器已更新此版本)", "mcv_rss.message.mcbv_rss": "Google Play 商店已更新基岩版 ${version} 正式版。", "mcv_rss.message.mcdv_jira_rss": "Mojira 已更新 Minecraft Dungeons ${version}。 \n(Mojira 上的資訊僅作版本號預覽用,不代表啟動器/商店已更新此版本)", + "mcv_rss.message.mclgv_jira_rss": "Mojira 已更新 Minecraft Legends ${version}。 \n(Mojira 上的資訊僅作版本號預覽用,不代表啟動器/商店已更新此版本)", "mcv_rss.message.mcv_jira_rss": "Mojira 已更新 Java 版 ${version}。 \n(Mojira 上的資訊僅作版本號預覽用,不代表啟動器已更新此版本)", "mcv_rss.message.mcv_jira_rss.future": "Mojira 已新增 Java 版 ${version}。 \n(Future Version 僅代表與此相關的版本正在規劃中,不代表啟動器已更新此版本)", "mcv_rss.message.mcv_rss.release": "啟動器已更新 ${version} 正式版。", diff --git a/modules/wiki/set.py b/modules/wiki/set.py index 0a28e235..19a96d3c 100644 --- a/modules/wiki/set.py +++ b/modules/wiki/set.py @@ -133,8 +133,6 @@ async def _(msg: Bot.MessageSession): " ".join(msg.trigger_msg.split(" ")[3:]), let_it=False) if delete: await msg.finish(msg.locale.t("wiki.message.headers.add.success", headers=json.dumps(target.get_headers()))) - else: - await msg.finish(msg.locale.t("wiki.message.headers.add.failed")) @wiki.handle('headers reset {{wiki.help.headers.reset}}', required_admin=True) diff --git a/schedulers/mcv_rss.py b/schedulers/mcv_rss.py index 26630ac3..9b32ee6c 100644 --- a/schedulers/mcv_rss.py +++ b/schedulers/mcv_rss.py @@ -196,3 +196,27 @@ async def mcdv_jira_rss(): update_stored_list('scheduler', 'mcdv_jira_rss', verlist) except Exception: traceback.print_exc() + + +@Scheduler.scheduled_job(IntervalTrigger(seconds=trigger_times)) +async def mclgv_jira_rss(): + try: + verlist = get_stored_list('scheduler', 'mclgv_jira_rss') + file = json.loads(await get_url('https://bugs.mojang.com/rest/api/2/project/12200/versions', 200, attempt=1)) + releases = [] + for v in file: + if not v['archived']: + releases.append(v['name']) + else: + if v['name'] not in verlist: + verlist.append(v['name']) + for release in releases: + if release not in verlist: + Logger.info(f'huh, we find {release}.') + + await JobQueue.trigger_hook_all('mclgv_jira_rss', message='mcv_rss.message.mclgv_jira_rss', + i18n=True, version=release) + verlist.append(release) + update_stored_list('scheduler', 'mclgv_jira_rss', verlist) + except Exception: + traceback.print_exc()