0

使用标准库

代码看起来像<srai>XCAR AB, CD</srai>

但是堆栈跟踪显示[0] srai of XCAR AB,CD删除了空间。

使用Pandorabots.com

我正在尝试, 使用 XSUBSTRING 遍历一串长度一致的 -delineated 单词,以便将每个单词映射到人类可读的输出。

因此,我使用嵌套类别来获取和打印基于外部类别的更新索引谓词的每个 XSUBSTRING 的 XCAR。

这是外部类别的代码:

<category>
    <pattern>COMMAND</pattern>
    <template>
        <think>
            <set name="index">0</set>
            <set name="allitemsprinted">FALSE</set>
        </think>
        
        This part prints for me.
        <br/><br/>
        So does this.
        
        <!-- iterate through "ties" -->
        <condition name="allitemsprinted" value="FALSE">
            But this doesn't print.
            Nor does anything after.
            This srai works correctly:
            <srai>XCDR UX, SE, CS</srai>
            <srai>PRINT ITEM</srai>
            <loop/>
        </condition>
        
        <br/>
    </template>
</category>

这是嵌套类别:

<category>
    <pattern>PRINT ITEM</pattern>
    <template>
        <think>
            <set var="itemlocation">
                <!-- 2-char name plus delim -->
                <srai>XMUL <get name="index"/> XS 4</srai>
            </set>
            
            <set var="remainingitems">
                <srai>XSUBSTRING <get name="items"/> XS <get var="itemlocation"/></srai>
            </set>
            
            <!-- increment index -->
            <set name="index">
                <map name="successor">
                    <get name="index"/>
                </map>
            </set>
            
            <!-- check for end of list -->
            <set name="allitemsprinted">
                <srai>XGT <get name="index"/> XS <get name="itemcount"/></srai>
            </set>
        </think>
        
        Remaining items: <get var="remainingitems"/>
        
        First remaining item: <srai>XCAR <get var="remainingitems"/></srai>
        
        <!-- human-readable output -->
        <map name="itemsreadable">
            <srai>XCAR <get var="remainingitems"/></srai>
        </map>
        <br/>
    </template>
</category>

Pandorabots 提供的堆栈跟踪显示<srai>内部<condition>确实被调用了。但它根本不会打印任何东西。

4

1 回答 1

0

首先,确保 normal.substitution 具有删除逗号的条目,[",", ""],因为机器人需要处理逗号的情况很少见。

假设您的地图是这样的:

[
    ["UX", "User Experience"], 
    ["SE", "Sales Entry"], 
    ["CS", "Customer Services"]
]

然后,您可以这样做以获得人类可读的输出(您不需要标准库):

<category>
    <pattern>COMMAND</pattern>
    <template>
        <think><set name="itemlist">UX, SE, CS</set></think>
        <srai>PRINT ITEM <get name="itemlist"/></srai>
    </template>
</category>

<category>
    <pattern>PRINT ITEM * *</pattern>
    <template>
        <map name="itemsreadable"><star/></map><br/>
        <srai>PRINT ITEM <star index="2"/></srai>
    </template>
</category>

<category>
    <pattern>PRINT ITEM *</pattern>
    <template>
        <map name="itemsreadable"><star/></map>
    </template>
</category>

这将产生以下内容:

在此处输入图像描述

于 2021-12-01T18:42:14.990 回答