2017-05-24 41 views
0

我正在處理冗餘機器人。我的問題是,當一個人用特定的文本(@bot log)向某個人發短信要求輸入一個電子郵件地址時,我想要這個郵件,然後重複該郵件並要求確認。Slack bot不會在while循環中暫停而是在true語句中重新啓動

這一切工作,我的麻煩開始的地方。當你迴應確認時,它會重複你剛纔所說的內容,並不會繼續說出「獲取用戶名」。

回答

0

while True正在一個循環中被無限地執行;您必須使用breakreturn以某種方式退出它。但breakreturn將在while之後忽略您的else,因此您必須對代碼進行重構。事情是這樣的:

while True: 
    for slack_message in slack_client.rtm_read(): 
     message = slack_message.get("text") 
     user = slack_message.get("user") 
     if not message or not user: 
      continue 
     slack_client.rtm_send_message(…) 
     break 
# and no else here 
print(…) 

而且我不認爲你需要首先while True可言。讓我以這種方式重寫代碼:

while True: 
    command = ??? # slack_client.rtm_read() perhaps? 
    if command.startswith(LOG): 
     slack_client.rtm_send_message(channel, "Please input your username:") 
     for slack_message in slack_client.rtm_read(): 
      message = slack_message.get("text") 
      user = slack_message.get("user") 
      if not message or not user: 
       continue 
      slack_client.rtm_send_message(channel, "You Wrote : " + message + "\n is that your correct email?") 

     while True: 
      respond = slack_message.get("text") 
      if respond is 'yes' or 'Yes':##would this to true already, push in regex 
       continue 
      break 
     slack_client.rtm_send_message(channel, "Got it, your username is :" + message)#possibly grabbing newest text and not variable of message 
+0

嗨,感謝您的回覆。這項工作的前半部分正常工作。它更多的鏈接到第二部分,如果你能夠闡明它可以解決它。 –

+0

感謝您的評論哈哈對不起,遲到的迴應我正在玩這些建議,並迷路直到您發佈此代碼。我現在正在處理這些更改。不幸的是,雖然現在它在第一次響應後停止工作(「請輸入您的用戶名」) –

+0

所以你需要它永久工作?我不明白,我認爲這是一項任務。好的,那麼讓我們將第一個'while True'恢復到代碼中。 – phd