%global _empty_manifest_terminate_build 0 Name: python-flack Version: 1.3.7 Release: 1 Summary: Slack integration for flask License: MIT URL: https://github.com/carlskeide/flack Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5c/3e/93805197ccb45c5ec7853c933d99388c393200ff3299d5dd8bd0c778de63/flack-1.3.7.tar.gz BuildArch: noarch %description # Flack *Integrate slack commands and actions with flask* ![Python Package](https://github.com/carlskeide/flack/workflows/Python%20package/badge.svg) ## Setup Either initialize the app immediately: ``` from flack import Flack flack = Flack(app) ``` Or use a deferred initialization: ``` from flack import Flack flack = Flack() def get_app(): # Create your flask application. flack.init_app(app) ``` ### Configuration - `FLACK_TOKEN` Must match the secret generated by Slack when creation your app or integration, will be verified for every request. - `FLACK_URL_PREFIX` URL namespace for the built-in api endpoints. - `FLACK_DEFAULT_NAME` Used for any response whera as_user is not explicitly set. ## Slack event handlers ### Triggers *API Endpoint: `/webhook`* The most basic type of interations, webhooks invoked by trigger words in a channel. ``` @flack.trigger("!heart", as_user="Cupid") def heart(text, user): return "{} :heart: {}".format(user.name, text) ```` Provides: - `text` Any message after (but not including) the trigger word, may be an empty string. - `user` The calling user, see: `flack.CALLER`. ### Commmand *API Endpoint: `/command`* Slash-commands, may respond to the user privately or interact with the channel in which it was executed. ``` @flack.command("/weather") def weather(text, user, channel): return "The weather in {} is currently: {}".format(text, get_weather(text)) ```` Provides: - `text` Any message after the trigger word, may be an empty string. - `user` The calling user, see: `flack.CALLER`. - `channel` The active channel or conversation, see: `flack.CHANNEL`. ### Action *API Endpoint: `/action`* Action buttons included in advanced messages (see: `flack.message.Action`). ``` @flack.action("remind") def remind(value, ts, instance, user, channel): remind_user(user) ```` Provides: - `value` Generally the same as the action name. - `ts`: The timestamp of the originating message, used for modifying it through the API. - `callback`: The Callback ID of the originating message attachment, see: `flack.message.Attachment` - `user` The interacting user, see: `flack.CALLER`. - `channel` The originating channel, see: `flack.CHANNEL`. ## Responding TODO: Document `flack.message` objects ## OAuth While not necessary for basic usage, Flack has support for registering an OAuth application. ### Configuration - `FLACK_CLIENT_ID` Provided by Slack when creating an app. - `FLACK_CLIENT_SECRET` Provided by Slack when creating an app. - `FLACK_SCOPE` Slack API scope to request (default is `commands,users:read,channels:read,chat:write:bot`). ### Usage Generate the Slack button HTML snippet and expose it to the client wherever you like with `flack.oauth.render_button()` Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app. ``` import flack.oauth @app.route('/callback') @flack.oauth.callback def callback(credentials): # Make sure to store the credentials somewhere safe. your_datastore.write({ "team": credentials.team_id, "token": credentials.access_token, "scope": credentials.scope }) # And make sure to inform the client everything went fine return "It worked!" ``` The credentials object is a namedtuple containing team_id, access_token, and scope. %package -n python3-flack Summary: Slack integration for flask Provides: python-flack BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-flack # Flack *Integrate slack commands and actions with flask* ![Python Package](https://github.com/carlskeide/flack/workflows/Python%20package/badge.svg) ## Setup Either initialize the app immediately: ``` from flack import Flack flack = Flack(app) ``` Or use a deferred initialization: ``` from flack import Flack flack = Flack() def get_app(): # Create your flask application. flack.init_app(app) ``` ### Configuration - `FLACK_TOKEN` Must match the secret generated by Slack when creation your app or integration, will be verified for every request. - `FLACK_URL_PREFIX` URL namespace for the built-in api endpoints. - `FLACK_DEFAULT_NAME` Used for any response whera as_user is not explicitly set. ## Slack event handlers ### Triggers *API Endpoint: `/webhook`* The most basic type of interations, webhooks invoked by trigger words in a channel. ``` @flack.trigger("!heart", as_user="Cupid") def heart(text, user): return "{} :heart: {}".format(user.name, text) ```` Provides: - `text` Any message after (but not including) the trigger word, may be an empty string. - `user` The calling user, see: `flack.CALLER`. ### Commmand *API Endpoint: `/command`* Slash-commands, may respond to the user privately or interact with the channel in which it was executed. ``` @flack.command("/weather") def weather(text, user, channel): return "The weather in {} is currently: {}".format(text, get_weather(text)) ```` Provides: - `text` Any message after the trigger word, may be an empty string. - `user` The calling user, see: `flack.CALLER`. - `channel` The active channel or conversation, see: `flack.CHANNEL`. ### Action *API Endpoint: `/action`* Action buttons included in advanced messages (see: `flack.message.Action`). ``` @flack.action("remind") def remind(value, ts, instance, user, channel): remind_user(user) ```` Provides: - `value` Generally the same as the action name. - `ts`: The timestamp of the originating message, used for modifying it through the API. - `callback`: The Callback ID of the originating message attachment, see: `flack.message.Attachment` - `user` The interacting user, see: `flack.CALLER`. - `channel` The originating channel, see: `flack.CHANNEL`. ## Responding TODO: Document `flack.message` objects ## OAuth While not necessary for basic usage, Flack has support for registering an OAuth application. ### Configuration - `FLACK_CLIENT_ID` Provided by Slack when creating an app. - `FLACK_CLIENT_SECRET` Provided by Slack when creating an app. - `FLACK_SCOPE` Slack API scope to request (default is `commands,users:read,channels:read,chat:write:bot`). ### Usage Generate the Slack button HTML snippet and expose it to the client wherever you like with `flack.oauth.render_button()` Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app. ``` import flack.oauth @app.route('/callback') @flack.oauth.callback def callback(credentials): # Make sure to store the credentials somewhere safe. your_datastore.write({ "team": credentials.team_id, "token": credentials.access_token, "scope": credentials.scope }) # And make sure to inform the client everything went fine return "It worked!" ``` The credentials object is a namedtuple containing team_id, access_token, and scope. %package help Summary: Development documents and examples for flack Provides: python3-flack-doc %description help # Flack *Integrate slack commands and actions with flask* ![Python Package](https://github.com/carlskeide/flack/workflows/Python%20package/badge.svg) ## Setup Either initialize the app immediately: ``` from flack import Flack flack = Flack(app) ``` Or use a deferred initialization: ``` from flack import Flack flack = Flack() def get_app(): # Create your flask application. flack.init_app(app) ``` ### Configuration - `FLACK_TOKEN` Must match the secret generated by Slack when creation your app or integration, will be verified for every request. - `FLACK_URL_PREFIX` URL namespace for the built-in api endpoints. - `FLACK_DEFAULT_NAME` Used for any response whera as_user is not explicitly set. ## Slack event handlers ### Triggers *API Endpoint: `/webhook`* The most basic type of interations, webhooks invoked by trigger words in a channel. ``` @flack.trigger("!heart", as_user="Cupid") def heart(text, user): return "{} :heart: {}".format(user.name, text) ```` Provides: - `text` Any message after (but not including) the trigger word, may be an empty string. - `user` The calling user, see: `flack.CALLER`. ### Commmand *API Endpoint: `/command`* Slash-commands, may respond to the user privately or interact with the channel in which it was executed. ``` @flack.command("/weather") def weather(text, user, channel): return "The weather in {} is currently: {}".format(text, get_weather(text)) ```` Provides: - `text` Any message after the trigger word, may be an empty string. - `user` The calling user, see: `flack.CALLER`. - `channel` The active channel or conversation, see: `flack.CHANNEL`. ### Action *API Endpoint: `/action`* Action buttons included in advanced messages (see: `flack.message.Action`). ``` @flack.action("remind") def remind(value, ts, instance, user, channel): remind_user(user) ```` Provides: - `value` Generally the same as the action name. - `ts`: The timestamp of the originating message, used for modifying it through the API. - `callback`: The Callback ID of the originating message attachment, see: `flack.message.Attachment` - `user` The interacting user, see: `flack.CALLER`. - `channel` The originating channel, see: `flack.CHANNEL`. ## Responding TODO: Document `flack.message` objects ## OAuth While not necessary for basic usage, Flack has support for registering an OAuth application. ### Configuration - `FLACK_CLIENT_ID` Provided by Slack when creating an app. - `FLACK_CLIENT_SECRET` Provided by Slack when creating an app. - `FLACK_SCOPE` Slack API scope to request (default is `commands,users:read,channels:read,chat:write:bot`). ### Usage Generate the Slack button HTML snippet and expose it to the client wherever you like with `flack.oauth.render_button()` Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app. ``` import flack.oauth @app.route('/callback') @flack.oauth.callback def callback(credentials): # Make sure to store the credentials somewhere safe. your_datastore.write({ "team": credentials.team_id, "token": credentials.access_token, "scope": credentials.scope }) # And make sure to inform the client everything went fine return "It worked!" ``` The credentials object is a namedtuple containing team_id, access_token, and scope. %prep %autosetup -n flack-1.3.7 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-flack -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 1.3.7-1 - Package Spec generated