diff --git a/LittlePaimon/plugins/Paimon_Autobbs/coin_handle.py b/LittlePaimon/plugins/Paimon_Autobbs/coin_handle.py
index 8a41e10..ea79652 100644
--- a/LittlePaimon/plugins/Paimon_Autobbs/coin_handle.py
+++ b/LittlePaimon/plugins/Paimon_Autobbs/coin_handle.py
@@ -3,7 +3,9 @@ import datetime
import random
import time
from collections import defaultdict
+from typing import Tuple
+from nonebot import get_bot
from LittlePaimon.database.models import PrivateCookie, MihoyoBBSSub, LastQuery
from LittlePaimon.utils import logger, aiorequests
from LittlePaimon.utils import scheduler
@@ -57,6 +59,12 @@ mihoyo_bbs_List = [
'name': '崩坏:星穹铁道',
'url': 'https://bbs.mihoyo.com/sr/',
},
+ {
+ 'id': '8',
+ 'forumId': '57',
+ 'name': '绝区零',
+ 'url': 'https://bbs.mihoyo.com/zzz/'
+ }
]
@@ -96,7 +104,7 @@ class MihoyoBBSCoin:
self.is_valid: bool = True
self.state: str = ''
- async def run(self) -> (bool, str):
+ async def run(self) -> Tuple[bool, str]:
"""
执行米游币获取任务
:return: 获取消息
@@ -304,14 +312,40 @@ async def bbs_auto_coin():
if not subs:
return
logger.info('米游币自动获取', f'开始执行米游币自动获取,共{len(subs)}个任务,预计花费{round(75 * len(subs) / 60, 2)}分钟')
- coin_result = defaultdict(list)
+ coin_result_group = defaultdict(list)
+ coin_result_private = defaultdict(list)
for sub in subs:
result = await mhy_bbs_coin(str(sub.user_id), sub.uid)
- coin_result[sub.group_id].append({
- 'user_id': sub.user_id,
- 'uid': sub.uid,
- 'result': '出错' not in result and 'Cookie' not in result
- })
+ if sub.user_id != sub.group_id:
+ coin_result_group[sub.group_id].append({
+ 'user_id': sub.user_id,
+ 'uid': sub.uid,
+ 'result': '出错' not in result and 'Cookie' not in result
+ })
+ else:
+ coin_result_private[sub.user_id].append({
+ 'uid': sub.uid,
+ 'result': '出错' not in result and 'Cookie' not in result,
+ 'msg': result
+ })
await asyncio.sleep(random.randint(3, 6))
- logger.info('米游币自动获取', f'签到完成,共花费{round((time.time() - t) / 60, 2)}分钟')
+ for group_id, result_list in coin_result_group.items():
+ result_num = len(result_list)
+ result_fail = len([result for result in result_list if not result['result']])
+ msg = f'本群米游币自动获取共{result_num}个任务,其中成功{result_num-result_fail}个,失败{result_fail}个,失败的UID列表:\n{"\n".join(result["uid"] for result in result_list if not result["result"])}'
+ try:
+ await get_bot().send_group_msg(group_id=int(group_id), message=msg)
+ except Exception as e:
+ logger.info('米游币自动获取', '➤➤', {'群': group_id}, f'发送米游币自动结果失败: {e}', False)
+ await asyncio.sleep(random.randint(3, 6))
+
+ for user_id, result_list in coin_result_private.items():
+ for result in result_list:
+ try:
+ await get_bot().send_private_msg(user_id=int(user_id), message=result['msg'])
+ except Exception as e:
+ logger.info('米游币自动获取', '➤➤', {'用户': user_id}, f'发送米游币自动结果失败: {e}', False)
+ await asyncio.sleep(random.randint(3, 6))
+
+ logger.info('米游币自动获取', f'获取完成,共花费{round((time.time() - t) / 60, 2)}分钟')
diff --git a/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py b/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py
index db93858..a496456 100644
--- a/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py
+++ b/LittlePaimon/plugins/Paimon_Autobbs/sign_handle.py
@@ -105,6 +105,7 @@ async def bbs_auto_sign():
await get_bot().send_group_msg(group_id=int(group_id), message=img)
except Exception as e:
logger.info('米游社原神签到', '➤➤', {'群': group_id}, f'发送签到结果失败: {e}', False)
+ await asyncio.sleep(random.randint(3, 6))
for user_id, sign_result in sign_result_private.items():
for result in sign_result:
@@ -115,6 +116,7 @@ async def bbs_auto_sign():
f'{"" if result["result"] == SignResult.FAIL else ",获得奖励:" + result["reward"]}')
except Exception as e:
logger.info('米游社原神签到', '➤➤', {'用户': user_id}, f'发送签到结果失败: {e}', False)
+ await asyncio.sleep(random.randint(3, 6))
logger.info('米游社原神签到', f'签到完成,共花费{round((time.time() - t) / 60, 2)}分钟')
diff --git a/LittlePaimon/plugins/Paimon_DailyNote/handler.py b/LittlePaimon/plugins/Paimon_DailyNote/handler.py
index f93f4c3..836703a 100644
--- a/LittlePaimon/plugins/Paimon_DailyNote/handler.py
+++ b/LittlePaimon/plugins/Paimon_DailyNote/handler.py
@@ -115,6 +115,8 @@ async def check_note():
result_log += '银币'
if result_log:
logger.info('原神实时便签', '➤', {'用户': sub.user_id, 'UID': sub.uid}, f'{result_log}达到了阈值,发送提醒', True)
+ else:
+ logger.info('原神实时便签', '➤➤', {'用户': sub.user_id, 'UID': sub.uid}, '检查完成,未达到阈值', True)
if result:
sub.last_remind_time = datetime.datetime.now()
sub.today_remind_num += 1
@@ -128,8 +130,8 @@ async def check_note():
message=f'⚠️你的UID{sub.uid}{result}记得清理哦⚠️')
except Exception as e:
logger.info('原神实时便签', '➤➤', {'用户': sub.user_id, 'UID': sub.uid}, f'发送提醒失败,{e}', False)
- # 等待2至4秒再检查下一个,防止检查过快
- await asyncio.sleep(random.randint(2, 4))
+ # 等待一会再检查下一个,防止检查过快
+ await asyncio.sleep(random.randint(4, 8))
logger.info('原神实时便签', f'树脂检查完成,共花费{round((time.time() - t) / 60, 2)}分钟')
diff --git a/LittlePaimon/plugins/Paimon_Gacha_Log/draw.py b/LittlePaimon/plugins/Paimon_Gacha_Log/draw.py
index df385bd..f1ea4c1 100644
--- a/LittlePaimon/plugins/Paimon_Gacha_Log/draw.py
+++ b/LittlePaimon/plugins/Paimon_Gacha_Log/draw.py
@@ -172,20 +172,20 @@ async def draw_gacha_log(user_id: str, uid: str, nickname: Optional[str], signat
await img.text(str(total_five_star_count), (789, 884), 286, fm.get('bahnschrift_regular', 48), '#040404', 'center')
four_star_detail = await draw_four_star_detail(list(data4.values()))
if total_five_star_count:
- chara_pool_per = round(len(data5['角色祈愿']) / total_five_star_count, 3)
- weapon_pool_per = round(len(data5['武器祈愿']) / total_five_star_count, 3)
- new_pool_per = round((len(data5['常驻祈愿']) + len(data5['新手祈愿'])) / total_five_star_count, 3)
+ chara_pool_per = round(len(data5['角色祈愿']) / total_five_star_count * 100, 3)
+ weapon_pool_per = round(len(data5['武器祈愿']) / total_five_star_count * 100, 3)
+ new_pool_per = round((len(data5['常驻祈愿']) + len(data5['新手祈愿'])) / total_five_star_count * 100, 3)
now_used_width = 56
pers = [chara_pool_per, weapon_pool_per, new_pool_per]
i = 0
for per in pers:
- if per >= 0.03:
- await img.draw_rectangle((now_used_width, 399, now_used_width + int(per * 967), 446),
+ if per >= 3:
+ await img.draw_rectangle((now_used_width, 399, now_used_width + int(per / 100 * 967), 446),
bar_color[i][0])
- if per >= 0.1:
- await img.text(f'{per * 100}%', now_used_width + 18, 410, fm.get('bahnschrift_regular', 30, 'Bold'),
+ if per >= 10:
+ await img.text(f'{per}%', now_used_width + 18, 410, fm.get('bahnschrift_regular', 30, 'Bold'),
bar_color[i][1])
- now_used_width += int(per * 967)
+ now_used_width += int(per / 100 * 967)
i += 1
await img.paste(await load_image(RESOURCE_BASE_PATH / 'gacha_log' / 'text.png'), (484, 464))
now_height = 525