Compare commits

...

14 Commits

Author SHA1 Message Date
2f68e7e956 修改捕获逻辑 2021-01-23 09:48:17 +08:00
65ea719fd1 remove middleware 2021-01-21 18:07:06 +08:00
ad6a4447ab 修改事件监听 2021-01-21 17:52:30 +08:00
588890b355 fix env type 2021-01-21 17:29:13 +08:00
84aafd8a29 fix env 2021-01-21 17:22:57 +08:00
4cf2099a7f 修改依赖 2021-01-21 17:14:55 +08:00
3048488dae 修改网络模式 2021-01-21 17:11:37 +08:00
148b46f322 修改逻辑 2021-01-21 17:10:51 +08:00
0d5cf62944 添加说明 2021-01-21 17:01:26 +08:00
eeb6ba6e49 change image name 2021-01-21 16:47:00 +08:00
6985255dd9 添加docker支持 2021-01-21 16:45:31 +08:00
06025c3df8 修改依赖 2021-01-21 16:06:44 +08:00
56df05b38e 修改依赖 2021-01-21 16:05:46 +08:00
b1e56df080 fix perm 2021-01-21 16:02:16 +08:00
7 changed files with 50 additions and 56 deletions

11
Dockerfile Normal file
View File

@ -0,0 +1,11 @@
FROM python
ADD app.py requirements.txt /app/
ENV SLACK_SIGNING_SECRET=***
ENV SLACK_BOT_TOKEN=xoxb-***
ENV DINGTALK_WEBHOOK='https://oapi.dingtalk.com/robot/send?access_token=这里填写自己钉钉群自定义机器人的token'
ENV PORT=3000
WORKDIR /app
RUN pip install -r requirements.txt
RUN chmod +x app.py
EXPOSE 3000
ENTRYPOINT [ "python", "app.py" ]

View File

@ -1,2 +1,9 @@
# Slack Dingtalk Bridge # Slack Dingtalk Bridge
## 运行
### Docker
复制`example.env``.env`
修改其中的变量
`docker-compose up -d`
### 直接运行
`startup.sh`

47
app.py Normal file → Executable file
View File

@ -1,54 +1,33 @@
from dingtalkchatbot.chatbot import DingtalkChatbot from dingtalkchatbot.chatbot import DingtalkChatbot
from slack_bolt.async_app import AsyncApp from slack_bolt import App
from slack_bolt.authorization import AuthorizeResult import re
from slack_sdk.web.async_client import AsyncWebClient
import os import os
import logging import logging
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
# Import the async app instead of the regular one
async def authorize(enterprise_id, team_id, user_id, client: AsyncWebClient, logger):
logger.info(f"{enterprise_id},{team_id},{user_id}")
# You can implement your own logic here
token = os.environ["SLACK_BOT_TOKEN"]
return AuthorizeResult.from_auth_test_response(
auth_test_response=await client.auth_test(token=token),
bot_token=token,
)
# WebHook地址 # WebHook地址
dingtalk_webhook = os.environ["DINGTALK_WEBHOOK"] dingtalk_webhook = os.environ["DINGTALK_WEBHOOK"]
dingtalkbot = DingtalkChatbot(dingtalk_webhook) dingtalkbot = DingtalkChatbot(dingtalk_webhook)
app = AsyncApp( app = App(
signing_secret=os.environ["SLACK_SIGNING_SECRET"], authorize=authorize) token=os.environ.get("SLACK_BOT_TOKEN"),
signing_secret=os.environ.get("SLACK_SIGNING_SECRET")
)
@app.event("app_mention") @app.event({"type": "message", "subtype": None})
async def event_test(body, say, logger): def transfer_warn(body: dict, logger: logging.Logger):
logger.info(body) logger.info(body)
await say("What's up?") dingtalkbot.send_text('测试捕获一般消息\n'+str(body["event"]))
@app.command("/hello-bolt-python") @app.event({"type": "message", "subtype": "bot_message"})
async def command(ack, body, respond): def transfer_all(body: dict, logger: logging.Logger):
await ack()
await respond(f"Hi <@{body['user_id']}>!")
@app.message("Heads Up!*")
async def redirect(body, logger):
logger.info(body) logger.info(body)
dingtalkbot.send_text('测试捕获机器人消息\n'+str(body["event"]))
@app.message("")
async def logall(body, logger):
logger.debug(body)
dingtalkbot.send_text(body)
# 启动slack监听 # 启动slack监听
if __name__ == "__main__": if __name__ == "__main__":
app.start(3000) app.start(port=int(os.environ.get("PORT", 3000)))

13
docker-compose.yml Normal file
View File

@ -0,0 +1,13 @@
version: '3'
services:
app:
build: .
image: slack-dingtalk-bridge
network_mode: bridge
ports:
- 3000:3000
environment:
- SLACK_BOT_TOKEN
- SLACK_SIGNING_SECRET
- DINGTALK_WEBHOOK
restart: unless-stopped

View File

@ -1,4 +1,6 @@
export SLACK_SIGNING_SECRET=***
export SLACK_BOT_TOKEN=xoxb-*** export SLACK_BOT_TOKEN=xoxb-***
export SLACK_SIGNING_SECRET=***
export DINGTALK_WEBHOOK='https://oapi.dingtalk.com/robot/send?access_token=这里填写自己钉钉群自定义机器人的token' export DINGTALK_WEBHOOK='https://oapi.dingtalk.com/robot/send?access_token=这里填写自己钉钉群自定义机器人的token'
export PORT=3000

View File

@ -1,20 +1,2 @@
astroid==2.4.2 DingtalkChatbot
autopep8==1.5.4 slack-bolt
certifi==2020.12.5
chardet==4.0.0
DingtalkChatbot==1.5.2
idna==2.10
isort==5.7.0
lazy-object-proxy==1.4.3
mccabe==0.6.1
pkg-resources==0.0.0
pycodestyle==2.6.0
pylint==2.6.0
requests==2.25.1
six==1.15.0
slack-bolt==1.2.3
slack-sdk==3.2.0
toml==0.10.2
typed-ast==1.4.2
urllib3==1.26.2
wrapt==1.12.1

0
startup.sh Normal file → Executable file
View File