mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-01 17:49:58 +08:00
first_commit .gitignore
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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