SlackAPI - проблема с возвратом сообщения с несколькими переменными - PullRequest
2 голосов
/ 23 сентября 2019

У меня есть следующий код для моего бота Slack:

    if command.startswith(COMMAND_FIVE):
        owm = pyowm.OWM()

        owm.set_API_key('')
        observation = owm.weather_at_id(4744326)
        w = observation.get_weather()
        jsondata= w.get_temperature('fahrenheit')
        RESPOND = ("The current temperature (Fahrenheit) is:",(jsondata["temp"]),"\nThe high is:",(jsondata["temp_max"]),"\nThe low is:",(jsondata["temp_min"]),"\n*Note: This can change*")
        response = (RESPOND)
        print("Someone got the weather.")

    # Sends the response back to the channel
    slack_client.api_call(
        "chat.postMessage",
        channel=channel,
        text=response or default_response
    )

Когда я вызываю эту команду, я получаю следующее:

What the slack bot returns. КакМогу ли я отформатировать сообщение, чтобы оно возвращало все, а не только нижнюю строку?

1 Ответ

1 голос
/ 24 сентября 2019

Причина, по которой ваш код не дает ожидаемого результата, состоит в том, что вы передаете свой текст в виде набора строк в метод API.По-видимому, метод API сводит это внутренне к одному элементу (последнему).

Чтобы сделать эту работу, вы хотите передать свой текст в виде одной полной строки в текстовое свойство метода API.

Вот новая версия вашего кода, которая должна работать лучше:

RESPOND = [
    "The current temperature (Fahrenheit) is: {0:.2f}".format(jsondata["temp"]),
    "The high is: {0:.2f}".format(jsondata["temp_max"]),
    "The low is: {0:.2f}".format(jsondata["temp_min"]),
    "*Note: This can change*"]
response = "\n".join(RESPOND)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...