mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-03 02:30:01 +08:00
fit nonebot.beta2
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
from typing import Type
|
||||
from nonebot import on_command
|
||||
from nonebot.matcher import Matcher
|
||||
from utils.utils import scheduler, get_message_text, is_number
|
||||
from nonebot.adapters.cqhttp.permission import GROUP
|
||||
from utils.utils import scheduler, is_number
|
||||
from nonebot.adapters.onebot.v11.permission import GROUP
|
||||
from nonebot.typing import T_State
|
||||
from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, MessageEvent
|
||||
from nonebot.adapters.onebot.v11 import GroupMessageEvent, MessageEvent, Message
|
||||
from nonebot.permission import SUPERUSER
|
||||
import random
|
||||
from nonebot.plugin import MatcherGroup
|
||||
from configs.path_config import IMAGE_PATH
|
||||
import re
|
||||
from nonebot.params import CommandArg
|
||||
from .open_cases_c import (
|
||||
open_case,
|
||||
total_open_statistics,
|
||||
@@ -102,8 +102,8 @@ k_open_case = cases_matcher_group.on_command("开箱")
|
||||
|
||||
|
||||
@k_open_case.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
case_name = get_message_text(event.json())
|
||||
async def _(event: GroupMessageEvent, arg: Message = CommandArg()):
|
||||
case_name = arg.extract_plain_text().strip()
|
||||
case_name = case_name.replace("武器箱", "").strip()
|
||||
if case_name:
|
||||
result = await open_case(event.user_id, event.group_id, case_name)
|
||||
@@ -120,7 +120,7 @@ total_case_data = cases_matcher_group.on_command(
|
||||
|
||||
|
||||
@total_case_data.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
async def _(event: GroupMessageEvent):
|
||||
await total_case_data.finish(
|
||||
await total_open_statistics(event.user_id, event.group_id),
|
||||
at_sender=True,
|
||||
@@ -131,7 +131,7 @@ group_open_case_statistics = cases_matcher_group.on_command("群开箱统计")
|
||||
|
||||
|
||||
@group_open_case_statistics.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
async def _(event: GroupMessageEvent):
|
||||
await group_open_case_statistics.finish(await group_statistics(event.group_id))
|
||||
|
||||
|
||||
@@ -139,45 +139,39 @@ my_kinfes = on_command("我的金色", priority=1, permission=GROUP, block=True)
|
||||
|
||||
|
||||
@my_kinfes.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
async def _(event: GroupMessageEvent):
|
||||
await my_kinfes.finish(
|
||||
await my_knifes_name(event.user_id, event.group_id), at_sender=True
|
||||
)
|
||||
|
||||
|
||||
open_shilian: Type[Matcher] = cases_matcher_group.on_regex(".*连开箱")
|
||||
open_shilian: Type[Matcher] = cases_matcher_group.on_regex("(.*)连开箱(.*?)")
|
||||
|
||||
|
||||
@open_shilian.handle()
|
||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State):
|
||||
# if not _flmt.check(event.user_id):
|
||||
# await k_open_case.finish('着什么急啊,慢慢来!', at_sender=True)
|
||||
# _flmt.start_cd(event.user_id)
|
||||
msg = get_message_text(event.json())
|
||||
rs = re.search(r"(.*)连开箱(.*)", msg)
|
||||
if rs:
|
||||
num = rs.group(1).strip()
|
||||
if is_number(num) or num_dict.get(num):
|
||||
try:
|
||||
num = num_dict[num]
|
||||
except KeyError:
|
||||
num = int(num)
|
||||
if num > 30:
|
||||
await open_shilian.finish("开箱次数不要超过30啊笨蛋!", at_sender=True)
|
||||
if num < 0:
|
||||
await open_shilian.finish("再负开箱就扣你明天开箱数了!", at_sender=True)
|
||||
else:
|
||||
await open_shilian.finish("必须要是数字切不要超过30啊笨蛋!中文也可!", at_sender=True)
|
||||
case_name = rs.group(2).strip()
|
||||
case_name = case_name.replace("武器箱", "").strip()
|
||||
if not case_name:
|
||||
case_name = random.choice(cases_name)
|
||||
elif case_name not in cases_name:
|
||||
await open_shilian.finish("武器箱未收录!", at_sender=True)
|
||||
await open_shilian.finish(
|
||||
await open_shilian_case(event.user_id, event.group_id, case_name, num),
|
||||
at_sender=True,
|
||||
)
|
||||
async def _(event: GroupMessageEvent, state: T_State):
|
||||
num = state["_matched_groups"][0].strip()
|
||||
if is_number(num) or num_dict.get(num):
|
||||
try:
|
||||
num = num_dict[num]
|
||||
except KeyError:
|
||||
num = int(num)
|
||||
if num > 30:
|
||||
await open_shilian.finish("开箱次数不要超过30啊笨蛋!", at_sender=True)
|
||||
if num < 0:
|
||||
await open_shilian.finish("再负开箱就扣你明天开箱数了!", at_sender=True)
|
||||
else:
|
||||
await open_shilian.finish("必须要是数字切不要超过30啊笨蛋!中文也可!", at_sender=True)
|
||||
case_name = state["_matched_groups"][1].strip()
|
||||
case_name = case_name.replace("武器箱", "").strip()
|
||||
if not case_name:
|
||||
case_name = random.choice(cases_name)
|
||||
elif case_name not in cases_name:
|
||||
await open_shilian.finish("武器箱未收录!", at_sender=True)
|
||||
await open_shilian.finish(
|
||||
await open_shilian_case(event.user_id, event.group_id, case_name, num),
|
||||
at_sender=True,
|
||||
)
|
||||
|
||||
|
||||
num_dict = {
|
||||
@@ -218,7 +212,7 @@ update_price = on_command("更新开箱价格", priority=1, permission=SUPERUSER
|
||||
|
||||
|
||||
@update_price.handle()
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
async def _( event: MessageEvent):
|
||||
await update_price.send(await util_get_buff_price(str(event.get_message())))
|
||||
|
||||
|
||||
@@ -226,7 +220,7 @@ update_img = on_command("更新开箱图片", priority=1, permission=SUPERUSER,
|
||||
|
||||
|
||||
@update_img.handle()
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
async def _(event: MessageEvent):
|
||||
await update_img.send(await util_get_buff_img(str(event.get_message())))
|
||||
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ async def open_case(user_qq: int, group: int, case_name: str = "狂牙大行动"
|
||||
dbprice = await BuffPrice.ensure(skin[9 : skin.rfind("(")].strip())
|
||||
if dbprice.skin_price != 0:
|
||||
price_result = dbprice.skin_price
|
||||
print("数据库查询到价格: ", dbprice.skin_price)
|
||||
logger.info("数据库查询到价格: ", dbprice.skin_price)
|
||||
uplist[10] = dbprice.skin_price
|
||||
else:
|
||||
price = -1
|
||||
@@ -102,7 +102,7 @@ async def open_case(user_qq: int, group: int, case_name: str = "狂牙大行动"
|
||||
price = float(pcp[1].strip())
|
||||
break
|
||||
if price != -1:
|
||||
print("存储入数据库---->", price)
|
||||
logger.info("存储入数据库---->", price)
|
||||
uplist[10] = price
|
||||
price_result = str(price)
|
||||
await dbprice.update(
|
||||
@@ -242,7 +242,7 @@ async def open_shilian_case(user_qq: int, group: int, case_name: str, num: int =
|
||||
wImg = BuildImage(200, 270, 200, 200)
|
||||
wImg.paste(
|
||||
alpha2white_pil(
|
||||
Image.open(IMAGE_PATH + f"cases/{case}/{skin_name}.png").resize(
|
||||
Image.open(IMAGE_PATH / "cases" / case / f"{skin_name}.png").resize(
|
||||
(200, 200), Image.ANTIALIAS
|
||||
)
|
||||
),
|
||||
@@ -418,7 +418,7 @@ def _pst_my_knife(w, h, knifes_list):
|
||||
knife_img = BuildImage(470, 600, 470, 470, font_size=20)
|
||||
knife_img.paste(
|
||||
alpha2white_pil(
|
||||
Image.open(IMAGE_PATH + f"cases/{case}/{skin_name}.png").resize(
|
||||
Image.open(IMAGE_PATH / f"cases" / case / f"{skin_name}.png").resize(
|
||||
(470, 470), Image.ANTIALIAS
|
||||
)
|
||||
),
|
||||
|
||||
+15
-27
@@ -4,14 +4,14 @@ from datetime import datetime, timedelta
|
||||
from configs.path_config import IMAGE_PATH
|
||||
from utils.http_utils import AsyncHttpx
|
||||
from .models.open_cases_user import OpenCasesUser
|
||||
import os
|
||||
from services.log import logger
|
||||
from utils.utils import get_bot
|
||||
from utils.utils import get_bot, cn2py
|
||||
from asyncio.exceptions import TimeoutError
|
||||
from nonebot.adapters.cqhttp.exception import ActionFailed
|
||||
from nonebot.adapters.onebot.v11.exception import ActionFailed
|
||||
from configs.config import Config
|
||||
from utils.manager import group_manager
|
||||
from .config import *
|
||||
import os
|
||||
|
||||
url = "https://buff.163.com/api/market/goods"
|
||||
# proxies = 'http://49.75.59.242:3128'
|
||||
@@ -20,9 +20,7 @@ url = "https://buff.163.com/api/market/goods"
|
||||
async def util_get_buff_price(case_name: str = "狂牙大行动") -> str:
|
||||
cookie = {"session": Config.get_config("open_cases", "COOKIE")}
|
||||
failed_list = []
|
||||
case = ""
|
||||
for i in pypinyin.pinyin(case_name, style=pypinyin.NORMAL):
|
||||
case += "".join(i)
|
||||
case = cn2py(case_name)
|
||||
if case_name == "狂牙大行动":
|
||||
case_id = 1
|
||||
elif case_name == "突围大行动":
|
||||
@@ -165,12 +163,9 @@ async def util_get_buff_price(case_name: str = "狂牙大行动") -> str:
|
||||
async def util_get_buff_img(case_name: str = "狂牙大行动") -> str:
|
||||
cookie = {"session": Config.get_config("open_cases", "COOKIE")}
|
||||
error_list = []
|
||||
case = ""
|
||||
for i in pypinyin.pinyin(case_name, style=pypinyin.NORMAL):
|
||||
case += "".join(i)
|
||||
path = "cases/" + case + "/"
|
||||
if not os.path.exists(IMAGE_PATH + path):
|
||||
os.mkdir(IMAGE_PATH + path)
|
||||
case = cn2py(case_name)
|
||||
path = IMAGE_PATH / "cases/" / case
|
||||
path.mkdir(exist_ok=True, parents=True)
|
||||
case = case.upper()
|
||||
CASE_KNIFE = eval(case + "_CASE_KNIFE")
|
||||
CASE_RED = eval(case + "_CASE_RED")
|
||||
@@ -205,11 +200,8 @@ async def util_get_buff_img(case_name: str = "狂牙大行动") -> str:
|
||||
for j in range(len(data)):
|
||||
if data[j]["name"] in [f"{skin}(★)"]:
|
||||
img_url = data[j]["goods_info"]["icon_url"]
|
||||
for k in pypinyin.pinyin(
|
||||
skin + "无涂装", style=pypinyin.NORMAL
|
||||
):
|
||||
skin_name += "".join(k)
|
||||
await AsyncHttpx.download_file(img_url, IMAGE_PATH + path + skin_name + ".png")
|
||||
skin_name = cn2py(skin + "无涂装")
|
||||
await AsyncHttpx.download_file(img_url, path / f"{skin_name}.png")
|
||||
flag = True
|
||||
break
|
||||
if flag:
|
||||
@@ -218,11 +210,8 @@ async def util_get_buff_img(case_name: str = "狂牙大行动") -> str:
|
||||
img_url = (await response.json())["data"]["items"][0][
|
||||
"goods_info"
|
||||
]["icon_url"]
|
||||
for i in pypinyin.pinyin(
|
||||
skin.replace("|", "-").strip(), style=pypinyin.NORMAL
|
||||
):
|
||||
skin_name += "".join(i)
|
||||
if await AsyncHttpx.download_file(img_url, IMAGE_PATH + path + skin_name + ".png"):
|
||||
skin_name += cn2py(skin.replace("|", "-").strip())
|
||||
if await AsyncHttpx.download_file(img_url, path / f"{skin_name}.png"):
|
||||
logger.info(f"------->写入 {skin} 成功")
|
||||
else:
|
||||
logger.info(f"------->写入 {skin} 失败")
|
||||
@@ -276,11 +265,10 @@ async def update_count_daily():
|
||||
gl = await bot.get_group_list()
|
||||
gl = [g["group_id"] for g in gl]
|
||||
for g in gl:
|
||||
if await group_manager.check_group_task_status(g, "open_case_reset_remind"):
|
||||
try:
|
||||
await bot.send_group_msg(group_id=g, message="今日开箱次数重置成功")
|
||||
except ActionFailed:
|
||||
logger.warning(f"{g} 群被禁言,无法发送 开箱重置提醒")
|
||||
try:
|
||||
await bot.send_group_msg(group_id=g, message="[[_task|open_case_reset_remind]]今日开箱次数重置成功")
|
||||
except ActionFailed:
|
||||
logger.warning(f"{g} 群被禁言,无法发送 开箱重置提醒")
|
||||
logger.info("今日开箱次数重置成功")
|
||||
except Exception as e:
|
||||
logger.error(f"开箱重置错误 e:{e}")
|
||||
|
||||
Reference in New Issue
Block a user