mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-08 21:30:01 +08:00
refactor code
This commit is contained in:
+29
-26
@@ -9,31 +9,31 @@ from nonebot.adapters.cqhttp.permission import GROUP
|
||||
from models.goods_info import GoodsInfo
|
||||
|
||||
|
||||
__plugin_name__ = '商店购买'
|
||||
__plugin_usage__ = '格式:购买 [名称或序号] [数量](默认1)\n\t示例:购买 好感双倍加持卡Ⅰ\n\t示例:购买 1 4'
|
||||
__plugin_name__ = "商店购买"
|
||||
__plugin_usage__ = "格式:购买 [名称或序号] [数量](默认1)\n\t示例:购买 好感双倍加持卡Ⅰ\n\t示例:购买 1 4"
|
||||
|
||||
|
||||
buy = on_command("购买", aliases={'购买道具'}, priority=5, block=True, permission=GROUP)
|
||||
buy = on_command("购买", aliases={"购买道具"}, priority=5, block=True, permission=GROUP)
|
||||
|
||||
|
||||
@buy.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
if get_message_text(event.json()) in ['神秘药水']:
|
||||
if get_message_text(event.json()) in ["神秘药水"]:
|
||||
await buy.finish("你们看看就好啦,这是不可能卖给你们的~", at_sender=True)
|
||||
goods_lst = await GoodsInfo.get_all_goods()
|
||||
goods_name_lst = [x.goods_name for x in goods_lst]
|
||||
msg = get_message_text(event.json()).strip().split(' ')
|
||||
msg = get_message_text(event.json()).strip().split(" ")
|
||||
num = 1
|
||||
if len(msg) > 1:
|
||||
if is_number(msg[1]):
|
||||
num = int(msg[1])
|
||||
else:
|
||||
await buy.finish('购买的数量要是数字!', at_sender=True)
|
||||
await buy.finish("购买的数量要是数字!", at_sender=True)
|
||||
# print(msg, num)
|
||||
if is_number(msg[0]):
|
||||
msg = int(msg[0])
|
||||
if msg > len(goods_lst) or msg < 1:
|
||||
await buy.finish('请输入正确的商品id!', at_sender=True)
|
||||
await buy.finish("请输入正确的商品id!", at_sender=True)
|
||||
goods = goods_lst[msg - 1]
|
||||
else:
|
||||
if msg[0] in goods_name_lst:
|
||||
@@ -42,27 +42,30 @@ async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
goods = goods_lst[i]
|
||||
break
|
||||
else:
|
||||
await buy.finish('请输入正确的商品名称!')
|
||||
await buy.finish("请输入正确的商品名称!")
|
||||
else:
|
||||
await buy.finish('请输入正确的商品名称!', at_sender=True)
|
||||
await buy.finish("请输入正确的商品名称!", at_sender=True)
|
||||
async with db.transaction():
|
||||
if (await BagUser.get_gold(event.user_id, event.group_id)) < goods.goods_price * num:
|
||||
await buy.finish('您的金币好像不太够哦', at_sender=True)
|
||||
if await BagUser.spend_gold(event.user_id, event.group_id, goods.goods_price * num):
|
||||
if (
|
||||
await BagUser.get_gold(event.user_id, event.group_id)
|
||||
) < goods.goods_price * num:
|
||||
await buy.finish("您的金币好像不太够哦", at_sender=True)
|
||||
if await BagUser.spend_gold(
|
||||
event.user_id, event.group_id, goods.goods_price * num
|
||||
):
|
||||
for _ in range(num):
|
||||
await BagUser.add_props(event.user_id, event.group_id, goods.goods_name)
|
||||
await buy.send(f'花费 {goods.goods_price*num} 金币购买 {goods.goods_name} ×{num} 成功!', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} '
|
||||
f'花费 {goods.goods_price*num} 金币购买 {goods.goods_name} ×{num} 成功!')
|
||||
await buy.send(
|
||||
f"花费 {goods.goods_price*num} 金币购买 {goods.goods_name} ×{num} 成功!",
|
||||
at_sender=True,
|
||||
)
|
||||
logger.info(
|
||||
f"USER {event.user_id} GROUP {event.group_id} "
|
||||
f"花费 {goods.goods_price*num} 金币购买 {goods.goods_name} ×{num} 成功!"
|
||||
)
|
||||
else:
|
||||
await buy.send(f'{goods.goods_name} 购买失败!', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} '
|
||||
f'花费 {goods.goods_price*num} 金币购买 {goods.goods_name} ×{num} 失败!')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
await buy.send(f"{goods.goods_name} 购买失败!", at_sender=True)
|
||||
logger.info(
|
||||
f"USER {event.user_id} GROUP {event.group_id} "
|
||||
f"花费 {goods.goods_price*num} 金币购买 {goods.goods_name} ×{num} 失败!"
|
||||
)
|
||||
|
||||
@@ -8,7 +8,7 @@ from models.bag_user import BagUser
|
||||
|
||||
my_gold = on_command("我的金币", priority=5, block=True, permission=GROUP)
|
||||
|
||||
gold_rank = on_command('金币排行', priority=5, block=True, permission=GROUP)
|
||||
gold_rank = on_command("金币排行", priority=5, block=True, permission=GROUP)
|
||||
|
||||
|
||||
@my_gold.handle()
|
||||
@@ -18,11 +18,9 @@ async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
|
||||
@gold_rank.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
users = await BagUser.get_user_all(event.group_id)
|
||||
all_user_data = [user.gold for user in users]
|
||||
await gold_rank.finish(await init_rank(users, all_user_data, event.group_id))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
all_users = await BagUser.get_all_users(event.group_id)
|
||||
all_user_id = [user.qq for user in all_users]
|
||||
all_user_data = [user.gold for user in all_users]
|
||||
await gold_rank.finish(
|
||||
"金币排行:\n" + await init_rank(all_user_id, all_user_data, event.group_id)
|
||||
)
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
from nonebot import on_command, on_notice
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, PokeNotifyEvent, MessageEvent
|
||||
from nonebot.adapters.cqhttp import (
|
||||
Bot,
|
||||
GroupMessageEvent,
|
||||
PokeNotifyEvent,
|
||||
MessageEvent,
|
||||
)
|
||||
from nonebot.typing import T_State
|
||||
from .data_source import check_gold, generate_send_redbag_pic, open_redbag, generate_open_redbag_pic, return_gold
|
||||
from .data_source import (
|
||||
check_gold,
|
||||
generate_send_redbag_pic,
|
||||
open_redbag,
|
||||
generate_open_redbag_pic,
|
||||
return_gold,
|
||||
)
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
from nonebot.message import run_preprocessor, IgnoredException
|
||||
from nonebot.matcher import Matcher
|
||||
from utils.utils import get_message_text, is_number, scheduler
|
||||
from utils.init_result import image
|
||||
from utils.message_builder import image
|
||||
from services.log import logger
|
||||
from nonebot.permission import SUPERUSER
|
||||
from nonebot.rule import to_me
|
||||
@@ -15,24 +26,30 @@ import random
|
||||
import time
|
||||
|
||||
|
||||
__plugin_name__ = '金币红包'
|
||||
__plugin_name__ = "金币红包"
|
||||
|
||||
__plugin_usage__ = '金币红包帮助:\n' \
|
||||
'\t塞红包 [金币数] [红包个数](默认5)\n' \
|
||||
'示例:\n' \
|
||||
'\t塞红包 500 5\n' \
|
||||
'抢红包 --> 戳一戳,开\n' \
|
||||
'退还剩余红包 --> 退还'
|
||||
__plugin_usage__ = (
|
||||
"金币红包帮助:\n"
|
||||
"\t塞红包 [金币数] [红包个数](默认5)\n"
|
||||
"示例:\n"
|
||||
"\t塞红包 500 5\n"
|
||||
"抢红包 --> 戳一戳,开\n"
|
||||
"退还剩余红包 --> 退还"
|
||||
)
|
||||
|
||||
gold_redbag = on_command('塞红包', aliases={'金币红包'}, priority=5, block=True, permission=GROUP)
|
||||
gold_redbag = on_command(
|
||||
"塞红包", 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)
|
||||
|
||||
poke_ = on_notice(priority=6, block=False)
|
||||
|
||||
return_ = on_command('退回', aliases={'退还'}, priority=5, block=True, permission=GROUP)
|
||||
return_ = on_command("退回", aliases={"退还"}, priority=5, block=True, permission=GROUP)
|
||||
|
||||
festive_redbag = on_command('节日红包', priority=5, block=True, permission=SUPERUSER, rule=to_me())
|
||||
festive_redbag = on_command(
|
||||
"节日红包", priority=5, block=True, permission=SUPERUSER, rule=to_me()
|
||||
)
|
||||
|
||||
redbag_data = {}
|
||||
|
||||
@@ -43,27 +60,30 @@ festive_redbag_data = {}
|
||||
@run_preprocessor
|
||||
async def _(matcher: Matcher, bot: Bot, event: PokeNotifyEvent, state: T_State):
|
||||
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
|
||||
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']:
|
||||
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']:
|
||||
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.module == 'poke':
|
||||
raise IgnoredException('目前正在抢红包...')
|
||||
if matcher.module == "poke":
|
||||
raise IgnoredException("目前正在抢红包...")
|
||||
else:
|
||||
if matcher.module == 'gold_redbag':
|
||||
raise IgnoredException('目前没有红包...')
|
||||
if matcher.module == "gold_redbag":
|
||||
raise IgnoredException("目前没有红包...")
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
@@ -72,18 +92,25 @@ async def _(matcher: Matcher, bot: Bot, event: PokeNotifyEvent, state: T_State):
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
global redbag_data, festive_redbag_data
|
||||
try:
|
||||
if time.time() - redbag_data[event.group_id]['time'] > 60:
|
||||
amount = redbag_data[event.group_id]['amount'] - redbag_data[event.group_id]['open_amount']
|
||||
await gold_redbag.send(f'{redbag_data[event.group_id]["nickname"]}的红包过时未开完,退还{amount}金币...')
|
||||
if time.time() - redbag_data[event.group_id]["time"] > 60:
|
||||
amount = (
|
||||
redbag_data[event.group_id]["amount"]
|
||||
- redbag_data[event.group_id]["open_amount"]
|
||||
)
|
||||
await gold_redbag.send(
|
||||
f'{redbag_data[event.group_id]["nickname"]}的红包过时未开完,退还{amount}金币...'
|
||||
)
|
||||
redbag_data[event.group_id] = {}
|
||||
else:
|
||||
await gold_redbag.finish(f'目前 {redbag_data[event.group_id]["nickname"]} 的红包还没有开完噢,'
|
||||
f'还剩下 {len(redbag_data[event.group_id]["redbag"])} 个红包!'
|
||||
f'(或等待{str(60 - time.time() + redbag_data[event.group_id]["time"])[:2]}秒红包过时)')
|
||||
await gold_redbag.finish(
|
||||
f'目前 {redbag_data[event.group_id]["nickname"]} 的红包还没有开完噢,'
|
||||
f'还剩下 {len(redbag_data[event.group_id]["redbag"])} 个红包!'
|
||||
f'(或等待{str(60 - time.time() + redbag_data[event.group_id]["time"])[:2]}秒红包过时)'
|
||||
)
|
||||
except KeyError:
|
||||
pass
|
||||
msg = get_message_text(event.json())
|
||||
msg = msg.split(' ')
|
||||
msg = msg.split(" ")
|
||||
if len(msg) == 1:
|
||||
flag, amount = await check_gold(event.user_id, event.group_id, msg[0])
|
||||
if not flag:
|
||||
@@ -96,52 +123,72 @@ async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
if not flag:
|
||||
await gold_redbag.finish(amount, at_sender=True)
|
||||
if not is_number(num):
|
||||
await gold_redbag.finish('红包个数给我输正确啊!', at_sender=True)
|
||||
await gold_redbag.finish("红包个数给我输正确啊!", at_sender=True)
|
||||
num = int(num)
|
||||
nickname = event.sender.card if event.sender.card else event.sender.nickname
|
||||
flag, result = init_redbag(event.user_id, event.group_id, nickname, amount, num, int(bot.self_id))
|
||||
flag, result = init_redbag(
|
||||
event.user_id, event.group_id, nickname, amount, num, int(bot.self_id)
|
||||
)
|
||||
if not flag:
|
||||
await gold_redbag.finish(result, at_sender=True)
|
||||
else:
|
||||
await gold_redbag.send(f'{nickname}发起了金币红包\n金额:{amount}\n数量:{num}\n' +
|
||||
image(b64=await generate_send_redbag_pic(redbag_data[event.group_id]['user_id'])))
|
||||
logger.info(f"USER {event.user_id} GROUP {event.group_id} 塞入 {num} 个红包,共 {amount} 金币")
|
||||
await gold_redbag.send(
|
||||
f"{nickname}发起了金币红包\n金额:{amount}\n数量:{num}\n"
|
||||
+ image(
|
||||
b64=await generate_send_redbag_pic(
|
||||
redbag_data[event.group_id]["user_id"]
|
||||
)
|
||||
)
|
||||
)
|
||||
logger.info(
|
||||
f"USER {event.user_id} GROUP {event.group_id} 塞入 {num} 个红包,共 {amount} 金币"
|
||||
)
|
||||
|
||||
|
||||
@open_.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
global redbag_data, festive_redbag_data
|
||||
msg = get_message_text(event.json())
|
||||
msg = msg.replace('!', '').replace('!', '').replace(',', '').replace(',', '').replace('.', '').replace('。', '')
|
||||
msg = (
|
||||
msg.replace("!", "")
|
||||
.replace("!", "")
|
||||
.replace(",", "")
|
||||
.replace(",", "")
|
||||
.replace(".", "")
|
||||
.replace("。", "")
|
||||
)
|
||||
if msg:
|
||||
if msg.find('红包') == -1:
|
||||
if msg.find("红包") == -1:
|
||||
return
|
||||
flag1 = True
|
||||
flag2 = True
|
||||
open_flag1 = True
|
||||
open_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']:
|
||||
if festive_redbag_data[event.group_id]["user_id"]:
|
||||
if event.user_id in festive_redbag_data[event.group_id]["open_user"]:
|
||||
open_flag1 = False
|
||||
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']:
|
||||
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)
|
||||
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)
|
||||
await open_.send(
|
||||
image(b64=await get_redbag_img(event.user_id, event.group_id)),
|
||||
at_sender=True,
|
||||
)
|
||||
except KeyError:
|
||||
await open_.finish('真贪心,明明已经开过这个红包了的说...', at_sender=True)
|
||||
await open_.finish("真贪心,明明已经开过这个红包了的说...", at_sender=True)
|
||||
else:
|
||||
await open_.finish('真贪心,明明已经开过这个红包了的说...', at_sender=True)
|
||||
await open_.finish("真贪心,明明已经开过这个红包了的说...", at_sender=True)
|
||||
|
||||
|
||||
@poke_.handle()
|
||||
@@ -151,39 +198,54 @@ async def _poke_(bot: Bot, event: PokeNotifyEvent, state: T_State):
|
||||
flag1 = True
|
||||
flag2 = True
|
||||
try:
|
||||
if event.user_id in festive_redbag_data[event.group_id]['open_user']:
|
||||
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']:
|
||||
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
|
||||
await poke_.send(image(b64=await get_redbag_img(event.user_id, event.group_id)), at_sender=True)
|
||||
await poke_.send(
|
||||
image(b64=await get_redbag_img(event.user_id, event.group_id)),
|
||||
at_sender=True,
|
||||
)
|
||||
|
||||
|
||||
@return_.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
global redbag_data
|
||||
try:
|
||||
if redbag_data[event.group_id]['user_id'] != event.user_id:
|
||||
await return_.finish('不是你的红包你退回什么!', at_sender=True)
|
||||
if time.time() - redbag_data[event.group_id]['time'] <= 60:
|
||||
await return_.finish(f'你的红包还没有过时,在 {str(60 - time.time() + redbag_data[event.group_id]["time"])[:2]} '
|
||||
f'秒后可以退回..', at_sender=True)
|
||||
await return_gold(event.user_id, event.group_id,
|
||||
redbag_data[event.group_id]['amount'] - redbag_data[event.group_id]['open_amount'])
|
||||
await return_.send(f"已成功退还了 "
|
||||
f"{redbag_data[event.group_id]['amount'] - redbag_data[event.group_id]['open_amount']} "
|
||||
f"金币", at_sender=True)
|
||||
logger.info(f"USER {event.user_id} GROUP {event.group_id} 退回了"
|
||||
f"红包 {redbag_data[event.group_id]['amount'] - redbag_data[event.group_id]['open_amount']} 金币")
|
||||
if redbag_data[event.group_id]["user_id"] != event.user_id:
|
||||
await return_.finish("不是你的红包你退回什么!", at_sender=True)
|
||||
if time.time() - redbag_data[event.group_id]["time"] <= 60:
|
||||
await return_.finish(
|
||||
f'你的红包还没有过时,在 {str(60 - time.time() + redbag_data[event.group_id]["time"])[:2]} '
|
||||
f"秒后可以退回..",
|
||||
at_sender=True,
|
||||
)
|
||||
await return_gold(
|
||||
event.user_id,
|
||||
event.group_id,
|
||||
redbag_data[event.group_id]["amount"]
|
||||
- redbag_data[event.group_id]["open_amount"],
|
||||
)
|
||||
await return_.send(
|
||||
f"已成功退还了 "
|
||||
f"{redbag_data[event.group_id]['amount'] - redbag_data[event.group_id]['open_amount']} "
|
||||
f"金币",
|
||||
at_sender=True,
|
||||
)
|
||||
logger.info(
|
||||
f"USER {event.user_id} GROUP {event.group_id} 退回了"
|
||||
f"红包 {redbag_data[event.group_id]['amount'] - redbag_data[event.group_id]['open_amount']} 金币"
|
||||
)
|
||||
redbag_data[event.group_id] = {}
|
||||
except KeyError:
|
||||
await return_.finish('目前没有红包可以退回...', at_sender=True)
|
||||
await return_.finish("目前没有红包可以退回...", at_sender=True)
|
||||
|
||||
|
||||
@festive_redbag.handle()
|
||||
@@ -191,66 +253,83 @@ async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
global redbag_data
|
||||
msg = get_message_text(event.json())
|
||||
if msg:
|
||||
msg = msg.split(' ')
|
||||
msg = msg.split()
|
||||
amount = 0
|
||||
num = 0
|
||||
greetings = '恭喜发财 大吉大利'
|
||||
greetings = "恭喜发财 大吉大利"
|
||||
gl = []
|
||||
if (lens := len(msg)) < 2:
|
||||
await festive_redbag.finish('参数不足,格式:节日红包 [金额] [数量] [祝福语](可省) [指定群](可省)')
|
||||
await festive_redbag.finish("参数不足,格式:节日红包 [金额] [数量] [祝福语](可省) [指定群](可省)")
|
||||
if lens > 1:
|
||||
if not is_number(msg[0]):
|
||||
await festive_redbag.finish('金额必须要是数字!', at_sender=True)
|
||||
await festive_redbag.finish("金额必须要是数字!", at_sender=True)
|
||||
amount = int(msg[0])
|
||||
if not is_number(msg[1]):
|
||||
await festive_redbag.finish('数量必须要是数字!', at_sender=True)
|
||||
await festive_redbag.finish("数量必须要是数字!", at_sender=True)
|
||||
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]):
|
||||
await festive_redbag.finish('指定的群号必须要是数字啊!', at_sender=True)
|
||||
await festive_redbag.finish("指定的群号必须要是数字啊!", at_sender=True)
|
||||
gl.append(int(msg[i]))
|
||||
if not gl:
|
||||
gl = await bot.get_group_list(self_id=int(bot.self_id))
|
||||
gl = [g['group_id'] for g in gl]
|
||||
gl = [g["group_id"] for g in gl]
|
||||
for g in gl:
|
||||
init_redbag(int(bot.self_id), g, '可爱的小真寻', amount, num, int(bot.self_id), 1)
|
||||
scheduler.add_job(end_festive_redbag, "date",
|
||||
run_date=str(datetime.now() + timedelta(hours=24)).split('.')[0],
|
||||
id=f'festive_redbag_{g}', args=[bot, g])
|
||||
init_redbag(int(bot.self_id), g, "可爱的小真寻", amount, num, int(bot.self_id), 1)
|
||||
scheduler.add_job(
|
||||
end_festive_redbag,
|
||||
"date",
|
||||
run_date=str(datetime.now() + timedelta(hours=24)).split(".")[0],
|
||||
id=f"festive_redbag_{g}",
|
||||
args=[bot, g],
|
||||
)
|
||||
try:
|
||||
await bot.send_group_msg(group_id=g, message=f'可爱的小真寻发起了金币红包\n金额:{amount}\n数量:{num}\n' + image(
|
||||
b64=await generate_send_redbag_pic(int(bot.self_id), greetings)))
|
||||
await bot.send_group_msg(
|
||||
group_id=g,
|
||||
message=f"可爱的小真寻发起了金币红包\n金额:{amount}\n数量:{num}\n"
|
||||
+ image(
|
||||
b64=await generate_send_redbag_pic(int(bot.self_id), greetings)
|
||||
),
|
||||
)
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
|
||||
# 红包数据初始化
|
||||
def init_redbag(user_id: int, group_id: int, nickname: str, amount: int, num: int, bot_self_id: int, mode: int = 0):
|
||||
def init_redbag(
|
||||
user_id: int,
|
||||
group_id: int,
|
||||
nickname: str,
|
||||
amount: int,
|
||||
num: int,
|
||||
bot_self_id: int,
|
||||
mode: int = 0,
|
||||
):
|
||||
global redbag_data, festive_redbag_data
|
||||
data = redbag_data if mode == 0 else festive_redbag_data
|
||||
if not data.get(group_id):
|
||||
data[group_id] = {}
|
||||
try:
|
||||
if data[group_id]['user_id'] and user_id != bot_self_id:
|
||||
if data[group_id]["user_id"] and user_id != bot_self_id:
|
||||
return False, f'{data[group_id]["nickname"]}的红包还没抢完呢...'
|
||||
except KeyError:
|
||||
pass
|
||||
data[group_id]['user_id'] = user_id
|
||||
data[group_id]['nickname'] = nickname
|
||||
data[group_id]['amount'] = amount
|
||||
data[group_id]['num'] = num
|
||||
data[group_id]['open_amount'] = 0
|
||||
data[group_id]['time'] = time.time()
|
||||
data[group_id]['redbag'] = random_redbag(amount, num)
|
||||
data[group_id]['open_user'] = []
|
||||
data[group_id]["user_id"] = user_id
|
||||
data[group_id]["nickname"] = nickname
|
||||
data[group_id]["amount"] = amount
|
||||
data[group_id]["num"] = num
|
||||
data[group_id]["open_amount"] = 0
|
||||
data[group_id]["time"] = time.time()
|
||||
data[group_id]["redbag"] = random_redbag(amount, num)
|
||||
data[group_id]["open_user"] = []
|
||||
if mode == 0:
|
||||
redbag_data = data
|
||||
else:
|
||||
festive_redbag_data = data
|
||||
return True, ''
|
||||
return True, ""
|
||||
|
||||
|
||||
# 随机红包排列
|
||||
@@ -271,19 +350,24 @@ async def get_redbag_img(user_id: int, group_id: int):
|
||||
mode = 0
|
||||
if festive_redbag_data.get(group_id):
|
||||
try:
|
||||
if user_id not in festive_redbag_data[group_id]['open_user']:
|
||||
if user_id not in festive_redbag_data[group_id]["open_user"]:
|
||||
data = festive_redbag_data
|
||||
mode = 1
|
||||
except KeyError:
|
||||
pass
|
||||
amount, data = await open_redbag(user_id, group_id, data)
|
||||
text = f'已领取' \
|
||||
f'{data[group_id]["num"] - len(data[group_id]["redbag"])}' \
|
||||
f'/{data[group_id]["num"]}个,' \
|
||||
f'共{data[group_id]["open_amount"]}/{data[group_id]["amount"]}金币'
|
||||
logger.info(f"USER {user_id} GROUP {group_id} 抢到了 {data[group_id]['user_id']} 的红包,获取了{amount}金币")
|
||||
b64 = await generate_open_redbag_pic(data[group_id]['user_id'],
|
||||
data[group_id]['nickname'], amount, text)
|
||||
text = (
|
||||
f"已领取"
|
||||
f'{data[group_id]["num"] - len(data[group_id]["redbag"])}'
|
||||
f'/{data[group_id]["num"]}个,'
|
||||
f'共{data[group_id]["open_amount"]}/{data[group_id]["amount"]}金币'
|
||||
)
|
||||
logger.info(
|
||||
f"USER {user_id} GROUP {group_id} 抢到了 {data[group_id]['user_id']} 的红包,获取了{amount}金币"
|
||||
)
|
||||
b64 = await generate_open_redbag_pic(
|
||||
data[group_id]["user_id"], data[group_id]["nickname"], amount, text
|
||||
)
|
||||
if data[group_id]["open_amount"] == data[group_id]["amount"]:
|
||||
data[group_id] = {}
|
||||
if mode == 0:
|
||||
@@ -295,10 +379,10 @@ async def get_redbag_img(user_id: int, group_id: int):
|
||||
|
||||
async def end_festive_redbag(bot: Bot, group_id: int):
|
||||
global festive_redbag_data
|
||||
message = f"真寻的节日红包过时了,一共开启了 " \
|
||||
f"{festive_redbag_data[group_id]['num'] - len(festive_redbag_data[group_id]['redbag'])}" \
|
||||
f" 个红包,共 {festive_redbag_data[group_id]['open_amount']} 金币"
|
||||
message = (
|
||||
f"真寻的节日红包过时了,一共开启了 "
|
||||
f"{festive_redbag_data[group_id]['num'] - len(festive_redbag_data[group_id]['redbag'])}"
|
||||
f" 个红包,共 {festive_redbag_data[group_id]['open_amount']} 金币"
|
||||
)
|
||||
await bot.send_group_msg(group_id=group_id, message=message)
|
||||
festive_redbag_data[group_id] = {}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from models.bag_user import BagUser
|
||||
from utils.utils import is_number, get_local_proxy
|
||||
from utils.img_utils import CreateImg
|
||||
from utils.image_utils import CreateImg
|
||||
from utils.user_agent import get_user_agent
|
||||
from configs.path_config import IMAGE_PATH
|
||||
from models.redbag_user import RedbagUser
|
||||
|
||||
@@ -6,7 +6,7 @@ from models.bag_user import BagUser
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
|
||||
|
||||
__plugin_name__ = '商店基础显示'
|
||||
__plugin_name__ = "商店基础显示"
|
||||
|
||||
|
||||
my_props = on_command("我的道具", priority=5, block=True, permission=GROUP)
|
||||
@@ -18,29 +18,18 @@ async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
if props:
|
||||
pname_list = []
|
||||
pnum_list = []
|
||||
rst = ''
|
||||
props = props[:-1].split(',')
|
||||
rst = ""
|
||||
props = props[:-1].split(",")
|
||||
for p in props:
|
||||
if p != '':
|
||||
if p != "":
|
||||
if p in pname_list:
|
||||
pnum_list[pname_list.index(p)] += 1
|
||||
else:
|
||||
pname_list.append(p)
|
||||
pnum_list.append(1)
|
||||
for i in range(len(pname_list)):
|
||||
rst += f'{i+1}.{pname_list[i]}\t×{pnum_list[i]}\n'
|
||||
await my_props.send('\n' + rst[:-1], at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} 查看我的道具')
|
||||
rst += f"{i+1}.{pname_list[i]}\t×{pnum_list[i]}\n"
|
||||
await my_props.send("\n" + rst[:-1], at_sender=True)
|
||||
logger.info(f"USER {event.user_id} GROUP {event.group_id} 查看我的道具")
|
||||
else:
|
||||
await my_props.finish('您的背包里没有任何的道具噢~', at_sender=True)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
await my_props.finish("您的背包里没有任何的道具噢~", at_sender=True)
|
||||
|
||||
@@ -5,36 +5,17 @@ from services.log import logger
|
||||
|
||||
# 重置每日金币
|
||||
@scheduler.scheduled_job(
|
||||
'cron',
|
||||
# year=None,
|
||||
# month=None,
|
||||
# day=None,
|
||||
# week=None,
|
||||
# day_of_week="mon,tue,wed,thu,fri",
|
||||
"cron",
|
||||
hour=0,
|
||||
minute=1,
|
||||
# second=None,
|
||||
# start_date=None,
|
||||
# end_date=None,
|
||||
# timezone=None,
|
||||
)
|
||||
async def _():
|
||||
try:
|
||||
user_list = await BagUser.get_user_all()
|
||||
user_list = await BagUser.get_all_users()
|
||||
for user in user_list:
|
||||
await user.update(
|
||||
get_today_gold=0,
|
||||
spend_today_gold=0,
|
||||
).apply()
|
||||
except Exception as e:
|
||||
logger.error(f'重置每日金币错误 e:{e}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
logger.error(f"重置每日金币错误 e:{e}")
|
||||
|
||||
@@ -2,7 +2,7 @@ from nonebot import on_command
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, MessageEvent
|
||||
from nonebot.typing import T_State
|
||||
from configs.path_config import IMAGE_PATH
|
||||
from utils.init_result import image
|
||||
from utils.message_builder import image
|
||||
from .data_source import create_shop_help, add_goods, del_goods, update_goods
|
||||
from nonebot.permission import SUPERUSER
|
||||
from utils.utils import get_message_text, is_number
|
||||
@@ -11,73 +11,72 @@ import os
|
||||
import time
|
||||
|
||||
|
||||
__plugin_name__ = '商店'
|
||||
__plugin_name__ = "商店"
|
||||
|
||||
|
||||
shop_help = on_command("商店", priority=5, block=True)
|
||||
|
||||
shop_add_goods = on_command('添加商品', priority=5, permission=SUPERUSER, block=True)
|
||||
shop_add_goods = on_command("添加商品", priority=5, permission=SUPERUSER, block=True)
|
||||
|
||||
shop_del_goods = on_command('删除商品', priority=5, permission=SUPERUSER, block=True)
|
||||
shop_del_goods = on_command("删除商品", priority=5, permission=SUPERUSER, block=True)
|
||||
|
||||
shop_update_goods = on_command('修改商品', priority=5, permission=SUPERUSER, block=True)
|
||||
shop_update_goods = on_command("修改商品", priority=5, permission=SUPERUSER, block=True)
|
||||
|
||||
|
||||
@shop_help.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
if not os.path.exists(f'{IMAGE_PATH}/shop_help.png'):
|
||||
if not os.path.exists(f"{IMAGE_PATH}/shop_help.png"):
|
||||
await create_shop_help()
|
||||
await shop_help.send(image('shop_help.png'))
|
||||
await shop_help.send(image("shop_help.png"))
|
||||
|
||||
|
||||
@shop_add_goods.handle()
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
msg = get_message_text(event.json())
|
||||
if msg:
|
||||
msg = msg.split('-')
|
||||
msg = msg.split("-")
|
||||
if len(msg) < 3:
|
||||
await shop_add_goods.finish('商品参数不完全...', at_sender=True)
|
||||
await shop_add_goods.finish("商品参数不完全...", at_sender=True)
|
||||
if not is_number(msg[1]):
|
||||
await shop_add_goods.finish('商品的价格必须是合法数字!', at_sender=True)
|
||||
await shop_add_goods.finish("商品的价格必须是合法数字!", at_sender=True)
|
||||
msg[1] = int(msg[1])
|
||||
if len(msg) > 3:
|
||||
if not is_number(msg[3]):
|
||||
await shop_add_goods.finish('商品的折扣要小数啊!', at_sender=True)
|
||||
await shop_add_goods.finish("商品的折扣要小数啊!", at_sender=True)
|
||||
msg[3] = float(msg[3])
|
||||
if len(msg) > 4:
|
||||
if not is_number(msg[4]):
|
||||
await shop_add_goods.finish('商品的限时时间是要写多少分钟噢!', at_sender=True)
|
||||
await shop_add_goods.finish("商品的限时时间是要写多少分钟噢!", at_sender=True)
|
||||
msg[4] = time.time() + int(msg[4]) * 60
|
||||
if await add_goods(msg):
|
||||
await shop_add_goods.send(f'添加商品 {msg[0]} 成功...', at_sender=True)
|
||||
if os.path.exists(f'{IMAGE_PATH}/shop_help.png'):
|
||||
os.remove(f'{IMAGE_PATH}/shop_help.png')
|
||||
logger.info(f'USER {event.user_id} 上传商品 {msg} 成功')
|
||||
await shop_add_goods.send(f"添加商品 {msg[0]} 成功...", at_sender=True)
|
||||
if os.path.exists(f"{IMAGE_PATH}/shop_help.png"):
|
||||
os.remove(f"{IMAGE_PATH}/shop_help.png")
|
||||
logger.info(f"USER {event.user_id} 上传商品 {msg} 成功")
|
||||
else:
|
||||
await shop_add_goods.send(f'添加商品 {msg[0]} 失败了...', at_sender=True)
|
||||
logger.warning(f'USER {event.user_id} 上传商品 {msg} 失败')
|
||||
await shop_add_goods.send(f"添加商品 {msg[0]} 失败了...", at_sender=True)
|
||||
logger.warning(f"USER {event.user_id} 上传商品 {msg} 失败")
|
||||
|
||||
|
||||
@shop_del_goods.handle()
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
msg = get_message_text(event.json())
|
||||
if msg:
|
||||
name = ''
|
||||
name = ""
|
||||
id_ = 0
|
||||
if is_number(msg):
|
||||
id_ = int(msg)
|
||||
else:
|
||||
name = msg
|
||||
rst, goods_name, code = await del_goods(name, id_)
|
||||
await shop_del_goods.send(rst, at_sender=True)
|
||||
if code == 200:
|
||||
await shop_del_goods.send(f'删除商品 {goods_name} 成功了...', at_sender=True)
|
||||
if os.path.exists(f'{IMAGE_PATH}/shop_help.png'):
|
||||
os.remove(f'{IMAGE_PATH}/shop_help.png')
|
||||
logger.info(f'USER {event.user_id} 删除商品 {goods_name} 成功')
|
||||
await shop_del_goods.send(f"删除商品 {goods_name} 成功了...", at_sender=True)
|
||||
if os.path.exists(f"{IMAGE_PATH}/shop_help.png"):
|
||||
os.remove(f"{IMAGE_PATH}/shop_help.png")
|
||||
logger.info(f"USER {event.user_id} 删除商品 {goods_name} 成功")
|
||||
else:
|
||||
await shop_del_goods.send(f'删除商品 {goods_name} 失败了...', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} 删除商品 {goods_name} 失败')
|
||||
await shop_del_goods.send(f"删除商品 {goods_name} 失败了...", at_sender=True)
|
||||
logger.info(f"USER {event.user_id} 删除商品 {goods_name} 失败")
|
||||
|
||||
|
||||
@shop_update_goods.handle()
|
||||
@@ -85,41 +84,37 @@ async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
msg = get_message_text(event.json())
|
||||
if msg:
|
||||
tmp = {}
|
||||
msg = msg.split('-')
|
||||
msg = msg.split("-")
|
||||
for x in msg:
|
||||
if x.find('name') != -1:
|
||||
tmp['name'] = x.split(' ')[1].strip()
|
||||
elif x.find('price') != -1:
|
||||
tmp['price'] = x.split(' ')[1].strip()
|
||||
if not is_number(tmp['price']):
|
||||
await shop_update_goods.finish('价格必须是数字啊!', at_sender=True)
|
||||
tmp['price'] = int(tmp['price'])
|
||||
elif x.find('des') != -1:
|
||||
tmp['des'] = x.split(' ')[1].strip()
|
||||
elif x.find('discount') != -1:
|
||||
tmp['discount'] = x.split(' ')[1].strip()
|
||||
if not is_number(tmp['discount']):
|
||||
await shop_update_goods.finish('折扣必须是数字啊!', at_sender=True)
|
||||
tmp['discount'] = float(tmp['discount'])
|
||||
elif x.find('time') != -1:
|
||||
tmp['time'] = x.split(' ')[1].strip()
|
||||
if not is_number(tmp['time']):
|
||||
await shop_update_goods.finish('限时时间必须是数字啊!', at_sender=True)
|
||||
tmp['time'] = time.time() + tmp['time'] * 60
|
||||
if not tmp.get('name'):
|
||||
await shop_update_goods.finish('未指定商品名称(序号也可)!', at_sender=True)
|
||||
if is_number(tmp['name']):
|
||||
tmp['name'] = int(tmp['name'])
|
||||
if x.find("name") != -1:
|
||||
tmp["name"] = x.split(" ")[1].strip()
|
||||
elif x.find("price") != -1:
|
||||
tmp["price"] = x.split(" ")[1].strip()
|
||||
if not is_number(tmp["price"]):
|
||||
await shop_update_goods.finish("价格必须是数字啊!", at_sender=True)
|
||||
tmp["price"] = int(tmp["price"])
|
||||
elif x.find("des") != -1:
|
||||
tmp["des"] = x.split(" ")[1].strip()
|
||||
elif x.find("discount") != -1:
|
||||
tmp["discount"] = x.split(" ")[1].strip()
|
||||
if not is_number(tmp["discount"]):
|
||||
await shop_update_goods.finish("折扣必须是数字啊!", at_sender=True)
|
||||
tmp["discount"] = float(tmp["discount"])
|
||||
elif x.find("time") != -1:
|
||||
tmp["time"] = x.split(" ")[1].strip()
|
||||
if not is_number(tmp["time"]):
|
||||
await shop_update_goods.finish("限时时间必须是数字啊!", at_sender=True)
|
||||
tmp["time"] = time.time() + tmp["time"] * 60
|
||||
if not tmp.get("name"):
|
||||
await shop_update_goods.finish("未指定商品名称(序号也可)!", at_sender=True)
|
||||
if is_number(tmp["name"]):
|
||||
tmp["name"] = int(tmp["name"])
|
||||
flag, name, text = await update_goods(tmp)
|
||||
if flag:
|
||||
await shop_update_goods.send(f'修改商品 {name} 成功了...\n{text}', at_sender=True)
|
||||
if os.path.exists(f'{IMAGE_PATH}/shop_help.png'):
|
||||
os.remove(f'{IMAGE_PATH}/shop_help.png')
|
||||
logger.info(f'USER {event.user_id} 修改商品 {name} 数据 {tmp} 成功')
|
||||
await shop_update_goods.send(f"修改商品 {name} 成功了...\n{text}", at_sender=True)
|
||||
if os.path.exists(f"{IMAGE_PATH}/shop_help.png"):
|
||||
os.remove(f"{IMAGE_PATH}/shop_help.png")
|
||||
logger.info(f"USER {event.user_id} 修改商品 {name} 数据 {tmp} 成功")
|
||||
else:
|
||||
await shop_update_goods.send(f'修改商品 {name} 失败了...', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} 修改商品 {name} 数据 {tmp} 失败')
|
||||
|
||||
|
||||
|
||||
|
||||
await shop_update_goods.send(f"修改商品 {name} 失败了...", at_sender=True)
|
||||
logger.info(f"USER {event.user_id} 修改商品 {name} 数据 {tmp} 失败")
|
||||
|
||||
@@ -1,99 +1,123 @@
|
||||
from models.goods_info import GoodsInfo
|
||||
from utils.img_utils import CreateImg
|
||||
from utils.image_utils import CreateImg
|
||||
from utils.utils import is_number
|
||||
from configs.path_config import IMAGE_PATH
|
||||
from configs.config import IMPORT_DEFAULT_SHOP_GOODS
|
||||
from nonebot import Driver
|
||||
import nonebot
|
||||
import time
|
||||
|
||||
|
||||
driver: Driver = nonebot.get_driver()
|
||||
|
||||
|
||||
# 导入内置商品
|
||||
@driver.on_startup
|
||||
async def init_default_shop_goods():
|
||||
if IMPORT_DEFAULT_SHOP_GOODS:
|
||||
await add_goods(["好感度双倍加持卡Ⅰ", 30, "下次签到双倍好感度概率 + 10%(谁才是真命天子?)(同类商品将覆盖)"])
|
||||
await add_goods(["好感度双倍加持卡Ⅱ", 150, "下次签到双倍好感度概率 + 20%(平平庸庸)(同类商品将覆盖)"])
|
||||
await add_goods(["好感度双倍加持卡Ⅲ", 250, "下次签到双倍好感度概率 + 30%(金币才是真命天子!)(同类商品将覆盖)"])
|
||||
|
||||
|
||||
# 创建商店界面
|
||||
async def create_shop_help():
|
||||
goods_lst = await GoodsInfo.get_all_goods()
|
||||
tmp = ''
|
||||
tmp = ""
|
||||
idx = 1
|
||||
for goods in goods_lst:
|
||||
tmp += f'{idx}.{goods.goods_name}\t\t售价:{goods.goods_price}金币\n' \
|
||||
f'\t\t{goods.goods_description}\n'
|
||||
tmp += (
|
||||
f"{idx}.{goods.goods_name}\t\t售价:{goods.goods_price}金币\n"
|
||||
f"\t\t{goods.goods_description}\n"
|
||||
)
|
||||
idx += 1
|
||||
w = 1000
|
||||
h = 400 + len(goods_lst) * 40
|
||||
h = 1000 if h < 1000 else h
|
||||
shop_logo = CreateImg(100, 100, background=f'{IMAGE_PATH}/other/shop_text.png')
|
||||
shop_logo = CreateImg(100, 100, background=f"{IMAGE_PATH}/other/shop_text.png")
|
||||
shop = CreateImg(w, h, font_size=20)
|
||||
zhenxun_img = CreateImg(525, 581, background=f'{IMAGE_PATH}/zhenxun/toukan_2.png')
|
||||
zhenxun_img = CreateImg(525, 581, background=f"{IMAGE_PATH}/zhenxun/toukan_2.png")
|
||||
shop.paste(zhenxun_img, (780, 100))
|
||||
shop.paste(shop_logo, (450, 30), True)
|
||||
shop.text((int((1000 - shop.getsize('注【通过 序号 或者 商品名称 购买】')[0]) / 2), 170), '注【通过 序号 或者 商品名称 购买】')
|
||||
shop.text(
|
||||
(int((1000 - shop.getsize("注【通过 序号 或者 商品名称 购买】")[0]) / 2), 170),
|
||||
"注【通过 序号 或者 商品名称 购买】",
|
||||
)
|
||||
shop.text((20, 230), tmp[:-1])
|
||||
shop.text((20, h - 100), '神秘药水\t\t售价:9999999金币\n\t\t鬼知道会有什么效果~')
|
||||
shop.save(f'{IMAGE_PATH}/shop_help.png')
|
||||
shop.text((20, h - 100), "神秘药水\t\t售价:9999999金币\n\t\t鬼知道会有什么效果~")
|
||||
shop.save(f"{IMAGE_PATH}/shop_help.png")
|
||||
|
||||
|
||||
# 添加商品
|
||||
async def add_goods(msg: list):
|
||||
data = {
|
||||
'名称': None,
|
||||
'价格': None,
|
||||
'描述': None,
|
||||
'折扣': 1,
|
||||
'限时': 0,
|
||||
"名称": None,
|
||||
"价格": None,
|
||||
"描述": None,
|
||||
"折扣": 1,
|
||||
"限时": 0,
|
||||
}
|
||||
keys = list(data.keys())
|
||||
idx = 0
|
||||
for x in msg:
|
||||
data[keys[idx]] = x
|
||||
idx += 1
|
||||
return await GoodsInfo.add_goods(data['名称'], data['价格'], data['描述'], data['折扣'], data['限时'])
|
||||
return await GoodsInfo.add_goods(
|
||||
data["名称"], data["价格"], data["描述"], data["折扣"], data["限时"]
|
||||
)
|
||||
|
||||
|
||||
# 删除商品
|
||||
async def del_goods(name: str, id_: int):
|
||||
goods_lst = await GoodsInfo.get_all_goods()
|
||||
if id_:
|
||||
if id_ < 1 or id_ > len(goods_lst):
|
||||
return '序号错误,没有该序号商品...', '', 999
|
||||
return "序号错误,没有该序号商品...", "", 999
|
||||
goods_name = goods_lst[id_ - 1].goods_name
|
||||
if await GoodsInfo.del_goods(goods_name):
|
||||
return f'删除商品 {goods_name} 成功!', goods_name, 200
|
||||
if await GoodsInfo.delete_goods(goods_name):
|
||||
return f"删除商品 {goods_name} 成功!", goods_name, 200
|
||||
else:
|
||||
return f'删除商品 {goods_name} 失败!', goods_name, 999
|
||||
return f"删除商品 {goods_name} 失败!", goods_name, 999
|
||||
if name:
|
||||
if await GoodsInfo.del_goods(name):
|
||||
return f'删除商品 {name} 成功!', name, 200
|
||||
if await GoodsInfo.delete_goods(name):
|
||||
return f"删除商品 {name} 成功!", name, 200
|
||||
else:
|
||||
return f'删除商品 {name} 失败!', name, 999
|
||||
return f"删除商品 {name} 失败!", name, 999
|
||||
|
||||
|
||||
# 更新商品信息
|
||||
async def update_goods(data: dict):
|
||||
goods_lst = await GoodsInfo.get_all_goods()
|
||||
if is_number(data['name']):
|
||||
if data['name'] < 1 or data['name'] > len(goods_lst):
|
||||
return '序号错误,没有该序号的商品...', '', 999
|
||||
goods = goods_lst[data['name'] - 1]
|
||||
if is_number(data["name"]):
|
||||
if data["name"] < 1 or data["name"] > len(goods_lst):
|
||||
return "序号错误,没有该序号的商品...", "", 999
|
||||
goods = goods_lst[data["name"] - 1]
|
||||
else:
|
||||
goods = await GoodsInfo.get_goods_info(data['name'])
|
||||
goods = await GoodsInfo.get_goods_info(data["name"])
|
||||
if not goods:
|
||||
return '名称错误,没有该名称的商品...', '', 999
|
||||
return "名称错误,没有该名称的商品...", "", 999
|
||||
name = goods.goods_name
|
||||
price = goods.goods_price
|
||||
des = goods.goods_description
|
||||
discount = goods.goods_discount
|
||||
limit_time = goods.goods_limit_time
|
||||
tmp = ''
|
||||
if data.get('price'):
|
||||
tmp = ""
|
||||
if data.get("price"):
|
||||
tmp += f'价格:{price} --> {data["price"]}\n'
|
||||
price = data['price']
|
||||
if data.get('des'):
|
||||
price = data["price"]
|
||||
if data.get("des"):
|
||||
tmp += f'描述:{des} --> {data["des"]}\n'
|
||||
des = data['des']
|
||||
if data.get('discount'):
|
||||
des = data["des"]
|
||||
if data.get("discount"):
|
||||
tmp += f'折扣:{discount} --> {data["discount"]}\n'
|
||||
discount = data['discount']
|
||||
if data.get('time'):
|
||||
discount = data["discount"]
|
||||
if data.get("time"):
|
||||
old_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(limit_time))
|
||||
new_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(data['time']))
|
||||
tmp += f'折扣:{old_time} --> {new_time}\n'
|
||||
limit_time = data['time']
|
||||
return await GoodsInfo.update_goods(name, price, des, discount, limit_time), name, tmp[:-1]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
new_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(data["time"]))
|
||||
tmp += f"折扣:{old_time} --> {new_time}\n"
|
||||
limit_time = data["time"]
|
||||
return (
|
||||
await GoodsInfo.update_goods(name, price, des, discount, limit_time),
|
||||
name,
|
||||
tmp[:-1],
|
||||
)
|
||||
|
||||
@@ -9,8 +9,8 @@ from services.db_context import db
|
||||
from .data_source import effect
|
||||
|
||||
|
||||
__plugin_name__ = '使用道具'
|
||||
__plugin_usage__ = '输入 “使用道具 xxx(序号 或 道具名称)“ 即可使用道具\n【注】序号以我的道具序号为准,更推荐使用道具名称使用道具(怕出错)'
|
||||
__plugin_name__ = "使用道具"
|
||||
__plugin_usage__ = "输入 “使用道具 xxx(序号 或 道具名称)“ 即可使用道具\n【注】序号以我的道具序号为准,更推荐使用道具名称使用道具(怕出错)"
|
||||
|
||||
|
||||
use_props = on_command("使用道具", priority=5, block=True, permission=GROUP)
|
||||
@@ -19,43 +19,37 @@ use_props = on_command("使用道具", priority=5, block=True, permission=GROUP)
|
||||
@use_props.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
msg = get_message_text(event.json())
|
||||
if msg in ['', '帮助']:
|
||||
if msg in ["", "帮助"]:
|
||||
await use_props.finish(__plugin_usage__)
|
||||
props = await BagUser.get_props(event.user_id, event.group_id)
|
||||
if props:
|
||||
async with db.transaction():
|
||||
pname_list = []
|
||||
props = props[:-1].split(',')
|
||||
props = props[:-1].split(",")
|
||||
for p in props:
|
||||
if p != '':
|
||||
if p != "":
|
||||
if p not in pname_list:
|
||||
pname_list.append(p)
|
||||
if is_number(msg):
|
||||
if 0 < int(msg) <= len(pname_list):
|
||||
name = pname_list[int(msg) - 1]
|
||||
else:
|
||||
await use_props.finish('仔细看看自己的道具仓库有没有这个道具?', at_sender=True)
|
||||
await use_props.finish("仔细看看自己的道具仓库有没有这个道具?", at_sender=True)
|
||||
else:
|
||||
if msg not in pname_list:
|
||||
await use_props.finish('道具名称错误!', at_sender=True)
|
||||
await use_props.finish("道具名称错误!", at_sender=True)
|
||||
name = msg
|
||||
if await BagUser.del_props(event.user_id, event.group_id, name) and\
|
||||
await effect(event.user_id, event.group_id, name):
|
||||
await use_props.send(f'使用道具 {name} 成功!', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} 使用道具 {name} 成功')
|
||||
if await BagUser.del_props(
|
||||
event.user_id, event.group_id, name
|
||||
) and await effect(event.user_id, event.group_id, name):
|
||||
await use_props.send(f"使用道具 {name} 成功!", at_sender=True)
|
||||
logger.info(
|
||||
f"USER {event.user_id} GROUP {event.group_id} 使用道具 {name} 成功"
|
||||
)
|
||||
else:
|
||||
await use_props.send(f'使用道具 {name} 失败!', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} 使用道具 {name} 失败')
|
||||
await use_props.send(f"使用道具 {name} 失败!", at_sender=True)
|
||||
logger.info(
|
||||
f"USER {event.user_id} GROUP {event.group_id} 使用道具 {name} 失败"
|
||||
)
|
||||
else:
|
||||
await use_props.send('您的背包里没有任何的道具噢~', at_sender=True)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
await use_props.send("您的背包里没有任何的道具噢~", at_sender=True)
|
||||
|
||||
@@ -2,39 +2,14 @@ from models.sigin_group_user import SignGroupUser
|
||||
|
||||
|
||||
async def effect(user_id: int, group_id: int, name: str) -> bool:
|
||||
print(name)
|
||||
# try:
|
||||
if name == '好感双倍加持卡Ⅰ':
|
||||
if name == "好感双倍加持卡Ⅰ":
|
||||
user = await SignGroupUser.ensure(user_id, group_id)
|
||||
await user.update(
|
||||
add_probability=0.1
|
||||
).apply()
|
||||
if name == '好感双倍加持卡Ⅱ':
|
||||
await user.update(add_probability=0.1).apply()
|
||||
if name == "好感双倍加持卡Ⅱ":
|
||||
user = await SignGroupUser.ensure(user_id, group_id)
|
||||
await user.update(
|
||||
add_probability=0.2
|
||||
).apply()
|
||||
if name == '好感双倍加持卡Ⅲ':
|
||||
await user.update(add_probability=0.2).apply()
|
||||
if name == "好感双倍加持卡Ⅲ":
|
||||
user = await SignGroupUser.ensure(user_id, group_id)
|
||||
print(user.user_qq)
|
||||
await user.update(
|
||||
add_probability=0.3
|
||||
).apply()
|
||||
await user.update(add_probability=0.3).apply()
|
||||
return True
|
||||
# except Exception:
|
||||
# return False
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user