Add files via upload

This commit is contained in:
HibiKier
2021-05-20 19:23:32 +08:00
committed by GitHub
parent 32f303a2c8
commit 7207982a30
64 changed files with 6873 additions and 0 deletions
+78
View File
@@ -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} 失败!')
+26
View File
@@ -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))
+46
View File
@@ -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)
+41
View File
@@ -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}')
+41
View File
@@ -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'))
+61
View File
@@ -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)
+40
View File
@@ -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