1
为Stack Exchange聊天室创建聊天机器人
挑战 这项挑战的目标是创建一个可以在Stack Exchange聊天室中运行的聊天机器人。您的漫游器需要能够检测用户何时发布特定命令并对其进行响应。这是命令列表,以及您的机器人应该做什么: !!newest:输出在此站点(codegolf.SE)上发布的最新问题的标题(无链接,但标题)。 !!metanewest:输出发布在元网站(meta.codegolf.SE)上的最新问题的标题。 !!questioncount:输出当前的问题计数。 !!metaquestioncount:在meta网站上输出当前问题计数。 !!tag tagname:输出作为第一个参数给出的标签的标签摘录(简短描述)。 !!metatag tagname:与上述相同,但用于元网站。 !!featured:输出当前有赏金的问题计数。 !!metafeatured:输出在Meta上带有[featured]标签的问题计数。 规则 您应该编写完整的程序,而不是代码段或函数。 如果有必要,您可以请求用户名和密码作为输入(提示输入,STDIN,命令行参数)。如果使用(例如)Python或Ruby,这将是必需的,但是如果使用JavaScript并在聊天室页面本身上运行脚本,则不需要。 您可以使用外部库来做WebSockets之类的事情。这些库不必计入您的字符数。 您可以使用外部聊天包装器(但不必这样做,建议您自己编写),然后必须计算字符数。您也不允许更改包装程序的代码。如果使用它,则无需修改即可使用它,并且必须计算所有字符(这是不编写自己的包装器的一种惩罚)。 仅包装器本身的代码必须计数。如果还有其他文件(例如示例),则不必计数。 不使用URL缩短器或其他可以缩短URL的方式:挑战是打高尔夫,而不是打URL。 除了聊天和获取响应命令所必需的信息之外,没有任何Web请求。 不允许使用标准的“漏洞”。 如果有人发布命令,则您需要使用以下格式的聊天消息进行响应:@user response。因此,如果我编写命令!!featured并有5个有特色的问题,则您的机器人应该发布@ProgramFOX 5。 如果我测试了您的机器人,那么我将通过我的chatbot帐户运行它,并在此聊天室中运行它。我将始终在该房间中测试机器人,因此不必提供房间ID作为输入,它始终为14697。不会提供此ID作为输入,它应该是硬编码的。 如果未找到命令,则输出@user The command [command] does not exist。替换[command]为不存在的命令的名称。如果将参数提供给命令,则不输出参数,仅输出命令名称。 如果命令必须包含许多参数,请忽略不必要的参数。 如果命令的参数不足,则输出 @user You have not provided enough arguments 系统防止重复消息在短时间内发布。因此,在测试您的漫游器时,我永远不会运行两个连续提供相同输出的命令(这意味着您不必实现一个系统,该系统如果消息重复则通过添加一个点来使消息不同)。 系统会防止在短时间内发布太多消息,因此在测试时,我绝不会在短时间内发送太多命令,这意味着您的机器人不必为此担心(等待一段时间)例如,在发布之前)。 这是代码高尔夫,使用最少字节数的程序获胜。 入门 这是一些有关编写机器人的入门信息。您不必使用它,但是它可以作为指导。 要登录,请首先登录到OpenID提供程序。这将始终是Stack Exchange OpenID(https://openid.stackexchange.com)。登录表单位于https://openid.stackexchange.com/account/login,并在此处提供用户名和密码。 …
39
code-golf