Updated slack formatting
This commit is contained in:
parent
812c9b3d43
commit
488b83a157
66
Makefile
66
Makefile
|
@ -1,58 +1,50 @@
|
|||
.PHONY: virtual dev build-requirements black isort flake8
|
||||
|
||||
REQUIREMENTS_TXT ?= requirements.txt dev-requirements.txt
|
||||
|
||||
include Makefile.venv
|
||||
Makefile.venv:
|
||||
curl \
|
||||
-o Makefile.fetched \
|
||||
-L "https://github.com/sio/Makefile.venv/raw/v2020.08.14/Makefile.venv"
|
||||
echo "5afbcf51a82f629cd65ff23185acde90ebe4dec889ef80bbdc12562fbd0b2611 *Makefile.fetched" \
|
||||
| sha256sum --check - \
|
||||
&& mv Makefile.fetched Makefile.venv
|
||||
|
||||
all: pip dev
|
||||
|
||||
virtual: .venv/bin/pip # Creates an isolated python 3 environment
|
||||
.PHONY: dev
|
||||
dev: venv
|
||||
$(VENV)/pre-commit install
|
||||
|
||||
.venv/bin/pip:
|
||||
virtualenv -p /usr/bin/python3 .venv
|
||||
.PHONY: docs
|
||||
docs: build
|
||||
cp README.rst docs/readme.rst
|
||||
cp Changelog docs/changelog.rst
|
||||
tox -edocs
|
||||
|
||||
.venv/bin/aprsd: virtual
|
||||
test -s .venv/bin/aprsd || .venv/bin/pip install -q -e .
|
||||
|
||||
install: virtual
|
||||
.venv/bin/pip install -Ur requirements.txt
|
||||
|
||||
dev-pre-commit:
|
||||
test -s .git/hooks/pre-commit || .venv/bin/pre-commit install
|
||||
|
||||
dev-requirements:
|
||||
test -s .venv/bin/twine || .venv/bin/pip install -q -r dev-requirements.txt
|
||||
|
||||
pip: virtual
|
||||
.venv/bin/pip install -q -U pip
|
||||
|
||||
dev: pip install dev-requirements dev-pre-commit
|
||||
|
||||
pip-tools:
|
||||
test -s .venv/bin/pip-compile || .venv/bin/pip install pip-tools
|
||||
|
||||
clean:
|
||||
clean: clean-venv
|
||||
rm -rf dist/*
|
||||
rm -rf .venv
|
||||
|
||||
.PHONY: test
|
||||
test: dev
|
||||
.venv/bin/pre-commit run --all-files
|
||||
tox -p all
|
||||
|
||||
build: test
|
||||
rm -rf dist/*
|
||||
.venv/bin/python3 setup.py sdist bdist_wheel
|
||||
.venv/bin/twine check dist/*
|
||||
$(VENV)/python3 setup.py sdist bdist_wheel
|
||||
$(VENV)/twine check dist/*
|
||||
|
||||
upload: build
|
||||
.venv/bin/twine upload dist/*
|
||||
$(VENV)/twine upload dist/*
|
||||
|
||||
update-requirements: dev pip-tools
|
||||
.venv/bin/pip-compile -q -U requirements.in
|
||||
.venv/bin/pip-compile -q -U dev-requirements.in
|
||||
update-requirements: dev
|
||||
$(VENV)/pip-compile requirements.in
|
||||
$(VENV)/pip-compile dev-requirements.in
|
||||
|
||||
.venv/bin/tox: # install tox
|
||||
test -s .venv/bin/tox || .venv/bin/pip install -q -U tox
|
||||
|
||||
check: .venv/bin/tox # Code format check with isort and black
|
||||
check: dev # Code format check with isort and black
|
||||
tox -efmt-check
|
||||
tox -epep8
|
||||
|
||||
fix: .venv/bin/tox # fixes code formatting with isort and black
|
||||
fix: dev # fixes code formatting with isort and black
|
||||
tox -efmt
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
import logging
|
||||
|
||||
from aprsd import plugin
|
||||
from aprsd.plugins import location as location_plugin
|
||||
from slack_sdk import WebClient
|
||||
from slack_sdk.errors import SlackApiError
|
||||
|
||||
import aprsd_slack_plugin
|
||||
|
||||
LOG = logging.getLogger("APRSD")
|
||||
|
||||
|
||||
class SlackCommandPlugin(plugin.APRSDPluginBase):
|
||||
"""SlackCommandPlugin.
|
||||
|
||||
This APRSD plugin looks for the location command comming in
|
||||
to aprsd, then fetches the caller's location, and then reports
|
||||
that location string to the configured slack channel.
|
||||
|
||||
To use this:
|
||||
Create a slack bot for your workspace at api.slack.com.
|
||||
A good source of information on how to create the app
|
||||
and the tokens and permissions and install the app in your
|
||||
workspace is here:
|
||||
|
||||
https://api.slack.com/start/building/bolt-python
|
||||
|
||||
|
||||
You will need the signing secret from the
|
||||
Basic Information -> App Credentials form.
|
||||
You will also need the Bot User OAuth Access Token from
|
||||
OAuth & Permissions -> OAuth Tokens for Your Team ->
|
||||
Bot User OAuth Access Token.
|
||||
|
||||
Install the app/bot into your workspace.
|
||||
|
||||
Edit your ~/.config/aprsd/aprsd.yml and add the section
|
||||
slack:
|
||||
signing_secret: <signing secret token here>
|
||||
bot_token: <Bot User OAuth Access Token here>
|
||||
channel: <channel name here>
|
||||
"""
|
||||
|
||||
version = aprsd_slack_plugin.__version__
|
||||
|
||||
# matches any string starting with h or H
|
||||
command_regex = "^[lL]"
|
||||
command_name = "location-slack"
|
||||
|
||||
def _setup_slack(self):
|
||||
"""Create the slack require client from config."""
|
||||
|
||||
# signing_secret = self.config["slack"]["signing_secret"]
|
||||
if "slack" not in self.config:
|
||||
LOG.error("APRSD config is missing slack section")
|
||||
return False
|
||||
|
||||
bot_token = self.config["slack"].get("bot_token", None)
|
||||
if not bot_token:
|
||||
LOG.error(
|
||||
"APRSD config is missing slack: bot_token:<token>. "
|
||||
"Please install the slack app and get the "
|
||||
"Bot User OAth Access Token.",
|
||||
)
|
||||
return False
|
||||
|
||||
self.swc = WebClient(token=bot_token)
|
||||
|
||||
self.slack_channel = self.config["slack"].get("channel", None)
|
||||
if not self.slack_channel:
|
||||
LOG.error(
|
||||
"APRSD config is missing slack: slack_channel: <name> "
|
||||
"Please add a slack channel name to send messages.",
|
||||
)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def command(self, fromcall, message, ack):
|
||||
LOG.info("SlackCommandPlugin")
|
||||
|
||||
is_setup = self._setup_slack()
|
||||
if not is_setup:
|
||||
return
|
||||
|
||||
# now call the location plugin to get the location info
|
||||
lp = location_plugin.LocationPlugin(self.config)
|
||||
location = lp.command(fromcall, message, ack)
|
||||
if location:
|
||||
reply = location
|
||||
|
||||
LOG.debug("Sending '{}' to slack channel '{}'".format(reply, self.slack_channel))
|
||||
try:
|
||||
self.swc.chat_postMessage(channel=self.slack_channel, text=reply)
|
||||
except SlackApiError as e:
|
||||
LOG.error(
|
||||
"Failed to send message to channel '{}' because '{}'".format(
|
||||
self.slack_channel,
|
||||
str(e),
|
||||
),
|
||||
)
|
||||
else:
|
||||
LOG.debug("SlackCommandPlugin couldn't get location for '{}'".format(fromcall))
|
||||
|
||||
return None
|
|
@ -10,3 +10,4 @@ pbr
|
|||
Sphinx
|
||||
aprsd
|
||||
pre-commit
|
||||
pip-tools
|
||||
|
|
|
@ -1,11 +1,279 @@
|
|||
tox
|
||||
pytest
|
||||
pytest-cov
|
||||
mypy
|
||||
flake8
|
||||
pep8-naming
|
||||
black
|
||||
isort
|
||||
pbr
|
||||
Sphinx
|
||||
aprsd
|
||||
#
|
||||
# This file is autogenerated by pip-compile
|
||||
# To update, run:
|
||||
#
|
||||
# pip-compile dev-requirements.in
|
||||
#
|
||||
alabaster==0.7.12
|
||||
# via sphinx
|
||||
appdirs==1.4.4
|
||||
# via
|
||||
# black
|
||||
# virtualenv
|
||||
aprsd==1.6.1
|
||||
# via -r dev-requirements.in
|
||||
aprslib==0.6.47
|
||||
# via aprsd
|
||||
attrs==21.2.0
|
||||
# via pytest
|
||||
babel==2.9.1
|
||||
# via sphinx
|
||||
backoff==1.10.0
|
||||
# via
|
||||
# aprsd
|
||||
# opencage
|
||||
black==21.6b0
|
||||
# via -r dev-requirements.in
|
||||
certifi==2020.12.5
|
||||
# via
|
||||
# aprsd
|
||||
# requests
|
||||
cffi==1.14.4
|
||||
# via
|
||||
# aprsd
|
||||
# cryptography
|
||||
cfgv==3.3.0
|
||||
# via pre-commit
|
||||
chardet==4.0.0
|
||||
# via
|
||||
# aprsd
|
||||
# requests
|
||||
click-completion==0.5.2
|
||||
# via aprsd
|
||||
click==7.1.2
|
||||
# via
|
||||
# aprsd
|
||||
# black
|
||||
# click-completion
|
||||
# flask
|
||||
# pip-tools
|
||||
coverage==5.5
|
||||
# via pytest-cov
|
||||
cryptography==3.3.2
|
||||
# via
|
||||
# aprsd
|
||||
# pyopenssl
|
||||
distlib==0.3.2
|
||||
# via virtualenv
|
||||
dnspython==2.1.0
|
||||
# via
|
||||
# aprsd
|
||||
# py3-validate-email
|
||||
docutils==0.17.1
|
||||
# via sphinx
|
||||
filelock==3.0.12
|
||||
# via
|
||||
# aprsd
|
||||
# py3-validate-email
|
||||
# tox
|
||||
# virtualenv
|
||||
flake8-polyfill==1.0.2
|
||||
# via pep8-naming
|
||||
flake8==3.9.2
|
||||
# via
|
||||
# -r dev-requirements.in
|
||||
# flake8-polyfill
|
||||
flask-classful==0.14.2
|
||||
# via aprsd
|
||||
flask-httpauth==4.2.0
|
||||
# via aprsd
|
||||
flask==1.1.2
|
||||
# via
|
||||
# aprsd
|
||||
# flask-classful
|
||||
# flask-httpauth
|
||||
identify==2.2.10
|
||||
# via pre-commit
|
||||
idna==2.10
|
||||
# via
|
||||
# aprsd
|
||||
# py3-validate-email
|
||||
# requests
|
||||
imagesize==1.2.0
|
||||
# via sphinx
|
||||
imapclient==2.2.0
|
||||
# via aprsd
|
||||
iniconfig==1.1.1
|
||||
# via pytest
|
||||
isort==5.8.0
|
||||
# via -r dev-requirements.in
|
||||
itsdangerous==1.1.0
|
||||
# via
|
||||
# aprsd
|
||||
# flask
|
||||
jinja2==2.11.3
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
# flask
|
||||
# sphinx
|
||||
lxml==4.6.3
|
||||
# via
|
||||
# aprsd
|
||||
# yfinance
|
||||
markupsafe==1.1.1
|
||||
# via
|
||||
# aprsd
|
||||
# jinja2
|
||||
mccabe==0.6.1
|
||||
# via flake8
|
||||
multitasking==0.0.9
|
||||
# via
|
||||
# aprsd
|
||||
# yfinance
|
||||
mypy-extensions==0.4.3
|
||||
# via
|
||||
# black
|
||||
# mypy
|
||||
mypy==0.902
|
||||
# via -r dev-requirements.in
|
||||
nodeenv==1.6.0
|
||||
# via pre-commit
|
||||
numpy==1.20.1
|
||||
# via
|
||||
# aprsd
|
||||
# pandas
|
||||
# yfinance
|
||||
opencage==1.2.2
|
||||
# via aprsd
|
||||
packaging==20.9
|
||||
# via
|
||||
# pytest
|
||||
# sphinx
|
||||
# tox
|
||||
pandas==1.2.2
|
||||
# via
|
||||
# aprsd
|
||||
# yfinance
|
||||
pathspec==0.8.1
|
||||
# via black
|
||||
pbr==5.5.1
|
||||
# via
|
||||
# -r dev-requirements.in
|
||||
# aprsd
|
||||
pep517==0.10.0
|
||||
# via pip-tools
|
||||
pep8-naming==0.11.1
|
||||
# via -r dev-requirements.in
|
||||
pip-tools==6.1.0
|
||||
# via -r dev-requirements.in
|
||||
pluggy==0.13.1
|
||||
# via
|
||||
# aprsd
|
||||
# pytest
|
||||
# tox
|
||||
pre-commit==2.13.0
|
||||
# via -r dev-requirements.in
|
||||
py3-validate-email==0.2.12
|
||||
# via aprsd
|
||||
py==1.10.0
|
||||
# via
|
||||
# pytest
|
||||
# tox
|
||||
pycodestyle==2.7.0
|
||||
# via flake8
|
||||
pycparser==2.20
|
||||
# via
|
||||
# aprsd
|
||||
# cffi
|
||||
pyflakes==2.3.1
|
||||
# via flake8
|
||||
pygments==2.9.0
|
||||
# via sphinx
|
||||
pyopenssl==20.0.1
|
||||
# via
|
||||
# aprsd
|
||||
# opencage
|
||||
pyparsing==2.4.7
|
||||
# via packaging
|
||||
pytest-cov==2.12.1
|
||||
# via -r dev-requirements.in
|
||||
pytest==6.2.4
|
||||
# via
|
||||
# -r dev-requirements.in
|
||||
# pytest-cov
|
||||
python-dateutil==2.8.1
|
||||
# via
|
||||
# aprsd
|
||||
# pandas
|
||||
pytz==2020.5
|
||||
# via
|
||||
# aprsd
|
||||
# babel
|
||||
# pandas
|
||||
pyyaml==5.4.1
|
||||
# via
|
||||
# aprsd
|
||||
# pre-commit
|
||||
regex==2021.4.4
|
||||
# via black
|
||||
requests==2.25.1
|
||||
# via
|
||||
# aprsd
|
||||
# opencage
|
||||
# sphinx
|
||||
# yfinance
|
||||
shellingham==1.3.2
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
six==1.15.0
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
# cryptography
|
||||
# imapclient
|
||||
# opencage
|
||||
# pyopenssl
|
||||
# python-dateutil
|
||||
# tox
|
||||
# virtualenv
|
||||
snowballstemmer==2.1.0
|
||||
# via sphinx
|
||||
sphinx==4.0.2
|
||||
# via -r dev-requirements.in
|
||||
sphinxcontrib-applehelp==1.0.2
|
||||
# via sphinx
|
||||
sphinxcontrib-devhelp==1.0.2
|
||||
# via sphinx
|
||||
sphinxcontrib-htmlhelp==2.0.0
|
||||
# via sphinx
|
||||
sphinxcontrib-jsmath==1.0.1
|
||||
# via sphinx
|
||||
sphinxcontrib-qthelp==1.0.3
|
||||
# via sphinx
|
||||
sphinxcontrib-serializinghtml==1.1.5
|
||||
# via sphinx
|
||||
thesmuggler==1.0.1
|
||||
# via aprsd
|
||||
toml==0.10.2
|
||||
# via
|
||||
# black
|
||||
# mypy
|
||||
# pep517
|
||||
# pre-commit
|
||||
# pytest
|
||||
# pytest-cov
|
||||
# tox
|
||||
tox==3.23.1
|
||||
# via -r dev-requirements.in
|
||||
typing-extensions==3.10.0.0
|
||||
# via mypy
|
||||
urllib3==1.26.3
|
||||
# via
|
||||
# aprsd
|
||||
# requests
|
||||
virtualenv==20.4.7
|
||||
# via
|
||||
# pre-commit
|
||||
# tox
|
||||
werkzeug==1.0.1
|
||||
# via
|
||||
# aprsd
|
||||
# flask
|
||||
yfinance==0.1.55
|
||||
# via aprsd
|
||||
|
||||
# The following packages are considered to be unsafe in a requirements file:
|
||||
# pip
|
||||
# setuptools
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
pbr
|
||||
slack_sdk>=3.0
|
||||
slackeventsapi>=2.1.0
|
||||
aprsd
|
||||
slackblocks
|
||||
aprsd>=1.5.2
|
||||
|
|
163
requirements.txt
163
requirements.txt
|
@ -2,11 +2,160 @@
|
|||
# This file is autogenerated by pip-compile
|
||||
# To update, run:
|
||||
#
|
||||
# pip-compile
|
||||
# pip-compile requirements.in
|
||||
#
|
||||
aprsd>=1.5.0 # via -r requirements.in
|
||||
pbr # via -r requirements.in, aprsd
|
||||
requests # via aprsd
|
||||
six # via aprsd, click-completion, imapclient
|
||||
slack-sdk # via -r requirements.in
|
||||
slackeventsapi # via -r requirements.in
|
||||
aprsd==1.6.1
|
||||
# via -r requirements.in
|
||||
aprslib==0.6.47
|
||||
# via aprsd
|
||||
backoff==1.10.0
|
||||
# via
|
||||
# aprsd
|
||||
# opencage
|
||||
certifi==2020.12.5
|
||||
# via
|
||||
# aprsd
|
||||
# requests
|
||||
cffi==1.14.4
|
||||
# via
|
||||
# aprsd
|
||||
# cryptography
|
||||
chardet==4.0.0
|
||||
# via
|
||||
# aprsd
|
||||
# requests
|
||||
click-completion==0.5.2
|
||||
# via aprsd
|
||||
click==7.1.2
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
# flask
|
||||
cryptography==3.3.2
|
||||
# via
|
||||
# aprsd
|
||||
# pyopenssl
|
||||
dnspython==2.1.0
|
||||
# via
|
||||
# aprsd
|
||||
# py3-validate-email
|
||||
filelock==3.0.12
|
||||
# via
|
||||
# aprsd
|
||||
# py3-validate-email
|
||||
flask-classful==0.14.2
|
||||
# via aprsd
|
||||
flask-httpauth==4.2.0
|
||||
# via aprsd
|
||||
flask==1.1.2
|
||||
# via
|
||||
# aprsd
|
||||
# flask-classful
|
||||
# flask-httpauth
|
||||
# slackeventsapi
|
||||
idna==2.10
|
||||
# via
|
||||
# aprsd
|
||||
# py3-validate-email
|
||||
# requests
|
||||
imapclient==2.2.0
|
||||
# via aprsd
|
||||
itsdangerous==1.1.0
|
||||
# via
|
||||
# aprsd
|
||||
# flask
|
||||
# slackeventsapi
|
||||
jinja2==2.11.3
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
# flask
|
||||
# slackeventsapi
|
||||
lxml==4.6.3
|
||||
# via
|
||||
# aprsd
|
||||
# yfinance
|
||||
markupsafe==1.1.1
|
||||
# via
|
||||
# aprsd
|
||||
# jinja2
|
||||
# slackeventsapi
|
||||
multitasking==0.0.9
|
||||
# via
|
||||
# aprsd
|
||||
# yfinance
|
||||
numpy==1.20.1
|
||||
# via
|
||||
# aprsd
|
||||
# pandas
|
||||
# yfinance
|
||||
opencage==1.2.2
|
||||
# via aprsd
|
||||
pandas==1.2.2
|
||||
# via
|
||||
# aprsd
|
||||
# yfinance
|
||||
pbr==5.5.1
|
||||
# via
|
||||
# -r requirements.in
|
||||
# aprsd
|
||||
pluggy==0.13.1
|
||||
# via aprsd
|
||||
py3-validate-email==0.2.12
|
||||
# via aprsd
|
||||
pycparser==2.20
|
||||
# via
|
||||
# aprsd
|
||||
# cffi
|
||||
pyee==7.0.4
|
||||
# via slackeventsapi
|
||||
pyopenssl==20.0.1
|
||||
# via
|
||||
# aprsd
|
||||
# opencage
|
||||
python-dateutil==2.8.1
|
||||
# via
|
||||
# aprsd
|
||||
# pandas
|
||||
pytz==2020.5
|
||||
# via
|
||||
# aprsd
|
||||
# pandas
|
||||
pyyaml==5.4.1
|
||||
# via aprsd
|
||||
requests==2.25.1
|
||||
# via
|
||||
# aprsd
|
||||
# opencage
|
||||
# yfinance
|
||||
shellingham==1.3.2
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
six==1.15.0
|
||||
# via
|
||||
# aprsd
|
||||
# click-completion
|
||||
# cryptography
|
||||
# imapclient
|
||||
# opencage
|
||||
# pyopenssl
|
||||
# python-dateutil
|
||||
slack-sdk==3.6.0
|
||||
# via -r requirements.in
|
||||
slackblocks==0.2.3
|
||||
# via -r requirements.in
|
||||
slackeventsapi==2.2.1
|
||||
# via -r requirements.in
|
||||
thesmuggler==1.0.1
|
||||
# via aprsd
|
||||
urllib3==1.26.3
|
||||
# via
|
||||
# aprsd
|
||||
# requests
|
||||
werkzeug==1.0.1
|
||||
# via
|
||||
# aprsd
|
||||
# flask
|
||||
yfinance==0.1.55
|
||||
# via aprsd
|
||||
|
|
Loading…
Reference in New Issue