Archived
1
0
Fork 0
This commit is contained in:
多羅狼 2024-03-18 20:11:20 +08:00 committed by GitHub
parent f23f6bfdc1
commit 9a8ee2d6ef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 223 additions and 240 deletions

View file

@ -22,12 +22,7 @@ async def _(msg: Bot.MessageSession, language: str, content: str):
if language not in ('zh-cn', 'zh-hk', 'zh-tw'):
await msg.finish(msg.locale.t('langconv.message.unsupported_language'))
lc = {'zh-cn': lc_zh_cn, 'zh-hk': lc_zh_hk, 'zh-tw': lc_zh_tw}[language]
start = time.perf_counter_ns()
res = lc.convert(content)
stop = time.perf_counter_ns()
delta = (stop - start) / 1000000
if msg.check_super_user():
res += '\n' + msg.locale.t("langconv.message.running_time", time=delta)
if await check_bool(res):
await msg.finish(rickroll(msg))
await msg.finish(res)

View file

@ -1,5 +1,4 @@
{
"langconv.help": "简繁转换。",
"langconv.message.unsupported_language": "不支持此语言。支持的语言zh_cn、zh_tw、zh_hk",
"langconv.message.running_time": "花费时间:${time} ms。"
"langconv.message.unsupported_language": "不支持此语言。支持的语言zh_cn、zh_tw、zh_hk"
}

View file

@ -1,5 +1,4 @@
{
"langconv.help": "简繁转换。",
"langconv.message.unsupported_language": "不支持此语言。支持的语言zh_cn、zh_tw、zh_hk",
"langconv.message.running_time": "花费时间:${time}ms。"
"langconv.message.unsupported_language": "不支持此语言。支持的语言zh_cn、zh_tw、zh_hk"
}

View file

@ -1,5 +1,4 @@
{
"langconv.help": "繁簡轉換。",
"langconv.message.unsupported_language": "不支援此語言。已支援的語言zh_cn、zh_tw、zh_hk",
"langconv.message.running_time": "花費時間:${time}ms。"
"langconv.message.unsupported_language": "不支援此語言。已支援的語言zh_cn、zh_tw、zh_hk"
}

View file

