【问题标题】:Slack Slash Command removes the message of the person who did the slash commandSlack Slash Command 删除执行斜线命令的人的消息
【发布时间】:2017-07-03 11:44:44
【问题描述】:

我编写了一个简单的 Slack Slash 命令,它只会重复对方所说的话。例如,如果您键入“/say Test!”机器人将回复“测试!”。

但是,每次执行此操作时,执行斜线命令的人的消息都不会发布到频道,因此您无法看到提示消息的人。

例如,如果您输入“/say Test!”您的消息永远不会发布在频道中,但 Bot 会。如果你能在机器人回复之前看到那个人的消息,我会更喜欢。这是我的代码。

from flask import Flask, request, Response
import os
from slackclient import SlackClient

SLACK_DEV_TOKEN = <TOKEN>  # Put your API dev token here

slack_client = SlackClient(SLACK_DEV_TOKEN)

app = Flask (__name__)

def send_message(channel_id, message):
    slack_client.api_call('chat.postMessage',
                          channel=channel_id,
                          text=message,
                          username='Bot',
                          icon_emoji=':Anguished:')




@app.route('/say', methods=['POST'])
def say():
    channel_id = request.form.get('channel_id')
    input_text = request.form.get('text').lower()
    #return "Test"
    send_message(channel_id,input_text)
    return Response(),200


if __name__ == '__main__':
    port = int(os.environ.get('PORT',5000))
    app.run(host='0.0.0.0',port=port,debug=True)

我做错了什么,还是只是我选择编写此代码的方法阻止了发布斜杠命令的人可见?

【问题讨论】:

    标签: python python-2.7 slack slack-api


    【解决方案1】:

    我对 Pyhthon 了解不多,但在我看来,您正在使用 API 方法 chat.postMessage 发回一条消息。然而,这不是您应该如何回复斜杠命令的方式。相反,您应该使用 JSON 格式的消息直接向 Slack 的 POST 请求发送回复。然后您也可以将属性response_type 设置为in_channel。这将产生初始命令和响应对频道中的所有用户可见的效果。

    另请参阅 Slack API 文档中的 Responding to a slash command

    【讨论】:

    • 我可以只在响应中镜像斜杠命令,谢谢!我使用过一些允许消息保留的应用程序。 Urbandictionary 留下了消息,Giphy 似乎编辑了 person 消息以将 gif 附加到它 (i.imgur.com/a5fQSmh.png) 你碰巧知道这样的事情是如何完成的吗?
    • 我很抱歉,但我误读了您的问题。请参阅我的新答案以更好地解决您的问题。
    猜你喜欢
    • 2022-06-24
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多