nonebot / aiocqhttp

A Python SDK with async I/O for CQHTTP (OneBot).
https://aiocqhttp.nonebot.dev
MIT License
280 stars 39 forks source link

fix #60 #65

Closed LHXnois closed 2 years ago

LHXnois commented 2 years ago

fix #60

LHXnois commented 2 years ago

这样修改后应该可以解析参数有空值的cq码

cleoold commented 2 years ago

@richardchien @mnixry @LHXnois

looks ok to you?

from aiocqhttp import Message

def test_Message_init():
    assert Message('[CQ') \
        == Message([{'type': 'text', 'data': {'text': '[CQ'}}])

    assert Message('[CQ:foo') \
        == Message([{'type': 'text', 'data': {'text': '[CQ:foo'}}])

    assert Message('[CQ:foo]') \
        == Message([{'type': 'foo', 'data': {}}])

    assert Message('[CQ:foo,bar=]') \
        == Message([{'type': 'foo', 'data': {'bar': ''}}])
        # == Message([{'type': 'text', 'data': {'text': '[CQ:foo,bar=]'}}])

    assert Message('[CQ:foo,bar=123456&789]') \
        == Message([{'type': 'foo', 'data': {'bar': '123456&789'}}])

    assert Message('[CQ:foo,bar=123456&789,baz=abcd[efg]') \
        == Message([{'type': 'foo', 'data': {'bar': '123456&789', 'baz': 'abcd[efg'}}])

    assert Message('[CQ:foo,bar=123456&789,baz=abcd[efg,image=]') \
        == Message([{'type': 'foo', 'data': {'bar': '123456&789', 'baz': 'abcd[efg', 'image': ''}}])
        # == Message([{'type': 'text', 'data': {'text': '[CQ:foo,bar=123456&789,baz=abcd[efg,image=]'}}])

    assert Message('[CQ:foo,bar=123456&789,baz=abcd[efg,image=,qq=123456&789]') \
        == Message([{'type': 'foo', 'data': {'bar': '123456&789', 'baz': 'abcd[efg', 'image': '', 'qq': '123456&789'}}])
        # == Message([{'type': 'text', 'data': {'text': '[CQ:foo,bar=123456&789,baz=abcd[efg,image=,qq=123456&789]'}}])