mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
commit
eea1be0fc1
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user