fix
This commit is contained in:
parent
2deb654198
commit
9837f92411
5 changed files with 60 additions and 60 deletions
|
@ -8,61 +8,61 @@ test = module('test')
|
|||
|
||||
|
||||
@test.command()
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> ~test
|
||||
# <<< Hello World!
|
||||
await session.send_message('Hello World!')
|
||||
await msg.send_message('Hello World!')
|
||||
|
||||
|
||||
@test.command('say <word>')
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> ~test say Hello World!
|
||||
# <<< Hello World!
|
||||
await session.finish(session.parsed_msg['<word>'])
|
||||
await msg.finish(msg.parsed_msg['<word>'])
|
||||
|
||||
|
||||
@test.command('reply')
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> ~test reply
|
||||
# <<< Reply me!
|
||||
# >>> Hello World! >> [Reply me!]
|
||||
# <<< Hello World!
|
||||
s = await session.wait_reply('Send a word')
|
||||
s = await msg.wait_reply('Send a word')
|
||||
await s.send_message(s.as_display())
|
||||
|
||||
|
||||
@test.command('confirm')
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> ~test confirm
|
||||
# <<< Are you sure?
|
||||
# >>> Yes
|
||||
# <<< OK!
|
||||
s = await session.wait_confirm('Are you sure?')
|
||||
s = await msg.wait_confirm('Are you sure?')
|
||||
if s:
|
||||
await s.send_message('OK!')
|
||||
|
||||
|
||||
@test.command('image')
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> ~test image
|
||||
# <<< A picture: Image(url='https://http.cat/100.jpg')
|
||||
await session.send_message([Plain('A picture:'), Image('https://http.cat/100.jpg')])
|
||||
await msg.send_message([Plain('A picture:'), Image('https://http.cat/100.jpg')])
|
||||
|
||||
|
||||
@test.regex(re.compile(r'\{\{(.*)}}'), mode='M') # re.match
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> {{Hello World!}}
|
||||
# <<< Hello World!
|
||||
await session.finish(session.matched_msg.group(1))
|
||||
await msg.finish(msg.matched_msg.group(1))
|
||||
|
||||
|
||||
@test.regex(re.compile(r'\[\[(.*)]]'), mode='A') # re.findall
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> [[Hello]] [[World]]
|
||||
# <<< Hello
|
||||
# <<< World
|
||||
await session.send_message(session.matched_msg[0])
|
||||
await session.finish(session.matched_msg[1])
|
||||
await msg.send_message(msg.matched_msg[0])
|
||||
await msg.finish(msg.matched_msg[1])
|
||||
|
||||
|
||||
@test.schedule(IntervalTrigger(seconds=30))
|
||||
|
@ -72,17 +72,17 @@ async def _():
|
|||
|
||||
|
||||
@test.handle('test') # all in one handler, including command, regex and schedule
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> ~test test
|
||||
# <<< Hello World!
|
||||
await session.finish('Hello World!')
|
||||
await msg.finish('Hello World!')
|
||||
|
||||
|
||||
@test.handle(re.compile(r'<(.*)>'), mode='A') # re.findall
|
||||
async def _(session: Bot.MessageSession):
|
||||
async def _(msg: Bot.MessageSession):
|
||||
# >>> <Hello World!>
|
||||
# <<< Hello World!
|
||||
await session.finish(session.matched_msg[0])
|
||||
await msg.finish(msg.matched_msg[0])
|
||||
|
||||
|
||||
@test.handle(IntervalTrigger(seconds=60))
|
||||
|
|
|
@ -29,11 +29,11 @@ async def _(msg: Bot.MessageSession, dices, dc='0'):
|
|||
|
||||
|
||||
@dice.regex(r"[扔投掷擲丢]([0-9]*)?[个個]([0-9]*面)?骰子?([0-9]*次)?", desc="{dice.help.regex.desc}")
|
||||
async def _(message: Bot.MessageSession):
|
||||
groups = message.matched_msg.groups()
|
||||
async def _(msg: Bot.MessageSession):
|
||||
groups = msg.matched_msg.groups()
|
||||
dice_type = groups[1][:-1] if groups[1] else '6'
|
||||
roll_time = groups[2][:-1] if groups[2] else '1'
|
||||
await message.finish(await GenerateMessage(message, f'{groups[0]}D{dice_type}', int(roll_time), 0))
|
||||
await msg.finish(await GenerateMessage(msg, f'{groups[0]}D{dice_type}', int(roll_time), 0))
|
||||
|
||||
|
||||
@dice.command('rule {{dice.help.rule}}', required_admin=True)
|
||||
|
|
|
@ -20,18 +20,18 @@ MAX_ITEM_COUNT = Config('dice_count_limit', 10) # 骰子多项式最多的项
|
|||
class DiceSyntaxError(Exception):
|
||||
"""骰子语法错误"""
|
||||
|
||||
def __init__(self, session, message):
|
||||
self.message = session.locale.t("dice.message.error.syntax") + message
|
||||
def __init__(self, msg, message):
|
||||
self.message = msg.locale.t("dice.message.error.syntax") + message
|
||||
|
||||
|
||||
class DiceValueError(Exception):
|
||||
"""骰子参数值错误"""
|
||||
|
||||
def __init__(self, session, message, value=None):
|
||||
def __init__(self, msg, message, value=None):
|
||||
if value:
|
||||
self.message = session.locale.t("dice.message.error.value.invalid", value=value) + message
|
||||
self.message = msg.locale.t("dice.message.error.value.invalid", value=value) + message
|
||||
else:
|
||||
self.message = session.locale.t("dice.message.error.value") + message
|
||||
self.message = msg.locale.t("dice.message.error.value") + message
|
||||
|
||||
|
||||
class DiceItemBase(object):
|
||||
|
@ -52,24 +52,24 @@ class DiceItemBase(object):
|
|||
def GetDetail(self):
|
||||
return self.detail
|
||||
|
||||
def Roll(self, session):
|
||||
def Roll(self, msg, use_markdown=False):
|
||||
pass
|
||||
|
||||
|
||||
class DiceMod(DiceItemBase):
|
||||
"""调节值项"""
|
||||
|
||||
def __init__(self, session, dice_code: str, positive: bool):
|
||||
def __init__(self, msg, dice_code: str, positive: bool):
|
||||
super().__init__(dice_code, positive)
|
||||
if not dice_code.isdigit():
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.M.invalid"),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.M.invalid"),
|
||||
'+' if self.positive else '-' + dice_code)
|
||||
else:
|
||||
self.result = int(dice_code)
|
||||
if self.result > MAX_MOD_NUMBER or self.result < MIN_MOD_NUMBER:
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.M.out_of_range", min=MIN_MOD_NUMBER,
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.M.out_of_range", min=MIN_MOD_NUMBER,
|
||||
max=MAX_MOD_NUMBER),
|
||||
self.result)
|
||||
|
||||
|
@ -80,37 +80,37 @@ class DiceMod(DiceItemBase):
|
|||
class Dice(DiceItemBase):
|
||||
"""骰子项"""
|
||||
|
||||
def __init__(self, session, dice_code: str, positive: bool):
|
||||
def __init__(self, msg, dice_code: str, positive: bool):
|
||||
|
||||
dice_code = dice_code.replace(' ', '')
|
||||
super().__init__(dice_code, positive)
|
||||
args = self.GetArgs(session)
|
||||
args = self.GetArgs(msg)
|
||||
self.count = args[0]
|
||||
self.type = args[1]
|
||||
self.adv = args[2]
|
||||
if self.count <= 0 or self.count > MAX_DICE_COUNT:
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.n.out_of_range", max=MAX_DICE_COUNT),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.n.out_of_range", max=MAX_DICE_COUNT),
|
||||
self.count)
|
||||
if self.type <= 0:
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.n.less2"),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.n.less2"),
|
||||
self.count)
|
||||
if self.type == 1:
|
||||
raise DiceValueError(session, session.locale.t("dice.message.error.value.n.d1"))
|
||||
raise DiceValueError(msg, msg.locale.t("dice.message.error.value.n.d1"))
|
||||
if abs(self.adv) > self.count:
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.k.out_of_range"),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.k.out_of_range"),
|
||||
self.adv)
|
||||
|
||||
def GetArgs(self, session):
|
||||
def GetArgs(self, msg):
|
||||
dice_code = self.code.upper() # 便于识别
|
||||
dice_count = '1' # 骰子数量
|
||||
advantage = '0' # 保留的骰子量
|
||||
if re.search(r'[^0-9DKL]', dice_code):
|
||||
raise DiceSyntaxError(session, session.locale.t("dice.message.error.syntax.invalid"))
|
||||
raise DiceSyntaxError(msg, msg.locale.t("dice.message.error.syntax.invalid"))
|
||||
if 'D' not in dice_code:
|
||||
raise DiceSyntaxError(session, session.locale.t("dice.message.error.syntax.missing_d"))
|
||||
raise DiceSyntaxError(msg, msg.locale.t("dice.message.error.syntax.missing_d"))
|
||||
temp = dice_code.split('D')
|
||||
if len(temp[0]):
|
||||
dice_count = temp[0]
|
||||
|
@ -124,21 +124,21 @@ class Dice(DiceItemBase):
|
|||
advantage += '1' # K/KL后没有值默认为1
|
||||
# 语法合法检定
|
||||
if not dice_count.isdigit():
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.m.invalid"),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.m.invalid"),
|
||||
dice_count)
|
||||
if not dice_type.isdigit():
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.n.invalid"),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.n.invalid"),
|
||||
dice_type)
|
||||
if not (advantage.isdigit() or (advantage[0] == '-' and advantage[1:].isdigit())):
|
||||
raise DiceValueError(session,
|
||||
session.locale.t("dice.message.error.value.k.invalid"),
|
||||
raise DiceValueError(msg,
|
||||
msg.locale.t("dice.message.error.value.k.invalid"),
|
||||
advantage)
|
||||
return (int(dice_count), int(dice_type), int(advantage))
|
||||
|
||||
def Roll(self, session, use_markdown=False):
|
||||
if session.target.sender_from in ['Discord', 'Kook']:
|
||||
def Roll(self, msg, use_markdown=False):
|
||||
if msg.target.sender_from in ['Discord|Client', 'Kook|User']:
|
||||
use_markdown = True
|
||||
output = ''
|
||||
result = 0
|
||||
|
@ -166,7 +166,7 @@ class Dice(DiceItemBase):
|
|||
if i < self.count - 1:
|
||||
output_buffer += ', '
|
||||
if self.count >= MAX_OUTPUT_CNT:
|
||||
output_buffer = session.locale.t("dice.message.output.too_long", length=self.count)
|
||||
output_buffer = msg.locale.t("dice.message.output.too_long", length=self.count)
|
||||
output += output_buffer + ') = '
|
||||
dice_results = new_results
|
||||
# 公用加法
|
||||
|
@ -174,7 +174,7 @@ class Dice(DiceItemBase):
|
|||
if (length > 1):
|
||||
output += '['
|
||||
if length > MAX_OUTPUT_CNT: # 显示数据含100
|
||||
output += session.locale.t("dice.message.output.too_long", length=length)
|
||||
output += msg.locale.t("dice.message.output.too_long", length=length)
|
||||
for i in range(length):
|
||||
result += dice_results[i]
|
||||
if length <= MAX_OUTPUT_CNT: # 显示数据含100
|
||||
|
@ -185,7 +185,7 @@ class Dice(DiceItemBase):
|
|||
else:
|
||||
result = dice_results[0]
|
||||
if len(output) > MAX_OUTPUT_LEN:
|
||||
output = session.locale.t("dice.message.too_long")
|
||||
output = msg.locale.t("dice.message.too_long")
|
||||
self.detail = output + f"{result}"
|
||||
self.result = result
|
||||
|
||||
|
|
|
@ -20,10 +20,10 @@
|
|||
"dice.message.error.dc.invalid": "發生錯誤:無效的 dc:",
|
||||
"dice.message.error.N.invalid": "發生錯誤:無效的投骰次數:",
|
||||
"dice.message.error.prompt": "第 ${i} 項發生",
|
||||
"dice.message.error.syntax": "語法錯誤: ",
|
||||
"dice.message.error.syntax": "語法錯誤:",
|
||||
"dice.message.error.syntax.invalid": "骰子語句中存在無法辨識的字元。",
|
||||
"dice.message.error.syntax.missing_d": "骰子語句缺失字元 D。",
|
||||
"dice.message.error.value": "參數錯誤: ",
|
||||
"dice.message.error.value": "參數錯誤:",
|
||||
"dice.message.error.value.invalid": "參數错误:輸入為「${value}」,",
|
||||
"dice.message.error.value.k.invalid": "無效的優劣勢。",
|
||||
"dice.message.error.value.k.out_of_range": "優劣势骰數大於總骰子數。",
|
||||
|
|
|
@ -17,7 +17,7 @@ async def set_start_wiki(msg: Bot.MessageSession):
|
|||
if check.available:
|
||||
if not check.value.in_blocklist or check.value.in_allowlist:
|
||||
result = WikiTargetInfo(msg).add_start_wiki(check.value.api)
|
||||
if result and enable_urlmanager and not check.value.in_allowlist and msg.target.sender_from in ['QQ', 'Kook']:
|
||||
if result and enable_urlmanager and not check.value.in_allowlist and msg.target.sender_from in ['QQ', 'Kook|User']:
|
||||
prompt = '\n' + msg.locale.t("wiki.message.wiki_audit.untrust")
|
||||
if Config("wiki_whitelist_url"):
|
||||
prompt += '\n' + msg.locale.t("wiki.message.wiki_audit.untrust.address", url=Config("wiki_whitelist_url"))
|
||||
|
@ -41,7 +41,7 @@ async def _(msg: Bot.MessageSession):
|
|||
if check.available:
|
||||
if not check.value.in_blocklist or check.value.in_allowlist:
|
||||
result = target.config_interwikis(iw, check.value.api, let_it=True)
|
||||
if result and enable_urlmanager and not check.value.in_allowlist and msg.target.sender_from in ['QQ', 'Kook']:
|
||||
if result and enable_urlmanager and not check.value.in_allowlist and msg.target.sender_from in ['QQ', 'Kook|User']:
|
||||
prompt = '\n' + msg.locale.t("wiki.message.wiki_audit.untrust")
|
||||
if Config("wiki_whitelist_url"):
|
||||
prompt += '\n' + msg.locale.t("wiki.message.wiki_audit.untrust.address", url=Config("wiki_whitelist_url"))
|
||||
|
|
Reference in a new issue