用 Clojure 编写的聊天机器人,随时为您服务。
您可以将 Yetibot 视为公共命令行。它擅长:
Yetibot 的功能强大而伟大,也就是说很有趣:
查看使用示例以了解一些乐趣它可以做有用的事情。
该项目得到以下机构的支持:
欢迎新贡献者!
good first issue
问题适合首次为 Yetibot 贡献者提供帮助@devth
寻求帮助访问 slack.yetibot.com 获取官方 Yetibot slack 的邀请。 Yetibot 运行在 DigitalOcean 慷慨提供的 Droplet 上,您可以在 Slack 中使用它。
要以最少的配置快速试用 Yetibot:
已经在使用 Yetibot 了?请将您自己添加到 Yetibot 用户列表中!
请参阅贡献。
Yetibot 自成立以来一直在不断改进。除了修复错误之外,这些都是当务之急。非常欢迎反馈和贡献!
#yetibot
频道中与 Freenode 上的 Yetibot 交谈或加入 Yetibot Slack! 有几种运行 Yetibot 的方法:
按照 Docker 说明进行操作:如果您已经在使用 Docker,这是最快的方法。
Yetibot-helm :在 Kubernetes 上快速运行 Yetibot 的官方 Helm Chart。
克隆此存储库:这将为您提供标准 Yetibot 安装,并提供一个 git-ignored 的位置来存储配置。使用lein run
从根目录运行。
创建您自己的存储库并依赖 Yetibot :这为您提供了最终的可定制性,允许您依赖自定义 Yetibot 插件或在项目中定义您自己的命令,并让您可以控制存储配置的位置(手动管理、提交到私有 git)回购协议等...)
请参阅配置文档。
有关更多文档,请参阅用户指南。
所有命令都以!
为前缀。
一个命令的输出可以通过管道传输到另一个命令,就像 Unix 管道一样。
!complete does IE support | xargs echo %s? No, it is sucky.
does ie support html5? No, it is sucky.
does ie support css3? No, it is sucky.
does ie support svg? No, it is sucky.
does ie support media queries? No, it is sucky.
does ie support ftps? No, it is sucky.
does ie support png? No, it is sucky.
does ie support canvas? No, it is sucky.
does ie support @font-face? No, it is sucky.
does ie support webgl? No, it is sucky.
does ie support ttf? No, it is sucky.
反引号为子表达式提供了轻量级语法,但它们不能嵌套。
!meme grumpy cat: `catfact` / False
对于任意嵌套的子表达式,请使用$(expr)
语法,它可以消除表达式的打开和关闭的歧义。
!meme philos: $(complete how does one $(users | random | letters | random) | random)
!echo `repeat 4 echo i don't always repeat myself but | unwords`…StackOverflowError | meme interesting:
您可以在运行时构建自己的别名。这些存储在配置的数据库中,因此重新启动后它们将被恢复。
!alias nogrid = repeat 3 echo `repeat 3 meme grumpy: no | join`
可以使用管道,但必须将右侧加引号,以便将其视为文字,而不是根据正常管道行为进行计算。
!alias i5 = "random | echo http://icons.wunderground.com/webcamramdisk/w/a/wadot/324/current.jpg?t=%s&.jpg"
您可以在右侧指定占位符参数,使用$s
指示所有参数,或使用$n
(其中 n 是从 1 开始的 arg 索引)。
!alias temp = "weather $s | head 2 | tail"
!temp 98104
=> 33.6 F (0.9 C), Overcast
IRC :Yetibot 可以收听任意数量的频道。您可以在 config.edn 中配置通道。您还可以使用 IRC /invite
命令在运行时邀请 Yetibot 加入频道:
/invite yetibot #whoa
当您邀请 Yetibot 加入新频道时, config.edn
会被覆盖,因此下次您重新启动 Yetibot 时,它将重新加入相同的频道。
您还可以使用!room
命令告诉 Yetibot 加入或离开频道。
!help room
room join # join
room leave # leave
room list # list rooms that yetibot is in
room set # configure a setting for the current room
room settings # show all chat settings for this room
room settings # show the value for a single setting
Slack :机器人无法自行加入频道,必须受到邀请,因此房间配置不适用。相反, /invite @yetibot
到您所在的任何频道,如果您希望它离开,则/kick @yetibot
。注意:您可能需要特殊权限才能踢球。
不再支持 Campfire。如果您使用 Campfire,请提出问题,我们可以将其重新添加!
其他聊天平台:如果您选择的聊天平台不受支持,请提出问题。添加适配器非常容易。
如果房间的broadcast
设置为true
,则推文将发布到该房间。默认情况下,所有房间都将其设置为 false。启用:
!room set broadcast true
Yetibot 使用其各种命令的文档字符串来自我记录。请求!help
以获取帮助主题列表。 !help all
显示每个主题的完全扩展的命令列表。
!help | join ,
Use help for more details, !, that, alias, ascii, asciichart,
attack, buffer, catfact, chat, chuck, classnamer, clj, cls, complete, config,
count, curl, ebay, echo, eval, features, gh, giftv, grep, haiku, head, help,
history, horse, hs, http, image, info, jargon, jen, join, js, keys, list, log,
mail, meme, memethat, mustachefact, number, order, poke, poms, random, raw,
react, reload, repeat, rest, reverse, rhyme, scala, scalex, sed, set, sort, source,
split, ssh, status, tail, take, tee, twitter, update, uptime, urban, users,
vals, weather, wiki, wolfram, wordnik, words, xargs, xkcd, zen
Yetibot 具有基于插件的架构。所有插件所依赖的核心是 Yetibot.core。
Yetibot 将加载类路径上与这些正则表达式匹配的命名空间的所有命令和观察器。
这使您可以构建任意数量的独立插件项目,并通过标准 Leiningen 依赖项将它们组合起来。
好奇 Yetibot 的内部结构是如何工作的?高层次上:
cmd-hook
宏hook
到解释器的handle-cmd
函数中,并通过正则表达式前缀匹配触发如果文档或实现代码不能很好地为您服务,请打开拉取请求并解释原因,以便我们改进文档。另外,请随时针对功能请求提出问题!
版权所有 © 2012-2019 特雷弗·哈特曼。与 Clojure 相同,按照 Eclipse Public License 1.0 分发。
标志由Freeform Design Co.设计。