【问题标题】:Getting additional input from SlackClient using python使用 python 从 SlackClient 获取额外的输入
【发布时间】:2018-04-26 03:40:21
【问题描述】:

我遇到的一个问题是从 slack 中的命令获取额外数据。 I️ 不想使用 Slash 命令,因为 I️ 无法将我的 localhost 暴露给世界。

例子:

@mybot do

将返回,让我们说“我正在做某事”。但是我️希望能够做类似的事情

@mybot do 2

其中 2 是后端的参数。基本上我想做的是让用户可以说@mybot do 2,它会从ID为2的数据库中获取数据。你可以把它设为3、4、5等,命令将拉来自数据库的信息。 I️ 找到了 I️ 可以使其与确切的“do”命令匹配的位置,尽管 I️ 无法让它读取后续数据。我️ 关注this tutorial。任何帮助都会很棒。

如果你看到奇怪的符号,那是因为我是用 iPhone 做的,而且我有一个愚蠢的错误,把 I️(眼睛)变成了 I️

【问题讨论】:

    标签: python python-3.x bots slack slack-api


    【解决方案1】:

    您需要使用正则表达式从文本中提取参数。我希望这会有所帮助。

    import re
    
    
    def handle_command(command, channel):
        response = "Not sure what you mean. Use the *" + EXAMPLE_COMMAND + \
                   "* command with numbers, delimited by spaces."
    
        match = re.match("do (?P<arg>\S+)", command)
        if match:
            arg = match.groupdict('arg')
            response = "Wow! My argument is: " + arg
    
        slack_client.api_call("chat.postMessage", channel=channel,
                              text=response, as_user=True)
    

    【讨论】:

    • 今晚回去工作时我会试一试!
    【解决方案2】:

    如何获取“附加信息”

    您将在 text 属性中获得完整的输入字符串,例如"do 2"。您需要做的就是将字符串拆分为单词。我不是 Python 开发人员,但显然 split() 会胜任这项工作。

    暴露你的本地主机

    我强烈建议您继续使用 VPN 隧道公开您的本地主机。它使开发变得如此容易。您可以使用ngrok 将您的本地主机安全地暴露给 Slack。

    “不想使用斜线命令”

    您将始终需要在暴露的主机上安装一个应用程序(例如 Python 脚本),以便任何自定义功能与 Slack 一起使用。实际上,斜杠命令比 Event API 和 RTM 更容易实现,所以我会推荐它来满足您的需求。

    【讨论】:

    • ngrok 是永久解决方案吗?它有多安全?如果它不是永久性的,我可以做些什么来代替它,因为我必须让机器人本身在网络中运行。
    • 当然。它是一种产品,旨在用作永久解决方案。但是,如果您想永久使用它,则需要寻找付费计划。免费计划只会为您提供一个临时 URL。但是,如果您打算永久运行您的机器人,例如作为一个公共 Slack 应用程序,我建议将您的应用程序部署在公共 Web 服务器或云服务上,同时使用 ngrok 进行开发。
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多