首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lita bot不响应触发器

lita bot不响应触发器
EN

Stack Overflow用户
提问于 2020-05-14 20:00:46
回答 1查看 72关注 0票数 0

我/正在使用Lita创建一个聊天机器人,我创建了一个名为对话框的句柄,我选择了分离我的代码,我在lita-dialog/lib/lita/handlers/dialog.rb中有我的聊天路径,在lita-dialog/bin/main.rb中有我的响应。

lita-dialog/lib/lita/handlers/dialog中的代码

代码语言:javascript
复制
 module Lita
  module Handlers
    class Dialog < Handler
      # insert handler code here
       route(/.*hello|hi|good morning|morning|welcome.*/i, :greeting_response, command: true)
      Lita.register_handler(self)
    end
  end
end

lita-dialog/bin/main.rb中的代码

代码语言:javascript
复制
require_relative '../lib/dialog.rb'

 def greeting_response(response)
    greetingresponse = [
      'Hello',
      "Greetings, #{response.user.name}.",
      "Well hello there, #{response.user.name}.",
      "Hey #{response.user.name}, Hello!",
      "Good day, #{response.user.name}",
      'Hi.'
    ]

    response.reply(greetingresponse.sample)
 end

我正在使用RSpec来测试我的代码,测试正在通过,但是当我测试机器人以获得响应时,我没有接收到响应,这不是预期的。

代码语言:javascript
复制
Type "exit" or "quit" to end the session.                                                                                                          │<rive/Microverse/Ruby/jaybot   lita-dialog/spec/lita/handlers/dialog_spec.rb                         ruby     utf-8     16% ☰    1/6  :  1
jaybot > jaybot hello                                                                                                                              │6 lines yanked
jaybot >                  

测试

代码语言:javascript
复制
require "spec_helper"

describe Lita::Handlers::Dialog, lita_handler: true do
  it { is_expected.to(route_command('hello').to(:greeting_response)) }
  it { is_expected.to_not(route('hello').to(:greeting_response)) }
end

这是我在处理程序文件夹中运行bot时得到的输出

代码语言:javascript
复制
Passing 'id' command to redis as is; blind passthrough has been deprecated and will be removed in redis-namespace 2.0 (at /Users/aulbournknowles/.r│~                              │~
benv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/did_you_mean-1.3.0/lib/did_you_mean/core_ext/name_error.rb:8:in `inspect')                            │~                              │~
[2020-05-14 19:42:20 UTC] ERROR: Lita::Handlers::Dialog crashed. The exception was:                                                                │~                              │~
undefined method `greeting_response' for #<Lita::Handlers::Dialog:0x00007fad9b8ed988>                                                              │~                              │~
Full backtrace:                                                                                                                                    │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/callback.rb:31:in `public_send'                          │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/callback.rb:31:in `call'                                 │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/handler/chat_router.rb:97:in `dispatch_to_route'         │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/handler/chat_router.rb:82:in `block in dispatch'         │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/handler/chat_router.rb:72:in `map'                       │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/handler/chat_router.rb:72:in `dispatch'                  │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/robot.rb:69:in `block in receive'                        │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/2.6.0/set.rb:338:in `each_key'                                                               │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/2.6.0/set.rb:338:in `each'                                                                   │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/robot.rb:66:in `map'                                     │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/robot.rb:66:in `receive'                                 │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/adapters/shell.rb:94:in `block in run_loop'              │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/adapters/shell.rb:85:in `loop'                           │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/adapters/shell.rb:85:in `run_loop'                       │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/adapters/shell.rb:34:in `run'                            │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/robot.rb:80:in `run'                                     │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita.rb:80:in `run'                                           │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/lib/lita/cli.rb:77:in `start'                                     │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'                                   │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'                    │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'                                     │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'                                   │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/lita-4.7.1/bin/lita:6:in `<top (required)>'                                  │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/bin/lita:23:in `load'                                                                                 │~                              │~
/Users/aulbournknowles/.rbenv/versions/2.6.5/bin/lita:23:in `<main>'   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 18:13:53

这个答案归功于吉米·卡德拉

--您展示的Lita处理程序--定义了一个路由,当传入的消息匹配时,它将调用名为greeting_response的实例方法。没有定义该名称的实例方法,因此出现了“未定义方法”异常。您在另一个文件中定义了一个具有此名称的方法,但在顶级作用域中定义的方法与类中的实例方法不同。如果希望将该方法包含在Lita处理程序类中,则应在处理程序.

中包含的模块中定义该方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61806389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档