我需要帮助让我的机器人每次响应不同的响应

时间:2016-10-01 18:44:52

标签: ruby tumblr bots

我为tumblr制作了一个笑话机器人,回答问题的问题,并且有一些变化的问候语[问问姓名在这里],小便。真的,Pissy Boy。"。我试图包括4个可能的响应,而不是只有一个全能响应,这是我遇到的障碍。这是我目前的机器人代码的全部内容(僵尸程序是在Ubuntu中使用Ruby编写的):

require 'tumblr_client'
USERNAME = "thepissbot"
def piss
  # Authenticate via OAuth
  client = Tumblr::Client.new({
    :consumer_key => ENV['CONSUMER_KEY'],
    :consumer_secret => ENV['CONSUMER_SECRET'],
    :oauth_token => ENV['OAUTH_TOKEN'],
    :oauth_token_secret => ENV['OAUTH_TOKEN_SECRET']
  })
  # Make the request
  asks = client.submissions(USERNAME, limit: 5)['posts']
  asks.each do |ask|
    if ask ['type'] !='answer'
      piss
      return
      response1 = "Greetings #{ask['asking_name']}, piss. Yours truly, Pissy Boy."
      response2 = "Dear, #{ask['asking_name']}, piss. Love, Pissy Boy."
      response3 = "Salutations #{ask['asking_name']}, piss. Sincerely, Pissy Boy."
      response4 = "What's up, #{ask['asking_name']}? Piss. Your friend, Pissy Boy."
      array=(response1 response2 response3 response4)
      tags = "piss mail"
      client.edit(USERNAME,
        id: ask['id'],
        answer: array,
        state: 'published',
        tags: tags
      )
    end
  end
end
根据终端的说法,这应该是"工作"但是,当我检查机器人的收件箱时,我发送的测试问题仍未得到答复,而这肯定不是预期的行为。我认为这与我处理数组的方式有关。 这已经是2天的问题......我觉得它应该是超级简单但我只是缺少一些东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

好了,现在您的代码格式正确,错误很明显:

if ask ['type'] !='answer'
  piss
  return
  ... (some other code)

early返回将导致整个piss方法完成。除非此return来电有一些目的,否则请删除它。

这应该使格式化代码的好处变得明显;您可以更轻松地查看哪个ifeachdef阻止了正在运行的代码行。