mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-06 20:29:59 +08:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
from nonebot import on_command
|
||||
from services.log import logger
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
|
||||
from nonebot.typing import T_State
|
||||
from util.utils import get_message_text, is_number
|
||||
from models.bag_user import UserBag
|
||||
from services.db_context import db
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
|
||||
|
||||
__plugin_name__ = '商店购买'
|
||||
__plugin_usage__ = '格式:购买 名称或序号 数量(选填,默认为1)\n\t示例:购买 好感双倍加持卡Ⅰ\n\t示例:购买 1 4'
|
||||
|
||||
|
||||
buy = on_command("购买", aliases={'购买道具'}, priority=5, block=True, permission=GROUP)
|
||||
|
||||
goods = [
|
||||
'好感双倍加持卡Ⅰ\t\t售价:30金币\n\t\t今日双倍好感度的概率 + 10%(谁才是真命天子?)(同类道具将覆盖)',
|
||||
'好感双倍加持卡Ⅱ\t\t售价:140金币\n\t\t今日双倍好感度的概率 + 20%(平平庸庸~)(同类道具将覆盖)',
|
||||
'好感双倍加持卡Ⅲ\t\t售价:250金币\n\t\t今日双倍好感度的概率 + 30%(金币才是真命天子!)(同类道具将覆盖)'
|
||||
]
|
||||
glist = []
|
||||
plist = []
|
||||
for i in range(len(goods)):
|
||||
glist.append(goods[i].split('\t\t')[0])
|
||||
plist.append(int(goods[i].split('\t\t')[1].split(':')[1].split('金币')[0]))
|
||||
|
||||
|
||||
@buy.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
if get_message_text(event.json()) in ['', '帮助']:
|
||||
await buy.finish(__plugin_usage__)
|
||||
if get_message_text(event.json()) in ['神秘药水']:
|
||||
await buy.finish("你们看看就好啦,这是不可能卖给你们的~", at_sender=True)
|
||||
msg = get_message_text(event.json()).strip().split(' ')
|
||||
index = -1
|
||||
num = 1
|
||||
if len(msg) > 1:
|
||||
if is_number(msg[1]):
|
||||
num = int(msg[1])
|
||||
print(msg, num)
|
||||
if is_number(msg[0]):
|
||||
msg = int(msg[0])
|
||||
if msg > len(goods) or msg < 1:
|
||||
await buy.finish('请输入正确的商品id!', at_sender=True)
|
||||
index = msg - 1
|
||||
else:
|
||||
if msg[0] in glist:
|
||||
for i in range(len(glist)):
|
||||
if msg == glist[i]:
|
||||
index = i
|
||||
break
|
||||
else:
|
||||
await buy.finish('请输入正确的商品名称!', at_sender=True)
|
||||
async with db.transaction():
|
||||
if index != -1:
|
||||
if (await UserBag.get_gold(event.user_id, event.group_id)) < plist[index] * num:
|
||||
await buy.finish('您的金币好像不太够哦', at_sender=True)
|
||||
if await UserBag.spend_glod(event.user_id, event.group_id, plist[index] * num):
|
||||
for _ in range(num):
|
||||
await UserBag.add_props(event.user_id, event.group_id, glist[index])
|
||||
await buy.send(f'花费 {plist[index]*num} 金币购买 {glist[index]} ×{num} 成功!', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} '
|
||||
f'花费 {plist[index]*num} 金币购买 {glist[index]} ×{num} 成功!')
|
||||
else:
|
||||
await buy.send(f'{glist[index]} 购买失败!', at_sender=True)
|
||||
logger.info(f'USER {event.user_id} GROUP {event.group_id} '
|
||||
f'花费 {plist[index]*num} 金币购买 {glist[index]} ×{num} 失败!')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
from nonebot import on_command
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
|
||||
from nonebot.typing import T_State
|
||||
from models.bag_user import UserBag
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
|
||||
|
||||
__plugin_name__ = '我的金币'
|
||||
|
||||
|
||||
my_gold = on_command("我的金币", priority=5, block=True, permission=GROUP)
|
||||
|
||||
|
||||
@my_gold.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
await my_gold.finish(await UserBag.get_my_total_gold(event.user_id, event.group_id))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
from nonebot import on_command
|
||||
from services.log import logger
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
|
||||
from nonebot.typing import T_State
|
||||
from models.bag_user import UserBag
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
|
||||
|
||||
__plugin_name__ = '商店基础显示'
|
||||
|
||||
|
||||
my_props = on_command("我的道具", priority=5, block=True, permission=GROUP)
|
||||
|
||||
|
||||
@my_props.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
props = await UserBag.get_props(event.user_id, event.group_id)
|
||||
if props:
|
||||
pname_list = []
|
||||
pnum_list = []
|
||||
rst = ''
|
||||
props = props[:-1].split(',')
|
||||
for p in props:
|
||||
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} 查看我的道具')
|
||||
else:
|
||||
await my_props.finish('您的背包里没有任何的道具噢~', at_sender=True)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
from util.utils import scheduler
|
||||
from models.bag_user import UserBag
|
||||
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",
|
||||
hour=0,
|
||||
minute=1,
|
||||
# second=None,
|
||||
# start_date=None,
|
||||
# end_date=None,
|
||||
# timezone=None,
|
||||
)
|
||||
async def _():
|
||||
try:
|
||||
user_list = await UserBag.get_user_all()
|
||||
if user_list:
|
||||
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}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
from nonebot import on_command
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
|
||||
from nonebot.typing import T_State
|
||||
from util.img_utils import CreateImg
|
||||
from configs.path_config import IMAGE_PATH
|
||||
from util.init_result import image
|
||||
|
||||
|
||||
__plugin_name__ = '商店'
|
||||
|
||||
|
||||
shop_help = on_command("商店", priority=5, block=True)
|
||||
|
||||
goods = [
|
||||
'好感双倍加持卡Ⅰ\t\t售价:30金币\n\t\t下次签到双倍好感度的概率 + 10%(谁才是真命天子?)(同类商品将覆盖)',
|
||||
'好感双倍加持卡Ⅱ\t\t售价:150金币\n\t\t下次签到双倍好感度的概率 + 20%(平平庸庸~)(同类商品将覆盖)',
|
||||
'好感双倍加持卡Ⅲ\t\t售价:250金币\n\t\t下次签到双倍好感度的概率 + 30%(金币才是真命天子!)(同类商品将覆盖)'
|
||||
]
|
||||
|
||||
result = ''
|
||||
for i in range(len(goods)):
|
||||
result += f'{i + 1}.{goods[i]}\n'
|
||||
shop = CreateImg(1000, 1000, background=IMAGE_PATH + 'other/shop.png', font_size=20)
|
||||
shop.text((100, 170), '注【通过 数字 或者 商品名称 购买】')
|
||||
shop.text((20, 230), result)
|
||||
shop.text((20, 900), '神秘药水\t\t售价:9999999金币\n\t\t鬼知道会有什么效果~')
|
||||
shop.save(IMAGE_PATH + 'shop.png')
|
||||
|
||||
|
||||
@shop_help.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
await shop_help.send(image('shop.png'))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
from nonebot import on_command
|
||||
from services.log import logger
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent
|
||||
from nonebot.typing import T_State
|
||||
from util.utils import is_number, get_message_text
|
||||
from models.bag_user import UserBag
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
from services.db_context import db
|
||||
from .data_source import effect
|
||||
|
||||
|
||||
__plugin_name__ = '使用道具'
|
||||
__plugin_usage__ = '输入 “使用道具 xxx(序号 或 道具名称)“ 即可使用道具\n【注】序号以我的道具序号为准,更推荐使用道具名称使用道具(怕出错)'
|
||||
|
||||
|
||||
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 ['', '帮助']:
|
||||
await use_props.finish(__plugin_usage__)
|
||||
props = await UserBag.get_props(event.user_id, event.group_id)
|
||||
if props:
|
||||
async with db.transaction():
|
||||
pname_list = []
|
||||
props = props[:-1].split(',')
|
||||
for p in props:
|
||||
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)
|
||||
else:
|
||||
if msg not in pname_list:
|
||||
await use_props.finish('道具名称错误!', at_sender=True)
|
||||
name = msg
|
||||
if await UserBag.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} 失败')
|
||||
else:
|
||||
await use_props.send('您的背包里没有任何的道具噢~', at_sender=True)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
from models.sigin_group_user import SignGroupUser
|
||||
|
||||
|
||||
async def effect(user_id: int, group_id: int, name: str) -> bool:
|
||||
print(name)
|
||||
# try:
|
||||
if name == '好感双倍加持卡Ⅰ':
|
||||
user = await SignGroupUser.ensure(user_id, group_id)
|
||||
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 == '好感双倍加持卡Ⅲ':
|
||||
user = await SignGroupUser.ensure(user_id, group_id)
|
||||
print(user.user_qq)
|
||||
await user.update(
|
||||
add_probability=0.3
|
||||
).apply()
|
||||
return True
|
||||
# except Exception:
|
||||
# return False
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user