@ -1,210 +0,0 @@
import re
from core.builtins import Bot, Plain, Image as BImage
from core.utils.image import msgchain2image
from .chunithm import chu
from .dbutils import DivingProberBindInfoManager
from .libraries.maimaidx_apidata import get_alias, get_info, search_by_alias
from .libraries.maimaidx_best50 import generate
from .libraries.maimaidx_music import TotalList
from .libraries.maimaidx_utils import *
from .maimai import mai
from .regex import mai_regex
mai_total_list = TotalList()
@chu.handle('bind <username> {{maimai.help.bind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession, username: str):
bind = DivingProberBindInfoManager(msg).set_bind_info(username=username)
if bind:
await msg.finish(msg.locale.t('maimai.message.bind.success') + username)
@chu.handle('unbind {{maimai.help.unbind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession):
unbind = DivingProberBindInfoManager(msg).remove_bind_info()
if unbind:
await msg.finish(msg.locale.t('maimai.message.unbind.success'))
@mai.handle('bind <username> {{maimai.help.bind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession, username: str):
bind = DivingProberBindInfoManager(msg).set_bind_info(username=username)
if bind:
await msg.finish(msg.locale.t('maimai.message.bind.success') + username)
@mai.handle('unbind {{maimai.help.unbind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession):
unbind = DivingProberBindInfoManager(msg).remove_bind_info()
if unbind:
await msg.finish(msg.locale.t('maimai.message.unbind.success'))
@mai.command('info <id_or_alias> [<username>] {{maimai.help.info}}')
async def _(msg: Bot.MessageSession, id_or_alias: str, username: str = None):
await query_song_info(msg, id_or_alias, username)
@mai_regex.regex(re.compile(r"(.+)\s?有什[么麼]分\s?(.+)?"), desc='{maimai.help.maimai_regex.info}')
async def _(msg: Bot.MessageSession):
songname = msg.matched_msg.groups()[0]
username = msg.matched_msg.groups()[1]
await query_song_info(msg, songname, username)
async def query_song_info(msg, query, username):
if query[:2].lower() == "id":
sid = query[2:]
else:
sid_list = await search_by_alias(msg, query)
if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1:
res = msg.locale.t("maimai.message.song.prompt") + "\n"
for sid in sorted(sid_list, key=int):
s = (await mai_total_list.get()).by_id(sid)
res += f"{s['id']}\u200B. {s['title']}{' (DX)' if s['type'] == 'DX' else ''}\n"
await msg.finish(res.strip())
else:
sid = str(sid_list[0])
music = (await mai_total_list.get()).by_id(sid)
if not music:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
output = await get_player_score(msg, payload, sid)
await msg.finish(await get_info(msg, music, Plain(output)))
@mai.command('plate <plate> [<username>] {{maimai.help.plate}}')
async def _(msg: Bot.MessageSession, plate: str, username: str = None):
await query_plate(msg, plate, username)
@mai_regex.regex(re.compile(r"(.?)([極极将將舞神者]舞?)[进進]度\s?(.+)?"), desc='{maimai.help.maimai_regex.plate}')
async def _(msg: Bot.MessageSession):
plate = msg.matched_msg.groups()[0] + msg.matched_msg.groups()[1]
username = msg.matched_msg.groups()[2]
await query_plate(msg, plate, username)
async def query_plate(msg, plate, username):
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
if plate in ['真将', '真將'] or (plate[1] == '' and plate[0] != ''):
await msg.finish(msg.locale.t('maimai.message.plate.plate_not_found'))
output, get_img = await get_plate_process(msg, payload, plate)
if get_img:
img = await msgchain2image([Plain(output)], msg)
if img:
await msg.finish([BImage(img)])
else:
await msg.finish(output.strip())
else:
await msg.finish(output.strip())
@mai.command('process <level> <goal> [<username>] {{maimai.help.process}}')
async def _(msg: Bot.MessageSession, level: str, goal: str, username: str = None):
goal_list = ["A", "AA", "AAA", "S", "S+", "SS", "SS+", "SSS", "SSS+",
"FC", "FC+", "AP", "AP+", "FS", "FS+", "FDX", "FDX+"]
level_list = ['1', '2', '3', '4', '5', '6', '7', '7+', '8', '8+', '9', '9+',
'10', '10+', '11', '11+', '12', '12+', '13', '13+', '14', '14+', '15']
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
if level in level_list:
level_num = int(level.split('+')[0])
if level_num < 8:
await msg.finish(msg.locale.t("maimai.message.process.less_than_8"))
else:
await msg.finish(msg.locale.t("maimai.message.level_invalid"))
if goal.upper() not in goal_list:
await msg.finish(msg.locale.t("maimai.message.goal_invalid"))
output, get_img = await get_level_process(msg, payload, level, goal)
if get_img:
img = await msgchain2image([Plain(output)])
if img:
await msg.finish([BImage(img)])
else:
await msg.finish(output.strip())
else:
await msg.finish(output.strip())
@mai.command('rank [<username>] {{maimai.help.rank}}')
async def _(msg: Bot.MessageSession, username: str = None):
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
await get_rank(msg, payload)
@mai.command('scorelist <level> <page> [<username>] {{maimai.help.scorelist}}')
async def _(msg: Bot.MessageSession, level: str, page: str, username: str = None):
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
output, get_img = await get_score_list(msg, payload, level, page)
if get_img:
img = await msgchain2image([Plain(output)])
if img:
await msg.finish([BImage(img)])
else:
await msg.finish(output.strip())
else:
await msg.finish([Plain(output.strip())])

View file

@ -166,7 +166,7 @@ async def _(msg: Bot.MessageSession, song: str, diff: str = None):
ds=ds,
combo=chart['combo'],
charter=chart['charter'])
await msg.finish(await get_info(msg, music, Plain(res)))
await msg.finish(await get_info(music, Plain(res)))
else:
res = msg.locale.t(
"chunithm.message.song",
@ -175,7 +175,7 @@ async def _(msg: Bot.MessageSession, song: str, diff: str = None):
bpm=music['basic_info']['bpm'],
version=music['basic_info']['from'],
level='/'.join((str(ds) for ds in music['ds'])))
await msg.finish(await get_info(msg, music, Plain(res)))
await msg.finish(await get_info(music, Plain(res)))
@chu.command('random [<diff+level>] {{maimai.help.random}}')
@ -193,7 +193,7 @@ async def _(msg: Bot.MessageSession):
if level == "":
if diff == "":
music = (await total_list.get()).random()
await msg.finish(await get_info(msg, music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
await msg.finish(await get_info(music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
else:
raise ValueError
else:
@ -206,6 +206,20 @@ async def _(msg: Bot.MessageSession):
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
else:
music = music_data.random()
await msg.finish(await get_info(msg, music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
await msg.finish(await get_info(music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
except (ValueError, TypeError):
await msg.finish(msg.locale.t("maimai.message.random.failed"))
@chu.handle('bind <username> {{maimai.help.bind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession, username: str):
bind = DivingProberBindInfoManager(msg).set_bind_info(username=username)
if bind:
await msg.finish(msg.locale.t('maimai.message.bind.success') + username)
@chu.handle('unbind {{maimai.help.unbind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession):
unbind = DivingProberBindInfoManager(msg).remove_bind_info()
if unbind:
await msg.finish(msg.locale.t('maimai.message.unbind.success'))

View file

@ -7,7 +7,7 @@ from core.utils.http import post_url
from .chunithm_music import Music
async def get_info(msg: Bot.MessageSession, music: Music, *details):
async def get_info(music: Music, *details):
info = [Plain(f"{music.id}\u200B. {music.title}")]
# 此处未来会添加图片
if details:

View file

@ -3,6 +3,8 @@ import shutil
import traceback
import ujson as json
from langconv import Converter
from config import Config
from core.builtins import Bot, Plain, Image
from core.logger import Logger
@ -54,7 +56,7 @@ async def update_covers():
return True
async def get_info(msg: Bot.MessageSession, music: Music, *details):
async def get_info(music: Music, *details):
info = [Plain(f"{music.id}\u200B. {music.title}{' (DX)' if music['type'] == 'DX' else ''}")]
try:
img = f"https://www.diving-fish.com/covers/{get_cover_len5_id(music.id)}.png"
@ -67,7 +69,7 @@ async def get_info(msg: Bot.MessageSession, music: Music, *details):
return info
async def get_alias(msg, sid):
async def get_alias(msg: Bot.MessageSession, sid):
file_path = os.path.join(assets_path, "mai_alias.json")
if not os.path.exists(file_path):
@ -82,9 +84,10 @@ async def get_alias(msg, sid):
return result
async def search_by_alias(msg, input_):
async def search_by_alias(input_):
result = []
input_ = input_.replace("_", " ").strip().lower()
convinput = Converter('zh_hans').convert(input_)
res = (await total_list.get()).filter(title=input_)
for s in res:
result.append(s['id'])
@ -99,7 +102,7 @@ async def search_by_alias(msg, input_):
for sid, aliases in data.items():
aliases = [alias.lower() for alias in aliases]
if input_ in aliases:
if input_ in aliases or convinput in aliases:
if sid in result:
result.remove(sid)
result.append(sid) # 此处的列表是歌曲 ID 列表
@ -107,7 +110,7 @@ async def search_by_alias(msg, input_):
return result
async def get_record(msg, payload):
async def get_record(msg: Bot.MessageSession, payload):
url = f"https://www.diving-fish.com/api/maimaidxprober/query/player"
try:
data = await post_url(url,
@ -131,7 +134,7 @@ async def get_record(msg, payload):
return data
async def get_plate(msg, payload):
async def get_plate(msg: Bot.MessageSession, payload):
url = f"https://www.diving-fish.com/api/maimaidxprober/query/plate"
try:
data = await post_url(url,

View file

@ -185,6 +185,20 @@ async def _(msg: Bot.MessageSession, grade: str):
await get_grade_info(msg, grade)
@mai.handle('bind <username> {{maimai.help.bind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession, username: str):
bind = DivingProberBindInfoManager(msg).set_bind_info(username=username)
if bind:
await msg.finish(msg.locale.t('maimai.message.bind.success') + username)
@mai.handle('unbind {{maimai.help.unbind}}', exclude_from=['QQ', 'QQ|Group'])
async def _(msg: Bot.MessageSession):
unbind = DivingProberBindInfoManager(msg).remove_bind_info()
if unbind:
await msg.finish(msg.locale.t('maimai.message.unbind.success'))
@mai.command(['b50 [<username>] {{maimai.help.b50}}',
'b50 beta [<username>] {{maimai.help.b50.beta}}'])
async def _(msg: Bot.MessageSession, username: str = None):
@ -219,7 +233,7 @@ async def _(msg: Bot.MessageSession, id_or_alias: str, diff: str = None):
elif id_or_alias[:2].lower() == "id":
sid = id_or_alias[2:]
else:
sid_list = await search_by_alias(msg, id_or_alias)
sid_list = await search_by_alias(id_or_alias)
if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1:
@ -264,7 +278,7 @@ async def _(msg: Bot.MessageSession, id_or_alias: str, diff: str = None):
touch=chart['notes'][3],
brk=chart['notes'][4],
charter=chart['charter'])
await msg.finish(await get_info(msg, music, Plain(res)))
await msg.finish(await get_info(music, Plain(res)))
else:
res = msg.locale.t(
"maimai.message.song",
@ -273,7 +287,162 @@ async def _(msg: Bot.MessageSession, id_or_alias: str, diff: str = None):
bpm=music['basic_info']['bpm'],
version=music['basic_info']['from'],
level='/'.join((str(ds) for ds in music['ds'])))
await msg.finish(await get_info(msg, music, Plain(res)))
await msg.finish(await get_info(music, Plain(res)))
@mai.command('info <id_or_alias> [<username>] {{maimai.help.info}}')
async def _(msg: Bot.MessageSession, id_or_alias: str, username: str = None):
await query_song_info(msg, id_or_alias, username)
async def query_song_info(msg, query, username):
if query[:2].lower() == "id":
sid = query[2:]
else:
sid_list = await search_by_alias(query)
if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1:
res = msg.locale.t("maimai.message.song.prompt") + "\n"
for sid in sorted(sid_list, key=int):
s = (await total_list.get()).by_id(sid)
res += f"{s['id']}\u200B. {s['title']}{' (DX)' if s['type'] == 'DX' else ''}\n"
await msg.finish(res.strip())
else:
sid = str(sid_list[0])
music = (await total_list.get()).by_id(sid)
if not music:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
output = await get_player_score(msg, payload, sid)
await msg.finish(await get_info(music, Plain(output)))
@mai.command('plate <plate> [<username>] {{maimai.help.plate}}')
async def _(msg: Bot.MessageSession, plate: str, username: str = None):
await query_plate(msg, plate, username)
async def query_plate(msg, plate, username):
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
if plate in ['真将', '真將'] or (plate[1] == '' and plate[0] != ''):
await msg.finish(msg.locale.t('maimai.message.plate.plate_not_found'))
output, get_img = await get_plate_process(msg, payload, plate)
if get_img:
img = await msgchain2image([Plain(output)], msg)
if img:
await msg.finish([BImage(img)])
else:
await msg.finish(output.strip())
else:
await msg.finish(output.strip())
@mai.command('process <level> <goal> [<username>] {{maimai.help.process}}')
async def _(msg: Bot.MessageSession, level: str, goal: str, username: str = None):
goal_list = ["A", "AA", "AAA", "S", "S+", "SS", "SS+", "SSS", "SSS+",
"FC", "FC+", "AP", "AP+", "FS", "FS+", "FDX", "FDX+"]
level_list = ['1', '2', '3', '4', '5', '6', '7', '7+', '8', '8+', '9', '9+',
'10', '10+', '11', '11+', '12', '12+', '13', '13+', '14', '14+', '15']
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
if level in level_list:
level_num = int(level.split('+')[0])
if level_num < 8:
await msg.finish(msg.locale.t("maimai.message.process.less_than_8"))
else:
await msg.finish(msg.locale.t("maimai.message.level_invalid"))
if goal.upper() not in goal_list:
await msg.finish(msg.locale.t("maimai.message.goal_invalid"))
output, get_img = await get_level_process(msg, payload, level, goal)
if get_img:
img = await msgchain2image([Plain(output)])
if img:
await msg.finish([BImage(img)])
else:
await msg.finish(output.strip())
else:
await msg.finish(output.strip())
@mai.command('rank [<username>] {{maimai.help.rank}}')
async def _(msg: Bot.MessageSession, username: str = None):
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
await get_rank(msg, payload)
@mai.command('scorelist <level> <page> [<username>] {{maimai.help.scorelist}}')
async def _(msg: Bot.MessageSession, level: str, page: str, username: str = None):
if not username:
if msg.target.sender_from == "QQ":
payload = {'qq': msg.session.sender}
else:
username = DivingProberBindInfoManager(msg).get_bind_username()
if not username:
await msg.finish(msg.locale.t("maimai.message.user_unbound", prefix=msg.prefixes[0]))
payload = {'username': username}
else:
payload = {'username': username}
output, get_img = await get_score_list(msg, payload, level, page)
if get_img:
img = await msgchain2image([Plain(output)])
if img:
await msg.finish([BImage(img)])
else:
await msg.finish(output.strip())
else:
await msg.finish([Plain(output.strip())])
@mai.command('random <diff+level> [<dx_type>] {{maimai.help.random.filter}}')
@ -310,7 +479,7 @@ async def _(msg: Bot.MessageSession, dx_type: str = None):
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
else:
music = music_data.random()
await msg.finish(await get_info(msg, music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
await msg.finish(await get_info(music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
except (ValueError, TypeError):
await msg.finish(msg.locale.t("maimai.message.random.failed"))
@ -318,7 +487,7 @@ async def _(msg: Bot.MessageSession, dx_type: str = None):
@mai.command('random {{maimai.help.random}}')
async def _(msg: Bot.MessageSession):
music = (await total_list.get()).random()
await msg.finish(await get_info(msg, music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
await msg.finish(await get_info(music, Plain(f"{'/'.join(str(ds) for ds in music.ds)}")))
@mai.command('scoreline <sid> <diff> <score> {{maimai.help.scoreline}}')

View file

@ -5,6 +5,7 @@ from core.component import module
from .libraries.maimaidx_apidata import get_alias, get_info, search_by_alias
from .libraries.maimaidx_music import TotalList
from .libraries.maimaidx_utils import get_diff, get_grade_info
from .maimai import query_plate, query_song_info
total_list = TotalList()
@ -23,7 +24,7 @@ async def _(msg: Bot.MessageSession):
if name[:2].lower() == "id":
sid = name[2:]
else:
sid_list = await search_by_alias(msg, name)
sid_list = await search_by_alias(name)
if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1:
@ -38,7 +39,7 @@ async def _(msg: Bot.MessageSession):
if not music:
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
await msg.finish(await get_info(msg, music, Plain(msg.locale.t("maimai.message.song",
await msg.finish(await get_info(music, Plain(msg.locale.t("maimai.message.song",
artist=music['basic_info']['artist'],
genre=music['basic_info']['genre'],
bpm=music['basic_info']['bpm'],
@ -62,6 +63,20 @@ async def _(msg: Bot.MessageSession):
await msg.finish([Plain(result.strip())])
@mai_regex.regex(re.compile(r"(.+)\s?有什[么麼]分\s?(.+)?"), desc='{maimai.help.maimai_regex.info}')
async def _(msg: Bot.MessageSession):
songname = msg.matched_msg.groups()[0]
username = msg.matched_msg.groups()[1]
await query_song_info(msg, songname, username)
@mai_regex.regex(re.compile(r"(.?)([極极将將舞神者]舞?)[进進]度\s?(.+)?"), desc='{maimai.help.maimai_regex.plate}')
async def _(msg: Bot.MessageSession):
plate = msg.matched_msg.groups()[0] + msg.matched_msg.groups()[1]
username = msg.matched_msg.groups()[2]
await query_plate(msg, plate, username)
@mai_regex.regex(re.compile(r"(?:随个|隨個)\s?((?:dx|DX|sd|SD|标准|標準)\s?)?([绿綠黄黃红紅紫白]?)\s?([0-9]+\+?)"),
desc="{maimai.help.maimai_regex.random}")
async def _(msg: Bot.MessageSession):
@ -84,7 +99,7 @@ async def _(msg: Bot.MessageSession):
await msg.finish(msg.locale.t("maimai.message.music_not_found"))
else:
music = music_data.random()
await msg.finish(await get_info(msg, music, Plain(f"\n{'/'.join(str(ds) for ds in music.ds)}")))
await msg.finish(await get_info(music, Plain(f"\n{'/'.join(str(ds) for ds in music.ds)}")))
except ValueError:
await msg.finish(msg.locale.t("maimai.message.random.failed"))