2023-05-22 20:56:42 +08:00
|
|
|
|
import random
|
2023-08-21 00:31:18 +08:00
|
|
|
|
import re
|
2023-05-22 20:56:42 +08:00
|
|
|
|
import time
|
|
|
|
|
|
from datetime import datetime, timedelta
|
2023-08-21 00:31:18 +08:00
|
|
|
|
from typing import Dict, List, Optional
|
2023-05-22 20:56:42 +08:00
|
|
|
|
|
|
|
|
|
|
from apscheduler.jobstores.base import JobLookupError
|
2021-06-15 10:57:08 +08:00
|
|
|
|
from nonebot import on_command, on_notice
|
2022-02-19 18:20:19 +08:00
|
|
|
|
from nonebot.adapters.onebot.v11 import (
|
2022-06-07 19:57:34 +08:00
|
|
|
|
ActionFailed,
|
2023-05-22 20:56:42 +08:00
|
|
|
|
Bot,
|
2021-07-30 21:21:51 +08:00
|
|
|
|
GroupMessageEvent,
|
2023-05-22 20:56:42 +08:00
|
|
|
|
Message,
|
2021-07-30 21:21:51 +08:00
|
|
|
|
PokeNotifyEvent,
|
|
|
|
|
|
)
|
2023-05-22 20:56:42 +08:00
|
|
|
|
from nonebot.adapters.onebot.v11.permission import GROUP
|
|
|
|
|
|
from nonebot.matcher import Matcher
|
|
|
|
|
|
from nonebot.message import IgnoredException, run_preprocessor
|
|
|
|
|
|
from nonebot.params import CommandArg
|
|
|
|
|
|
from nonebot.permission import SUPERUSER
|
|
|
|
|
|
from nonebot.rule import to_me
|
|
|
|
|
|
|
|
|
|
|
|
from configs.config import NICKNAME
|
|
|
|
|
|
from configs.path_config import IMAGE_PATH
|
|
|
|
|
|
from services.log import logger
|
2023-08-21 00:31:18 +08:00
|
|
|
|
from utils.depends import AtList, GetConfig
|
|
|
|
|
|
from utils.message_builder import at, image
|
2023-05-22 20:56:42 +08:00
|
|
|
|
from utils.utils import is_number, scheduler
|
|
|
|
|
|
|
2023-08-21 00:31:18 +08:00
|
|
|
|
from .config import FESTIVE_KEY, GroupRedBag, RedBag
|
2021-07-30 21:21:51 +08:00
|
|
|
|
from .data_source import (
|
2023-08-21 00:31:18 +08:00
|
|
|
|
build_open_result_image,
|
2021-07-30 21:21:51 +08:00
|
|
|
|
check_gold,
|
2023-08-21 00:31:18 +08:00
|
|
|
|
end_festive_red_bag,
|
|
|
|
|
|
random_red_bag_background,
|
2021-07-30 21:21:51 +08:00
|
|
|
|
)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
2021-10-03 14:24:07 +08:00
|
|
|
|
__zx_plugin_name__ = "金币红包"
|
|
|
|
|
|
__plugin_usage__ = """
|
|
|
|
|
|
usage:
|
|
|
|
|
|
在群内发送指定金额的红包,拼手气项目
|
|
|
|
|
|
指令:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
塞红包 [金币数] ?[红包数=5] ?[at指定人]: 塞入红包
|
2021-10-03 14:24:07 +08:00
|
|
|
|
开/抢/*戳一戳*: 打开红包
|
|
|
|
|
|
退回: 退回未开完的红包,必须在一分钟后使用
|
|
|
|
|
|
示例:塞红包 1000
|
|
|
|
|
|
示例:塞红包 1000 10
|
|
|
|
|
|
""".strip()
|
2022-01-05 22:32:59 +08:00
|
|
|
|
__plugin_superuser_usage__ = """
|
|
|
|
|
|
usage:
|
|
|
|
|
|
节日全群红包指令
|
|
|
|
|
|
指令:
|
|
|
|
|
|
节日红包 [金额] [数量] ?[祝福语] ?[指定群]
|
|
|
|
|
|
""".strip()
|
2021-10-03 14:24:07 +08:00
|
|
|
|
__plugin_des__ = "运气项目又来了"
|
2022-01-05 22:32:59 +08:00
|
|
|
|
__plugin_cmd__ = [
|
2023-08-21 00:31:18 +08:00
|
|
|
|
"塞红包 [金币数] ?[红包数=5] ?[at指定人]",
|
2022-01-05 22:32:59 +08:00
|
|
|
|
"开/抢",
|
|
|
|
|
|
"退回",
|
|
|
|
|
|
"节日红包 [金额] [数量] ?[祝福语] ?[指定群] [_superuser]",
|
|
|
|
|
|
]
|
2021-10-03 14:24:07 +08:00
|
|
|
|
__plugin_version__ = 0.1
|
|
|
|
|
|
__plugin_author__ = "HibiKier"
|
|
|
|
|
|
__plugin_settings__ = {
|
|
|
|
|
|
"level": 5,
|
|
|
|
|
|
"default_status": True,
|
|
|
|
|
|
"limit_superuser": False,
|
|
|
|
|
|
"cmd": ["金币红包", "塞红包"],
|
|
|
|
|
|
}
|
2023-08-21 00:31:18 +08:00
|
|
|
|
__plugin_cd_limit__ = {"rst": "急什么急什么,待会再发!"}
|
|
|
|
|
|
__plugin_configs__ = {
|
|
|
|
|
|
"DEFAULT_TIMEOUT": {
|
|
|
|
|
|
"value": 600,
|
|
|
|
|
|
"help": "普通红包默认超时时间",
|
|
|
|
|
|
"default_value": 600,
|
|
|
|
|
|
"type": int,
|
|
|
|
|
|
},
|
|
|
|
|
|
"DEFAULT_INTERVAL": {
|
|
|
|
|
|
"value": 60,
|
|
|
|
|
|
"help": "用户发送普通红包最小间隔时间",
|
|
|
|
|
|
"default_value": 60,
|
|
|
|
|
|
"type": int,
|
|
|
|
|
|
},
|
|
|
|
|
|
"RANK_NUM": {
|
|
|
|
|
|
"value": 10,
|
|
|
|
|
|
"help": "结算排行显示前N位",
|
|
|
|
|
|
"default_value": 10,
|
|
|
|
|
|
"type": int,
|
|
|
|
|
|
},
|
|
|
|
|
|
}
|
|
|
|
|
|
# __plugin_resources__ = {"prts": IMAGE_PATH}
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
2023-02-06 02:06:36 +08:00
|
|
|
|
|
|
|
|
|
|
async def rule(event: GroupMessageEvent) -> bool:
|
|
|
|
|
|
return check_on_gold_red(event)
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-08-21 00:31:18 +08:00
|
|
|
|
gold_red_bag = on_command(
|
2021-07-30 21:21:51 +08:00
|
|
|
|
"塞红包", aliases={"金币红包"}, priority=5, block=True, permission=GROUP
|
|
|
|
|
|
)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
2023-05-22 20:56:42 +08:00
|
|
|
|
open_ = on_command(
|
|
|
|
|
|
"开", aliases={"抢"}, priority=5, block=True, permission=GROUP, rule=rule
|
|
|
|
|
|
)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
poke_ = on_notice(priority=6, block=False)
|
|
|
|
|
|
|
2021-07-30 21:21:51 +08:00
|
|
|
|
return_ = on_command("退回", aliases={"退还"}, priority=5, block=True, permission=GROUP)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
2021-07-30 21:21:51 +08:00
|
|
|
|
festive_redbag = on_command(
|
|
|
|
|
|
"节日红包", priority=5, block=True, permission=SUPERUSER, rule=to_me()
|
|
|
|
|
|
)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
2023-08-21 00:31:18 +08:00
|
|
|
|
GROUP_DATA: Dict[int, GroupRedBag] = {}
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
2023-08-21 00:31:18 +08:00
|
|
|
|
PATTERN = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~,。;‘、"""
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 阻断其他poke
|
2023-08-21 00:31:18 +08:00
|
|
|
|
# @run_preprocessor
|
|
|
|
|
|
# async def _(
|
|
|
|
|
|
# matcher: Matcher,
|
|
|
|
|
|
# event: PokeNotifyEvent,
|
|
|
|
|
|
# ):
|
|
|
|
|
|
# try:
|
|
|
|
|
|
# if matcher.type == "notice" and event.self_id == event.target_id:
|
|
|
|
|
|
# flag = check_on_gold_red(event)
|
|
|
|
|
|
# if flag:
|
|
|
|
|
|
# if matcher.plugin_name == "poke":
|
|
|
|
|
|
# raise IgnoredException("目前正在抢红包...")
|
|
|
|
|
|
# else:
|
|
|
|
|
|
# if matcher.plugin_name == "gold_red_bag":
|
|
|
|
|
|
# raise IgnoredException("目前没有红包...")
|
|
|
|
|
|
# except AttributeError:
|
|
|
|
|
|
# pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@gold_red_bag.handle()
|
2023-05-22 20:56:42 +08:00
|
|
|
|
async def _(
|
2023-08-21 00:31:18 +08:00
|
|
|
|
bot: Bot,
|
|
|
|
|
|
event: GroupMessageEvent,
|
|
|
|
|
|
arg: Message = CommandArg(),
|
|
|
|
|
|
at_list: List[int] = AtList(),
|
|
|
|
|
|
default_interval: int = GetConfig(config="DEFAULT_INTERVAL"),
|
2023-05-22 20:56:42 +08:00
|
|
|
|
):
|
2023-08-21 00:31:18 +08:00
|
|
|
|
group_red_bag: Optional[GroupRedBag] = GROUP_DATA.get(event.group_id)
|
|
|
|
|
|
if not group_red_bag:
|
|
|
|
|
|
group_red_bag = GroupRedBag(event.group_id)
|
|
|
|
|
|
GROUP_DATA[event.group_id] = group_red_bag
|
|
|
|
|
|
# 剩余过期时间
|
|
|
|
|
|
time_remaining = group_red_bag.check_timeout(event.user_id)
|
|
|
|
|
|
if time_remaining != -1:
|
|
|
|
|
|
# 判断用户红包是否存在且是否过时覆盖
|
|
|
|
|
|
if user_red_bag := group_red_bag.get_user_red_bag(event.user_id):
|
|
|
|
|
|
now = time.time()
|
|
|
|
|
|
if now < user_red_bag.start_time + default_interval:
|
|
|
|
|
|
await gold_red_bag.finish(
|
|
|
|
|
|
f"你的红包还没消化完捏...还剩下 {user_red_bag.num - len(user_red_bag.open_user)} 个! 请等待红包领取完毕..."
|
|
|
|
|
|
f"(或等待{time_remaining}秒红包cd)"
|
|
|
|
|
|
)
|
|
|
|
|
|
msg = arg.extract_plain_text().strip().split()
|
|
|
|
|
|
if not msg:
|
|
|
|
|
|
await gold_red_bag.finish("不塞钱发什么红包!")
|
|
|
|
|
|
amount = msg[0]
|
2021-06-15 10:57:08 +08:00
|
|
|
|
if len(msg) == 1:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
flag, tip = await check_gold(str(event.user_id), str(event.group_id), amount)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
if not flag:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
await gold_red_bag.finish(tip, at_sender=True)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
num = 5
|
|
|
|
|
|
else:
|
|
|
|
|
|
num = msg[1]
|
2021-12-16 11:16:28 +08:00
|
|
|
|
if not is_number(num) or int(num) < 1:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
await gold_red_bag.finish("红包个数给我输正确啊!", at_sender=True)
|
|
|
|
|
|
flag, tip = await check_gold(str(event.user_id), str(event.group_id), amount)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
if not flag:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
await gold_red_bag.finish(tip, at_sender=True)
|
2022-01-05 22:32:59 +08:00
|
|
|
|
group_member_num = (await bot.get_group_info(group_id=event.group_id))[
|
|
|
|
|
|
"member_count"
|
|
|
|
|
|
]
|
2021-06-15 10:57:08 +08:00
|
|
|
|
num = int(num)
|
2021-10-03 14:24:07 +08:00
|
|
|
|
if num > group_member_num:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
await gold_red_bag.send("你发的红包数量也太多了,已经为你修改成与本群人数相同的红包数量...")
|
2021-10-03 14:24:07 +08:00
|
|
|
|
num = group_member_num
|
2022-02-19 18:20:19 +08:00
|
|
|
|
nickname = event.sender.card or event.sender.nickname
|
2023-08-21 00:31:18 +08:00
|
|
|
|
await group_red_bag.add_red_bag(
|
|
|
|
|
|
f"{nickname}的红包",
|
|
|
|
|
|
int(amount),
|
|
|
|
|
|
1 if at_list else num,
|
|
|
|
|
|
nickname or "",
|
2023-05-22 20:56:42 +08:00
|
|
|
|
str(event.user_id),
|
2023-08-21 00:31:18 +08:00
|
|
|
|
assigner=str(at_list[0]) if at_list else None,
|
|
|
|
|
|
)
|
|
|
|
|
|
await gold_red_bag.send(
|
|
|
|
|
|
f"{nickname}发起了金币红包\n金额: {amount}\n数量: {num}\n"
|
|
|
|
|
|
+ image(await random_red_bag_background(event.user_id))
|
2021-07-30 21:21:51 +08:00
|
|
|
|
)
|
2023-05-22 20:56:42 +08:00
|
|
|
|
logger.info(f"塞入 {num} 个红包,共 {amount} 金币", "金币红包", event.user_id, event.group_id)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@open_.handle()
|
2023-08-21 00:31:18 +08:00
|
|
|
|
async def _(
|
|
|
|
|
|
event: GroupMessageEvent,
|
|
|
|
|
|
arg: Message = CommandArg(),
|
|
|
|
|
|
rank_num: int = GetConfig(config="RANK_NUM"),
|
|
|
|
|
|
):
|
|
|
|
|
|
if msg := arg.extract_plain_text().strip():
|
|
|
|
|
|
msg = re.sub(PATTERN, "", msg)
|
2022-01-05 22:32:59 +08:00
|
|
|
|
if "红包" not in msg:
|
2021-06-21 09:53:33 +08:00
|
|
|
|
return
|
2023-08-21 00:31:18 +08:00
|
|
|
|
group_red_bag: Optional[GroupRedBag] = GROUP_DATA.get(event.group_id)
|
|
|
|
|
|
if group_red_bag:
|
|
|
|
|
|
open_data, settlement_list = await group_red_bag.open(event.user_id)
|
|
|
|
|
|
send_msg = ""
|
|
|
|
|
|
for _, item in open_data.items():
|
|
|
|
|
|
amount, red_bag = item
|
|
|
|
|
|
result_image = await build_open_result_image(red_bag, event.user_id, amount)
|
|
|
|
|
|
send_msg += (
|
|
|
|
|
|
f"开启了 {red_bag.promoter} 的红包, 获取 {amount} 个金币\n"
|
|
|
|
|
|
+ image(result_image)
|
|
|
|
|
|
+ "\n"
|
|
|
|
|
|
)
|
|
|
|
|
|
logger.info(
|
|
|
|
|
|
f"抢到了 {red_bag.promoter}({red_bag.promoter_id}) 的红包,获取了{amount}个金币",
|
|
|
|
|
|
"开红包",
|
|
|
|
|
|
event.user_id,
|
|
|
|
|
|
event.group_id,
|
|
|
|
|
|
)
|
|
|
|
|
|
send_msg = send_msg[:-1] if send_msg else "没有红包给你开!"
|
|
|
|
|
|
await open_.send(send_msg, at_sender=True)
|
|
|
|
|
|
if settlement_list:
|
|
|
|
|
|
for red_bag in settlement_list:
|
|
|
|
|
|
await open_.send(
|
|
|
|
|
|
f"{red_bag.name}已结算\n"
|
|
|
|
|
|
+ image(await red_bag.build_amount_rank(rank_num))
|
|
|
|
|
|
)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
2023-08-21 00:31:18 +08:00
|
|
|
|
# @poke_.handle()
|
|
|
|
|
|
# async def _poke_(event: PokeNotifyEvent):
|
|
|
|
|
|
# group_id = getattr(event, "group_id", None)
|
|
|
|
|
|
# if event.self_id == event.target_id and group_id:
|
|
|
|
|
|
# is_open = check_on_gold_red(event)
|
|
|
|
|
|
# if not is_open:
|
|
|
|
|
|
# return
|
|
|
|
|
|
# group_red_bag: Optional[GroupRedBag] = GROUP_DATA.get(group_id)
|
|
|
|
|
|
# if group_red_bag:
|
|
|
|
|
|
# open_data, settlement_list = await group_red_bag.open(event.user_id)
|
|
|
|
|
|
# send_msg = ""
|
|
|
|
|
|
# for _, item in open_data.items():
|
|
|
|
|
|
# amount, red_bag = item
|
|
|
|
|
|
# result_image = await build_open_result_image(
|
|
|
|
|
|
# red_bag, event.user_id, amount
|
|
|
|
|
|
# )
|
|
|
|
|
|
# send_msg += (
|
|
|
|
|
|
# f"开启了 {red_bag.promoter} 的红包, 获取 {amount} 个金币\n"
|
|
|
|
|
|
# + image(result_image)
|
|
|
|
|
|
# + "\n"
|
|
|
|
|
|
# )
|
|
|
|
|
|
# logger.info(
|
|
|
|
|
|
# f"抢到了 {red_bag.promoter}({red_bag.promoter_id}) 的红包,获取了{amount}个金币",
|
|
|
|
|
|
# "开红包",
|
|
|
|
|
|
# event.user_id,
|
|
|
|
|
|
# event.group_id,
|
|
|
|
|
|
# )
|
|
|
|
|
|
# if send_msg:
|
|
|
|
|
|
# await open_.send(send_msg, at_sender=True)
|
|
|
|
|
|
# if settlement_list:
|
|
|
|
|
|
# for red_bag in settlement_list:
|
|
|
|
|
|
# await open_.send(
|
|
|
|
|
|
# f"{red_bag.name}已结算\n"
|
|
|
|
|
|
# + image(await red_bag.build_amount_rank())
|
|
|
|
|
|
# )
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@return_.handle()
|
2023-08-21 00:31:18 +08:00
|
|
|
|
async def _(
|
|
|
|
|
|
event: GroupMessageEvent,
|
|
|
|
|
|
default_interval: int = GetConfig(config="DEFAULT_INTERVAL"),
|
|
|
|
|
|
rank_num: int = GetConfig(config="RANK_NUM"),
|
|
|
|
|
|
):
|
|
|
|
|
|
group_red_bag: GroupRedBag = GROUP_DATA[event.group_id]
|
|
|
|
|
|
if group_red_bag:
|
|
|
|
|
|
if user_red_bag := group_red_bag.get_user_red_bag(event.user_id):
|
|
|
|
|
|
now = time.time()
|
|
|
|
|
|
if now - user_red_bag.start_time < default_interval:
|
|
|
|
|
|
await return_.finish(
|
|
|
|
|
|
f"你的红包还没有过时, 在 {int(default_interval - now + user_red_bag.start_time)} "
|
|
|
|
|
|
f"秒后可以退回...",
|
|
|
|
|
|
at_sender=True,
|
|
|
|
|
|
)
|
|
|
|
|
|
user_red_bag = group_red_bag.get_user_red_bag(event.user_id)
|
|
|
|
|
|
if user_red_bag and (
|
|
|
|
|
|
return_amount := await group_red_bag.settlement(event.user_id)
|
|
|
|
|
|
):
|
|
|
|
|
|
logger.info(
|
|
|
|
|
|
f"退回了红包 {return_amount} 金币", "红包退回", event.user_id, event.group_id
|
|
|
|
|
|
)
|
|
|
|
|
|
await return_.send(
|
|
|
|
|
|
f"已成功退还了 "
|
|
|
|
|
|
f"{return_amount} 金币\n"
|
|
|
|
|
|
+ image(await user_red_bag.build_amount_rank(rank_num)),
|
|
|
|
|
|
at_sender=True,
|
|
|
|
|
|
)
|
|
|
|
|
|
await return_.send("目前没有红包可以退回...", at_sender=True)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@festive_redbag.handle()
|
2022-02-19 18:20:19 +08:00
|
|
|
|
async def _(bot: Bot, arg: Message = CommandArg()):
|
2021-06-15 10:57:08 +08:00
|
|
|
|
global redbag_data
|
2022-02-19 18:20:19 +08:00
|
|
|
|
msg = arg.extract_plain_text().strip()
|
2021-06-15 10:57:08 +08:00
|
|
|
|
if msg:
|
2021-07-30 21:21:51 +08:00
|
|
|
|
msg = msg.split()
|
2021-06-15 10:57:08 +08:00
|
|
|
|
amount = 0
|
|
|
|
|
|
num = 0
|
2021-07-30 21:21:51 +08:00
|
|
|
|
greetings = "恭喜发财 大吉大利"
|
2021-06-15 10:57:08 +08:00
|
|
|
|
gl = []
|
|
|
|
|
|
if (lens := len(msg)) < 2:
|
2021-07-30 21:21:51 +08:00
|
|
|
|
await festive_redbag.finish("参数不足,格式:节日红包 [金额] [数量] [祝福语](可省) [指定群](可省)")
|
2021-06-15 10:57:08 +08:00
|
|
|
|
if lens > 1:
|
|
|
|
|
|
if not is_number(msg[0]):
|
2021-07-30 21:21:51 +08:00
|
|
|
|
await festive_redbag.finish("金额必须要是数字!", at_sender=True)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
amount = int(msg[0])
|
|
|
|
|
|
if not is_number(msg[1]):
|
2021-07-30 21:21:51 +08:00
|
|
|
|
await festive_redbag.finish("数量必须要是数字!", at_sender=True)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
num = int(msg[1])
|
|
|
|
|
|
if lens > 2:
|
|
|
|
|
|
greetings = msg[2]
|
|
|
|
|
|
if lens > 3:
|
|
|
|
|
|
for i in range(3, lens):
|
|
|
|
|
|
if not is_number(msg[i]):
|
2021-07-30 21:21:51 +08:00
|
|
|
|
await festive_redbag.finish("指定的群号必须要是数字啊!", at_sender=True)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
gl.append(int(msg[i]))
|
|
|
|
|
|
if not gl:
|
2022-02-19 18:20:19 +08:00
|
|
|
|
gl = await bot.get_group_list()
|
2021-07-30 21:21:51 +08:00
|
|
|
|
gl = [g["group_id"] for g in gl]
|
2021-06-15 10:57:08 +08:00
|
|
|
|
for g in gl:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
group_red_bag: Optional[GroupRedBag] = GROUP_DATA.get(g)
|
|
|
|
|
|
if not group_red_bag:
|
|
|
|
|
|
group_red_bag = GroupRedBag(g)
|
|
|
|
|
|
GROUP_DATA[g] = group_red_bag
|
2021-10-03 14:24:07 +08:00
|
|
|
|
try:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
scheduler.remove_job(f"{FESTIVE_KEY}_{g}")
|
|
|
|
|
|
await end_festive_red_bag(bot, group_red_bag)
|
2021-10-03 14:24:07 +08:00
|
|
|
|
except JobLookupError:
|
|
|
|
|
|
pass
|
2023-08-21 00:31:18 +08:00
|
|
|
|
await group_red_bag.add_red_bag(
|
|
|
|
|
|
f"{NICKNAME}的红包", int(amount), num, NICKNAME, FESTIVE_KEY, True
|
|
|
|
|
|
)
|
2021-07-30 21:21:51 +08:00
|
|
|
|
scheduler.add_job(
|
2023-08-21 00:31:18 +08:00
|
|
|
|
end_festive_red_bag,
|
2021-07-30 21:21:51 +08:00
|
|
|
|
"date",
|
2023-08-21 00:31:18 +08:00
|
|
|
|
# run_date=(datetime.now() + timedelta(hours=24)).replace(microsecond=0),
|
|
|
|
|
|
run_date=(datetime.now() + timedelta(seconds=30)).replace(
|
|
|
|
|
|
microsecond=0
|
|
|
|
|
|
),
|
|
|
|
|
|
id=f"{FESTIVE_KEY}_{g}",
|
|
|
|
|
|
args=[bot, group_red_bag],
|
2021-07-30 21:21:51 +08:00
|
|
|
|
)
|
2021-06-15 10:57:08 +08:00
|
|
|
|
try:
|
2021-07-30 21:21:51 +08:00
|
|
|
|
await bot.send_group_msg(
|
|
|
|
|
|
group_id=g,
|
2021-08-17 23:17:08 +08:00
|
|
|
|
message=f"{NICKNAME}发起了金币红包\n金额:{amount}\n数量:{num}\n"
|
2023-08-21 00:31:18 +08:00
|
|
|
|
+ image(await random_red_bag_background(bot.self_id, greetings)),
|
2021-07-30 21:21:51 +08:00
|
|
|
|
)
|
2023-08-21 00:31:18 +08:00
|
|
|
|
logger.debug("节日红包图片信息发送成功...", "节日红包", group_id=g)
|
2021-11-23 21:44:59 +08:00
|
|
|
|
except ActionFailed:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
logger.warning(f"节日红包图片信息发送失败...", "节日红包", group_id=g)
|
2023-02-06 02:06:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def check_on_gold_red(event) -> bool:
|
2023-08-21 00:31:18 +08:00
|
|
|
|
if group_red_bag := GROUP_DATA.get(event.group_id):
|
|
|
|
|
|
return group_red_bag.check_open(event.user_id)
|
|
|
|
|
|
return False
|