为SmallD bot添加单击支持。

smalld-click的Python项目详细描述


小点击

PyPI version ^{1}$ MaintainabilityTest CoverageConventional CommitsDiscord

SmallD Click是SmallD的扩展,它允许使用 ClickCLI应用程序作为不一致机器人程序。在

安装

使用pip安装:

$ pip install smalld-click

示例

^{pr2}$

对于这个CLI示例,如果用户发送消息“+++hello--count=2”,那么bot将询问用户- 通过在同一个频道中发送一条信息——他们的名字是“你的名字:”。在

例如,如果用户回答“lymni”,bot将发送两次消息“Hello lymni”。在

请注意,尽管我们多次调用click.echo,但bot只响应一条消息,而不是两条消息。 这是因为对echo的调用是缓冲的。但是,调用prompt将导致刷新此缓冲区及其 内容立即发送。在

Example Run

bot等待用户消息的时间也有一个超时,如果超过超时,bot将 只需删除命令的执行。在

例如,多个命令以不同的名称运行(即没有通用的基本命令名) 参见multicommands bot。在

指南

SmallDCliRunner(smalld,cli,prefix="",name=None,timeout=60,create_message=None,executor=None)

SmallDCliRunner是运行CLI应用程序的核心类。在

  • smalldbot的SmallD实例。在
  • cli用于运行命令的click.Command实例。在
  • prefix每个命令调用都必须以这个字符串开头。在
  • nameCLI应用程序的名称,默认为cli.name。可用于更改命令的名称, 或者通过传递空字符串将其完全删除。与前缀一起使用,以确定哪些消息 将其视为对CLI应用程序的调用。在
  • timeoutbot等待用户响应提示的时间(秒)。在
  • create_message为discord的create message路由创建消息负载的回调。 默认情况下,文本在有效负载的content字段中按原样发送。在
  • executor用于执行命令的concurrent.futures.Executor的实例。默认情况下, 这是一个concurrent.futures.ThreadPoolExecutor。在

此类的实例应用作上下文管理器,以修补单击函数并正确关闭 机器人停止时的执行器。在

Conversation(runner,message)

表示命令调用的状态。保存运行器实例和消息负载。 还可以管理用户和CLI应用程序之间的交互。在

每次提示后,消息都更新为用户发送的最新消息。在

get_conversation()

返回当前对话。只能在命令处理程序内部调用。在

修补功能

您可以直接使用click.echo,和click.prompt来发送/等待消息。在

使用hide_input=True隐藏的提示将被发送到用户DM,并在那里继续对话。在

注意,echo和prompt将在与触发命令调用的消息相同的通道中发送消息。在

对echo的调用被缓冲。当缓冲区被刷新时,它的内容以2K块的形式发送(由discord设置的限制) 当出现提示、命令完成执行或内容时,可以自动刷新缓冲区 在缓冲区中超过2K限制。在

也可以通过将flush=True传递给click.echo调用来刷新缓冲区。在

致谢

Princess Lana提出的创意。在

贡献

  • Tox用于运行测试。
    • 运行tox -e以运行安装的python版本的测试
    • 运行tox -e fmt格式化代码
  • Conventional Commits用于提交消息和请求请求

显影

Tox用于在使用SmallD Click时设置和管理虚拟环境

要运行测试:

$ tox

要运行示例greet bot:

$ tox -e run -- examples/greet.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使Eclipse在其控制台中显示最顶层的异常,而不是完整的堆栈跟踪   java如何为一个组件提供多个DropTargetListener?   在Eclipse包资源管理器中,有些文件不可见?   java在Spring Boot中使用@Bean配置设置类属性的默认值   在JTextPane中使用#链接的Java HTML?   java当应用程序打开时,如何将通知内容发送给活动?   java Android ROOM如何编写包含多个实体的查询,这是在哪里完成的?   Play Framework的java登录/注销问题?   java如何从安卓 Cordova/Phonegap调用javascript函数   JavaFX8如何在Java8中显示上次修改的LocalDateTime?   javabean验证中的多个约束注释   java使用JSTL设置请求属性   java在Android启动的服务中调用函数   用于检查xml是否包含键和值的java XPath表达式   在java游戏中使用斜坡因子挥杆   Java文件:尝试使用FileWriter将结果附加到已经存在的文件中   bootclasspath Java Xbootclasspath,相对路径   java我如何让这个“怪物战斗模拟器”工作?   swing使用动作侦听器隐藏和显示java桌面应用程序