0
我正在處理冗餘機器人。我的問題是,當一個人用特定的文本(@bot log)向某個人發短信要求輸入一個電子郵件地址時,我想要這個郵件,然後重複該郵件並要求確認。Slack bot不會在while循環中暫停而是在true語句中重新啓動
這一切工作,我的麻煩開始的地方。當你迴應確認時,它會重複你剛纔所說的內容,並不會繼續說出「獲取用戶名」。
我正在處理冗餘機器人。我的問題是,當一個人用特定的文本(@bot log)向某個人發短信要求輸入一個電子郵件地址時,我想要這個郵件,然後重複該郵件並要求確認。Slack bot不會在while循環中暫停而是在true語句中重新啓動
這一切工作,我的麻煩開始的地方。當你迴應確認時,它會重複你剛纔所說的內容,並不會繼續說出「獲取用戶名」。
while True
正在一個循環中被無限地執行;您必須使用break
或return
以某種方式退出它。但break
和return
將在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
嗨,感謝您的回覆。這項工作的前半部分正常工作。它更多的鏈接到第二部分,如果你能夠闡明它可以解決它。 –
感謝您的評論哈哈對不起,遲到的迴應我正在玩這些建議,並迷路直到您發佈此代碼。我現在正在處理這些更改。不幸的是,雖然現在它在第一次響應後停止工作(「請輸入您的用戶名」) –
所以你需要它永久工作?我不明白,我認爲這是一項任務。好的,那麼讓我們將第一個'while True'恢復到代碼中。 – phd