Beispiel #1
0
def register_commands(app: App, middleware: Type[SlackMiddleware]):
    cmd_uninstall = app.command(
        command="/teamiclink-uninstall",
        middleware=[middleware.ctx_client_secret, middleware.ctx_client_id],
    )
    assert cmd_uninstall
    cmd_uninstall(uninstall)

    cmd_create_goal = app.command(command="/t-goal")
    assert cmd_create_goal
    cmd_create_goal(create_goal)

    cmd_read_goals = app.command(command="/t-goals",
                                 middleware=[middleware.ctx_goal_store])
    assert cmd_read_goals
    cmd_read_goals(read_goals)
Beispiel #2
0
            "type": "mrkdwn",
            "text": "You can add a button alongside text in your message. ",
        },
        "accessory": {
            "type": "button",
            "action_id": "a",
            "text": {
                "type": "plain_text",
                "text": "Button"
            },
            "value": "click_me_123",
        },
    }])


app.command(re.compile(r"/bolt-.+"))(test_command)


@app.shortcut("test-shortcut")
def test_shortcut(ack, client: WebClient, logger, payload):
    logger.info(payload)
    ack()
    res = client.views_open(
        trigger_id=payload["trigger_id"],
        view={
            "type":
            "modal",
            "callback_id":
            "view-id",
            "title": {
                "type": "plain_text",
                        },
                        "min_query_length": 0,
                    },
                    "label": {
                        "type": "plain_text",
                        "text": "Search (multi)"
                    },
                },
            ],
        },
    )
    logger.info(res)


app.command("/hello-bolt-python")(
    ack=ack_command,
    lazy=[post_button_message, open_modal],
)


@app.options("es_a")
def show_options(ack):
    ack({
        "options": [{
            "text": {
                "type": "plain_text",
                "text": "Maru"
            },
            "value": "maru"
        }]
    })
Beispiel #4
0
def respond_to_slack_within_3_seconds(body, ack):
    if body.get("text") is None:
        ack(f":x: Usage: {command} (description here)")
    else:
        title = body["text"]
        ack(f"Accepted! (task: {title})")


def process_request(respond, body):
    time.sleep(5)
    title = body["text"]
    respond(f"Completed! (task: {title})")


app.command(command)(ack=respond_to_slack_within_3_seconds,
                     lazy=[process_request])

SlackRequestHandler.clear_all_log_handlers()
logging.basicConfig(format="%(asctime)s %(message)s", level=logging.DEBUG)


def handler(event, context):
    slack_handler = SlackRequestHandler(app=app)
    return slack_handler.handle(event, context)


# export SLACK_SIGNING_SECRET=***
# export SLACK_BOT_TOKEN=xoxb-***

# rm -rf vendor && cp -pr ../../src/* vendor/
# pip install python-lambda
Beispiel #5
0
@bolt_app.event("app_mention")
def handle_app_mentions(body, say, logger):
    logger.info(body)
    say("What's up? I'm a Chalice app :wave:")


def respond_to_slack_within_3_seconds(ack):
    ack("Accepted!")


def say_it(say):
    time.sleep(5)
    say("Done!")


bolt_app.command("/hello-bolt-python-chalice")(
    ack=respond_to_slack_within_3_seconds, lazy=[say_it])

ChaliceSlackRequestHandler.clear_all_log_handlers()
logging.basicConfig(format="%(asctime)s %(message)s", level=logging.DEBUG)

# Don't change this variable name "app"
app = Chalice(app_name="bolt-python-chalice")
slack_handler = ChaliceSlackRequestHandler(app=bolt_app, chalice=app)


@app.route(
    "/slack/events",
    methods=["POST"],
    content_types=["application/x-www-form-urlencoded", "application/json"],
)
def events() -> Response:
Beispiel #6
0
        
    # /kot breakoutのとき
    elif ctext == "breakout":  
      flag = kotPost(4, slackid)

      if flag == 99:
        respond(f" :ng: codeが99です ")
      else:
        say(f" <@{slackid}> さん :yasumi: :syuuryou:")
        
    else:
      #url = 'http://checkip.amazonaws.com/'
      respond(f":ng: :eyes: Usage: /kot 出勤 & 退勤")

app.command("/kot")(
    ack=respond_to_slack_within_3_seconds,  # responsible for calling `ack()`
    lazy=[run_long_process]  # unable to call `ack()` / can have multiple functions
)

def handler(event, context):
    slack_handler = SlackRequestHandler(app=app)
    return slack_handler.handle(event, context)

# king of timeへの打刻処理 code=0:自動打刻, code=3:休憩開始, code=4:休憩終了
def kotPost(code, slackid):
  
  kotid = getAirTable(slackid)
  url = "https://api.kingtime.jp/v1.0/daily-workings/timerecord/" + kotid  
  kotToken = os.environ['KOT_TOKEN']
  headers = {
      'Authorization': "Bearer " + kotToken,
      'content-type': "application/json",
Beispiel #7
0
def command_man(ack, say, command):
    command_text = command["text"]
    command_text_clean = shlex.quote(command_text)
    ack("Fetching man page...")
    man_proc = subprocess.Popen(
        "ssh soda man".split(" ") + [command_text_clean],
        shell=False,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    man_response = man_proc.stdout.read().decode()
    if man_response:
        text = "man {}\n{}".format(command_text, man_response)
    else:
        text = "Couldn't find man page. Got: {}.".format(
            man_proc.stderr.read())
    say(text, response_type="in_channel")


if SLACK_BOT_USER_TOKEN and SLACK_SIGNING_SECRET:
    app = App(token=SLACK_BOT_USER_TOKEN, signing_secret=SLACK_SIGNING_SECRET)
    app.message("based")(message_based)
    app.event("message")(event_message)
    app.command("/man")(command_man)
    app.command("/philfinger")(command_finger)
    app.command("/export")(command_export)
    app.command("/help")(command_help)
else:
    app = None
Beispiel #8
0
# flag bot-generated messages
@slack_app.middleware
def message_filter(payload, context, next):
    context['is_bot_message'] = payload.get('bot_id') is not None
    next()


@slack_app.event({"type": "message"})
def unmatched_request(logger, body):
    logger.debug("acknowleding unmatched message")


# prepare linkbot slash command
slash_cmd = SlashCommand(bot_list=bot_list, logger=logger)
slack_app.command("/{}".format(slash_cmd.name))(slash_cmd.command)

# prepare slack event endpoint
init_endpoint_server(slack_app)

if __name__ == '__main__':
    try:
        # open metrics exporter endpoint
        metrics_server(int(os.environ.get('METRICS_PORT', 9100)))

        # open slack event endpoint
        endpoint_server(int(os.environ.get("PORT", 3000)))
    except Exception as e:
        logger.exception(e)
        logger.critical(e)