import logging

logging.basicConfig(level=logging.DEBUG)

from slack_bolt import App, BoltContext
from slack_bolt.oauth import OAuthFlow
from slack_sdk import WebClient


app = App(oauth_flow=OAuthFlow.sqlite3(database="./slackapp.db"))


@app.use
def dump(context, next, logger):
    logger.info(context)
    next()


@app.use
def call_apis_with_team_id(context: BoltContext, client: WebClient, next):
    # client.users_list()
    client.bots_info(bot=context.bot_id)
    next()


@app.event("app_mention")
def handle_app_mentions(body, say, logger):
    logger.info(body)
    say("What's up?")


@app.command("/org-level-command")
def command(ack):
    ack("I got it!")


@app.shortcut("org-level-shortcut")
def shortcut(ack):
    ack()


@app.event("team_access_granted")
def team_access_granted(event):
    pass


@app.event("team_access_revoked")
def team_access_revoked(event):
    pass


if __name__ == "__main__":
    app.start(3000)

# pip install slack_bolt
# export SLACK_SIGNING_SECRET=***
# export SLACK_BOT_TOKEN=xoxb-***
# export SLACK_CLIENT_ID=111.111
# export SLACK_CLIENT_SECRET=***
# export SLACK_SCOPES=app_mentions:read,channels:history,im:history,chat:write
# python oauth_app.py