|
19 | 19 | GroupMessageEvent,
|
20 | 20 | Message,
|
21 | 21 | MessageEvent,
|
| 22 | + NoticeEvent, |
22 | 23 | MessageSegment,
|
23 | 24 | PrivateMessageEvent,
|
24 | 25 | )
|
25 | 26 | from nonebot.log import logger
|
26 | 27 | from nonebot.params import CommandArg
|
27 | 28 | from nonebot.permission import SUPERUSER
|
| 29 | +from nonebot.plugin.on import on_notice |
28 | 30 | from nonebot_plugin_guild_patch import GuildMessageEvent
|
29 | 31 |
|
30 | 32 | from .data_source import dir_path, nb2_file, template_path
|
| 33 | +from .game.minimap_renderer import get_rep |
31 | 34 | from .game.ocr import (
|
32 | 35 | downlod_OcrResult,
|
33 | 36 | get_Random_Ocr_Pic,
|
|
52 | 55 | bot_pupu = on_fullmatch('噗噗', block=False, priority=5)
|
53 | 56 | bot_listen = on_message(priority=5, block=False)
|
54 | 57 | ocr_listen = on_message(priority=6, block=False)
|
| 58 | +group_file_listen = on_notice(priority=6, block=False) |
55 | 59 | driver = get_driver()
|
56 | 60 |
|
57 | 61 | _proxy = None
|
|
74 | 78 | async def main(bot: Bot, ev: MessageEvent, matchmsg: Message = CommandArg()): # noqa: B008, PLR0915
|
75 | 79 | try:
|
76 | 80 | server_type = None
|
77 |
| - if isinstance(ev, PrivateMessageEvent) and (driver.config.private or str(ev.user_id) in driver.config.superusers): # 私聊事件,superusers默认不受影响 |
| 81 | + if isinstance(ev, PrivateMessageEvent) and ( |
| 82 | + driver.config.private or str(ev.user_id) in driver.config.superusers): # 私聊事件,superusers默认不受影响 |
78 | 83 | server_type = 'QQ'
|
79 | 84 | elif isinstance(ev, GroupMessageEvent) and driver.config.group and ev.group_id not in driver.config.ban_group_list: # 群聊事件
|
80 | 85 | server_type = 'QQ'
|
@@ -173,6 +178,26 @@ async def wait_to_select(hikari):
|
173 | 178 | return hikari.error('已超时退出')
|
174 | 179 |
|
175 | 180 |
|
| 181 | +@group_file_listen.handle() |
| 182 | +async def GROUP_FILE_listen(bot: Bot, ev: NoticeEvent): |
| 183 | + try: |
| 184 | + if not driver.config.minimap_renderer_on: |
| 185 | + return |
| 186 | + noticeType = str(ev.notice_type) |
| 187 | + if not noticeType == 'group_upload': |
| 188 | + return |
| 189 | + if not str(ev.file.name).endswith('.wowsreplay'): |
| 190 | + return |
| 191 | + # |
| 192 | + base64_file = await bot.get_image(file=ev.file.id) |
| 193 | + # 调用接口转换 |
| 194 | + await get_rep(base64_file['base64'], bot, ev) |
| 195 | + except Exception: |
| 196 | + logger.error(traceback.format_exc()) |
| 197 | + await bot.send(ev, MessageSegment.text("请求minimap_renderer服务异常")) |
| 198 | + return |
| 199 | + |
| 200 | + |
176 | 201 | @ocr_listen.handle()
|
177 | 202 | async def OCR_listen(bot: Bot, ev: MessageEvent):
|
178 | 203 | try:
|
|
0 commit comments