第33行的语法有问题

时间:2017-01-10 18:52:02

标签: python slack-api twilio-api

我正在构建一个slackbot,并试图从slack接收短信。这是我的python代码

import os
from flask import Flask, request, Response
from slackclient import SlackClient
from twilio import twiml
from twilio.rest import TwilioRestClient

SLACK_WEBHOOK_SECRET = os.environ.get('SLACK_WEBHOOK_SECRET', None)
WILIO_NUMBER = os.environ.get('TWILIO_NUMBER', None)
USER_NUMBER = os.environ.get('USER_NUMBER', None)

app = Flask(__name__)
slack_client = SlackClient(os.environ.get('SLACK_TOKEN', None))
twilio_client = TwilioRestClient()


@app.route('/twilio', methods=['POST'])
def twilio_post():
    response = twiml.Response()
    if request.form['From'] == USER_NUMBER:
        message = request.form['Body']
        slack_client.api_call("chat.postMessage", channel="#general",
              text=message, username='twiliobot',
              icon_emoji=':robot_face:')
    return Response(response.toxml(), mimetype="text/xml"), 200


@app.route('/slack', methods=['POST'])
def slack_post():
    if request.form['token'] == SLACK_WEBHOOK_SECRET:
        channel = request.form['channel_name']
        username = request.form['user_name']
        text = request.form['text']
        response_message = username   " in "   channel   " says: "   text
        twilio_client.messages.create(to=USER_NUMBER,    from_=TWILIO_NUMBER,
                                  body=response_message)
return Response(), 200


@app.route('/', methods=['GET'])
def test():
   return Response('It works!')


if __name__ == '__main__':
    app.run(debug=True)

enter image description here

当我尝试使用" python twiliobot.py"运行此代码时,因为它是应用程序的名称,它会返回此错误:

  

文件" twiliobot.py",第33行response_message = username" in"   频道"说:"文本

enter image description here 我在这做错了什么?我的语法出了什么问题?

1 个答案:

答案 0 :(得分:3)

这里有问题

response_message = username   " in "   channel   " says: "   text

我假设您正在尝试连接文字。使用+运算符

response_message = username  + " in "  + channel  + " says: "  + text

join

response_message = ' '.join([username, "in", channel, "says:",text]

format

response_message = '{} in {} says: {}'.format(username, channel, text)