Archived
1
0
Fork 0
This commit is contained in:
多羅狼 2024-01-26 17:17:42 +08:00 committed by GitHub
parent 2deb654198
commit 9837f92411
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 60 additions and 60 deletions

View file

@ -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))

View file

@ -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)

View file

@ -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

View file

@ -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": "優劣势骰數大於總骰子數。",

View file

@ -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"))