{"id":16759404,"url":"https://github.com/cleoold/scripter-for-nonebot-sendo-erika","last_synced_at":"2025-03-16T08:26:20.085Z","repository":{"id":126543898,"uuid":"207048226","full_name":"cleoold/scripter-for-nonebot-sendo-erika","owner":"cleoold","description":"tiny scripting plugin for nonebot","archived":false,"fork":false,"pushed_at":"2020-10-18T02:47:42.000Z","size":35,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T20:51:35.950Z","etag":null,"topics":["qq","qqbot"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cleoold.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-08T01:56:11.000Z","updated_at":"2020-10-18T02:47:44.000Z","dependencies_parsed_at":"2023-06-17T05:00:19.034Z","dependency_job_id":null,"html_url":"https://github.com/cleoold/scripter-for-nonebot-sendo-erika","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleoold%2Fscripter-for-nonebot-sendo-erika","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleoold%2Fscripter-for-nonebot-sendo-erika/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleoold%2Fscripter-for-nonebot-sendo-erika/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cleoold%2Fscripter-for-nonebot-sendo-erika/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cleoold","download_url":"https://codeload.github.com/cleoold/scripter-for-nonebot-sendo-erika/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243844178,"owners_count":20356991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["qq","qqbot"],"created_at":"2024-10-13T04:08:04.076Z","updated_at":"2025-03-16T08:26:20.059Z","avatar_url":"https://github.com/cleoold.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## scripter for [sendo erika](https://github.com/cleoold/sendo-erika) on [NoneBot](https://github.com/richardchien/nonebot)\n![Python](https://img.shields.io/badge/python-3.7%2B-blue.svg)\n\u003chr /\u003e\n\n某天突发奇想，然后就写出了这个插件的雏形。这个插件可以在聊天窗口控制 Nonebot 群聊机器人来发送消息。目前还仅支持延时发送。您可以通过本文档快速学习它的用法（这个插件相当于一个远程 `eval`）：\n\n### 样例\n```py\n    script\n    speak \"开始计时\"\n    wait 10\n    speak \"十秒钟到！\"\n\n[00:00:01]开始计时\n[00:00:11]十秒钟到！\n```\n\n### 安装\n只需要把文件夹复制粘贴到 `plugin` 中就可以了。\n\n### 使用\n群成员可以在群聊中直接发送\n```py\n    script\n    [代码]\n```\n来操作机器人，在此情况下会有消息数目，持续时间和冷却的限制。此时机器人直接将消息发送到当前的群。超级用户可以在私聊窗口里发送\n```py\n    scriptto 12345678\n    [代码]\n```\n来把消息发送到特定的群 12345678 里。\n\n#### 还不支持...\n条件，表达式，等等……如果要实现可能要推翻现在已有的进展……目前的主要目的是延时发送消息。\n\n#### 数据类型\n和 宿主机 Python 的 __整形__ 和 __字符串__ 相同。\n\n#### 关键字\n插件会顺序解释脚本的关键字并且把行为推入事件队列，最后按照这个顺序发送消息。\n\n*   __`speak \"a string literal\"`__\n    机器人会发送消息到目前的 session，其中字符串必须由一对双引号包围。\n    例子：\n    ```py\n        script\n        speak \"hello world\"\n\n    [00:00:01]hello world\n    ```\n*   __`wait some_int`__\n    机器人会在此暂停 some_int 秒再执行下一步操作。\n    例子：\n    ```py\n        script\n        wait 5\n        speak \"hello world\"\n\n    [00:00:05]hello world\n    ```\n\n*   __`setv var_name = some_value`__\n    定义一个变量（大多数是字符串）将 some_value 的内容赋予 var_name 中。\n    例子：\n    ```py\n        script\n        setv msg = \"hello\"\n        setv delay = 5\n        speak msg\n        wait delay\n        speak msg\n\n    [00:00:01]hello\n    [00:00:05]hello\n    ```\n    例子（覆盖变量）：\n    ```py\n        script\n        setv x = \"hello\"\n        setv x = \"henlo\"\n        speak x\n    \n    [00:00:01]henlo\n    ```\n\n*   __`unsetv var_name`__\n    虽然这可能不是必要的，但是这样会删除一个变量并且使之不可引用。\n    （如果遇到了 bug 删除变量会可能有用？）\n    例子：\n    ```py\n        script\n        setv x = \"a\"\n        unsetv x\n        speak x\n\n    [00:00:01]ERROR: x is not defined. --TERMINAING\n    ```\n\n*   `...`\n    处理相关关键字的函数都颇为相似，在类定义里复制你的命令，再把实现函数传入到 `EvalGrammar` 对象的字典就好，可参考 `speak`。\n\nThat's almost it! 这就是本插件的大多数功能了。以后就可以延时控制机器人说话了。\n\n#### 关键字（自增）\n*   __`setv var_name + amt`__\n    也支持 `-` 和 `*`。可以把 `var_name` 的值增加 `amt`。\n    例子（没有表达式的妥协）：\n    ```py\n        script\n        setv a = 10\n        setv a + 5\n        setv a * 2\n        setv a - 2\n        speak a\n\n    [00:00:01]28\n    ```\n\n*   __`setv var_name \\+ amt`__\n    在普通算符前面加上斜杠表示交换两个值之间的运算顺序\n    例子：\n    ```py\n        script\n        setv a = \"|||\"\n        setv a + \"]]]\"\n        setv a \\+ \"[[[\"\n        speak a\n\n    [00:00:01][[[|||]]]\n    ```\n    例子（减法没有交换律）：\n    ```py\n        script\n        setv x = 3\n        setv y = x\n        setv x - 10\n        setv y \\- 10\n        speak x; speak y\n\n    [00:00:01]-7\n    [00:00:01]7\n    ```\n\n\n#### 关键字（控制）\n\n*   __`loop`__\n    可以重复地执行某段代码片段。在开始时会创建覆写一个变量，需要注意。\n    例子（每隔 10 秒发送一条消息，发送 3 次）：\n    ```py\n        script\n        loop setv i = 1 to 4 that\n            setv temp = \"hi\"\n            setv temp * i\n            speak temp\n            wait 10\n        endloop\n\n    [00:00:01]hi\n    [00:00:11]hihi\n    [00:00:21]hihihi\n    ```\n    例子（可选步长）：\n    ```py\n        script\n        setv r = \"\"\n        loop setv i = 0 to 100 step 5 that\n            setv r + i\n            setv r + \" \"\n        endloop\n        speak r\n\n    [00:00:01]0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 \n    ```\n    默认设置只允许嵌套两层循环。\n    例子（笨办法打印一个乘法表）：\n    ```py\n        script:\n        setv sum = \"\"\n        loop setv i = 0 to 10 that \n            loop setv j = 0 to i that\n                setv jj = j \n                setv jj + 1\n                setv v = i\n                setv v * jj\n\n                setv sum + jj\n                setv sum + \"*\"\n                setv sum + i\n                setv sum + \"=\"\n                setv sum + v\n                setv sum + \"   \"\n            endloop\n            setv sum + \"\\n\"\n        endloop \n        speak sum\n\n    \n    [00:00:01]1*1=1   \n    1*2=2   2*2=4   \n    1*3=3   2*3=6   3*3=9   \n    1*4=4   2*4=8   3*4=12   4*4=16   \n    1*5=5   2*5=10   3*5=15   4*5=20   5*5=25   \n    1*6=6   2*6=12   3*6=18   4*6=24   5*6=30   6*6=36   \n    1*7=7   2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49   \n    1*8=8   2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64   \n    1*9=9   2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72  9*9=81\n\n    ```\n\n#### features coming in their way\n\n### License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleoold%2Fscripter-for-nonebot-sendo-erika","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcleoold%2Fscripter-for-nonebot-sendo-erika","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcleoold%2Fscripter-for-nonebot-sendo-erika/lists"}