2017-07-03 121 views
0

我编写了一个简单的Slack Slash命令,该命令将重复该人员说的内容。例如,如果您键入“/说测试!”机器人将回复“测试!”。Slack Slash Command删除执行斜杠命令的人的消息

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

例如,如果输入“/ say Test!”你的消息永远不会发布在频道中,但是Bot的是。如果您能在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) 

有什么我做错了,或者是它只是我选择了写这个代码,以防止从张贴可见斜线命令的人的方法?

回答

1

我对Pyhthon了解不多,但是在我看来,你似乎在用API方法chat.postMessage发回消息。然而,这不是你应该如何回复斜线命令。相反,您应该使用JSON格式的消息直接从Slack发送POST请求。然后您还可以将物业response_type设置为in_channel。这将产生初始命令和响应对通道中的所有用户都可见的效果。

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

+0

我可能只是在回应中反映了斜杠命令,谢谢! 我已经使用了一些允许留言的应用程序。 Urbandictionary留下信息,Giphy似乎编辑人员信息以将gif附加到它(http://i.imgur.com/a5fQSmh.png) 您是否碰巧知道如何完成这样的事情? – user2607110

+0

我的歉意,但我误解了你的问题。请参阅我的新答案,以更好地解决您的问题。 –

+0

非常感谢,这个工作很完美。 – user2607110