update gold_redbag

This commit is contained in:
yajiwa 2023-02-06 02:06:36 +08:00
parent 4d133ed2df
commit a053c120c4

View File

@ -29,7 +29,6 @@ from nonebot.params import CommandArg
import random import random
import time import time
__zx_plugin_name__ = "金币红包" __zx_plugin_name__ = "金币红包"
__plugin_usage__ = """ __plugin_usage__ = """
usage usage
@ -64,11 +63,16 @@ __plugin_settings__ = {
} }
__plugin_resources__ = {"prts": IMAGE_PATH} __plugin_resources__ = {"prts": IMAGE_PATH}
async def rule(event: GroupMessageEvent) -> bool:
return check_on_gold_red(event)
gold_redbag = on_command( gold_redbag = on_command(
"塞红包", aliases={"金币红包"}, priority=5, block=True, permission=GROUP "塞红包", aliases={"金币红包"}, priority=5, block=True, permission=GROUP
) )
open_ = on_command("", aliases={""}, priority=5, block=True, permission=GROUP) open_ = on_command("", aliases={""}, priority=5, block=True, permission=GROUP, rule=rule)
poke_ = on_notice(priority=6, block=False) poke_ = on_notice(priority=6, block=False)
@ -85,27 +89,11 @@ festive_redbag_data = {}
# 阻断其他poke # 阻断其他poke
@run_preprocessor @run_preprocessor
async def _(matcher: Matcher, event: PokeNotifyEvent): async def _(matcher: Matcher, event: PokeNotifyEvent, ):
try: try:
if matcher.type == "notice" and event.self_id == event.target_id: if matcher.type == "notice" and event.self_id == event.target_id:
flag1 = True flag = check_on_gold_red(event)
flag2 = True if flag:
try:
if festive_redbag_data[event.group_id]["user_id"]:
if (
event.user_id
in festive_redbag_data[event.group_id]["open_user"]
):
flag1 = False
except KeyError:
flag1 = False
try:
if redbag_data[event.group_id]["user_id"]:
if event.user_id in redbag_data[event.group_id]["open_user"]:
flag2 = False
except KeyError:
flag2 = False
if flag1 or flag2:
if matcher.plugin_name == "poke": if matcher.plugin_name == "poke":
raise IgnoredException("目前正在抢红包...") raise IgnoredException("目前正在抢红包...")
else: else:
@ -121,8 +109,8 @@ async def _(bot: Bot, event: GroupMessageEvent, arg: Message = CommandArg()):
try: try:
if time.time() - redbag_data[event.group_id]["time"] > 60: if time.time() - redbag_data[event.group_id]["time"] > 60:
amount = ( amount = (
redbag_data[event.group_id]["amount"] redbag_data[event.group_id]["amount"]
- redbag_data[event.group_id]["open_amount"] - redbag_data[event.group_id]["open_amount"]
) )
await return_gold(redbag_data[event.group_id]["user_id"], event.group_id, amount) await return_gold(redbag_data[event.group_id]["user_id"], event.group_id, amount)
await gold_redbag.send( await gold_redbag.send(
@ -185,43 +173,21 @@ async def _(event: GroupMessageEvent, arg: Message = CommandArg()):
msg = arg.extract_plain_text().strip() msg = arg.extract_plain_text().strip()
msg = ( msg = (
msg.replace("!", "") msg.replace("!", "")
.replace("", "") .replace("", "")
.replace(",", "") .replace(",", "")
.replace("", "") .replace("", "")
.replace(".", "") .replace(".", "")
.replace("", "") .replace("", "")
) )
if msg: if msg:
if "红包" not in msg: if "红包" not in msg:
return return
flag1 = True
flag2 = True
open_flag1 = True
open_flag2 = True
try: try:
if festive_redbag_data[event.group_id]["user_id"]: await open_.send(
if event.user_id in festive_redbag_data[event.group_id]["open_user"]: image(b64=await get_redbag_img(event.user_id, event.group_id)),
open_flag1 = False at_sender=True,
except KeyError:
open_flag1 = False
flag1 = False
try:
if redbag_data[event.group_id]["user_id"]:
if event.user_id in redbag_data[event.group_id]["open_user"]:
open_flag2 = False
except KeyError:
flag2 = False
if not flag1 and not flag2:
await open_.finish("目前没有红包可以开...", at_sender=True)
if open_flag1 or open_flag2:
try:
await open_.send(
image(b64=await get_redbag_img(event.user_id, event.group_id)),
at_sender=True,
) )
except KeyError: except KeyError:
await open_.finish("真贪心,明明已经开过这个红包了的说...", at_sender=True)
else:
await open_.finish("真贪心,明明已经开过这个红包了的说...", at_sender=True) await open_.finish("真贪心,明明已经开过这个红包了的说...", at_sender=True)
@ -229,19 +195,8 @@ async def _(event: GroupMessageEvent, arg: Message = CommandArg()):
async def _poke_(event: PokeNotifyEvent): async def _poke_(event: PokeNotifyEvent):
global redbag_data, festive_redbag_data global redbag_data, festive_redbag_data
if event.self_id == event.target_id: if event.self_id == event.target_id:
flag1 = True flag = check_on_gold_red(event)
flag2 = True if not flag:
try:
if event.user_id in festive_redbag_data[event.group_id]["open_user"]:
flag1 = False
except KeyError:
flag1 = False
try:
if event.user_id in redbag_data[event.group_id]["open_user"]:
flag2 = False
except KeyError:
flag2 = False
if not flag1 and not flag2:
return return
await poke_.send( await poke_.send(
image(b64=await get_redbag_img(event.user_id, event.group_id)), image(b64=await get_redbag_img(event.user_id, event.group_id)),
@ -331,7 +286,7 @@ async def _(bot: Bot, arg: Message = CommandArg()):
await bot.send_group_msg( await bot.send_group_msg(
group_id=g, group_id=g,
message=f"{NICKNAME}发起了金币红包\n金额:{amount}\n数量:{num}\n" message=f"{NICKNAME}发起了金币红包\n金额:{amount}\n数量:{num}\n"
+ image( + image(
b64=await generate_send_redbag_pic(int(bot.self_id), greetings) b64=await generate_send_redbag_pic(int(bot.self_id), greetings)
), ),
) )
@ -342,13 +297,13 @@ async def _(bot: Bot, arg: Message = CommandArg()):
# 红包数据初始化 # 红包数据初始化
def init_redbag( def init_redbag(
user_id: int, user_id: int,
group_id: int, group_id: int,
nickname: str, nickname: str,
amount: int, amount: int,
num: int, num: int,
bot_self_id: int, bot_self_id: int,
mode: int = 0, mode: int = 0,
): ):
global redbag_data, festive_redbag_data global redbag_data, festive_redbag_data
data = redbag_data if mode == 0 else festive_redbag_data data = redbag_data if mode == 0 else festive_redbag_data
@ -428,3 +383,27 @@ async def end_festive_redbag(bot: Bot, group_id: int):
) )
await bot.send_group_msg(group_id=group_id, message=message) await bot.send_group_msg(group_id=group_id, message=message)
festive_redbag_data[group_id] = {} festive_redbag_data[group_id] = {}
def check_on_gold_red(event) -> bool:
flag1 = True
flag2 = True
try:
if festive_redbag_data[event.group_id]["user_id"]:
if (
event.user_id
in festive_redbag_data[event.group_id]["open_user"]
):
flag1 = False
except KeyError:
flag1 = False
try:
if redbag_data[event.group_id]["user_id"]:
if event.user_id in redbag_data[event.group_id]["open_user"]:
flag2 = False
except KeyError:
flag2 = False
if flag1 or flag2:
return True
else:
return False