Slack Slash Command 删除执行斜杠命令的人的消息

Slack Slash Command removes the message of the person who did the slash command

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

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

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

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 知之甚少,但在我看来,您正在使用 API 方法 chat.postMessage 发回消息。然而,这不是您应该如何回复斜线命令。相反,您应该使用 JSON 格式的消息直接回复来自 Slack 的 POST 请求。那么你也可以将属性response_type设置为in_channel。这将产生初始命令和响应都对频道中的所有用户可见的效果。

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