使用python从SlackClient获取额外输入

使用python从SlackClient获取额外输入,python,python-3.x,bots,slack,slack-api,Python,Python 3.x,Bots,Slack,Slack Api,其中一个问题是我遇到的是从slack中的命令获取额外数据。我️ 不想使用斜杠命令,因为我️ 无法向世界公开我的本地主机 例如: @mybot do 将返回,让我们说“我正在做某事”。然而我️ 想做点什么吗 @mybot do 2 其中2是后端中的一个参数。基本上,我试图做的是让它在用户可以说@mybot do 2的地方,它将从ID为2的数据库中获取数据。您可以将其设置为3、4、5等,该命令将从数据库中提取信息。我️ 我找到了我要去的地方️ 可以使它与确切的“do”命令匹配️ 无法读取后续数据

其中一个问题是我遇到的是从slack中的命令获取额外数据。我️ 不想使用斜杠命令,因为我️ 无法向世界公开我的本地主机

例如:

@mybot do
将返回,让我们说“我正在做某事”。然而我️ 想做点什么吗

@mybot do 2
其中2是后端中的一个参数。基本上,我试图做的是让它在用户可以说
@mybot do 2
的地方,它将从ID为2的数据库中获取数据。您可以将其设置为3、4、5等,该命令将从数据库中提取信息。我️ 我找到了我要去的地方️ 可以使它与确切的“do”命令匹配️ 无法读取后续数据。我️ 他跟在后面。任何帮助都会很好

如果你看到奇怪的符号,那是因为我在iPhone上这么做,我️ 那只愚蠢的虫子在我转弯的地方️ (眼睛)看着我️

如何获取“附加信息”

您将在文本属性中获得完整的输入字符串,例如
“do 2”
。你所需要做的就是把字符串拆分成单词。我不是Python开发人员,但显然会做这项工作

公开本地主机

我强烈建议继续使用VPN隧道公开您的本地主机。它使开发变得更加容易。您可以使用安全地将本地主机暴露于松弛状态

“不想使用斜杠命令”


您将始终需要在公开主机上安装一个应用程序(例如Python脚本),以便任何自定义功能都可以使用Slack。实际上,斜杠命令比事件API和RTM更容易实现,所以我建议您使用它。

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

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)
重新导入
def handle_命令(命令,通道):
response=“不确定您的意思。使用*”+示例_命令+\
*带数字的命令,由空格分隔
匹配=重新匹配(“do(?P\S+”,命令)
如果匹配:
arg=match.groupdict('arg')
response=“哇!我的论点是:”+arg
slack_client.api_调用(“chat.postMessage”,channel=channel,
text=响应,如用户=True)

我会在我️ 今晚回去工作吧!ngrok是永久解决方案吗?它有多安全?如果不是永久性的,我能做什么️ 照我说的做吧️ 必须让机器人本身在网络中运行。当然。这是一个产品,它的目的是作为一个永久的解决方案。然而,如果你想永久使用它,你需要寻找一个付费的计划。免费计划只会给你一个临时URL。但是,如果您计划永久运行bot,例如作为公共Slack应用程序,我建议您在使用ngrok进行开发的同时,将应用程序部署到公共web服务器或云服务上。