Как сделать Slack Bot уведомлениями в уникальных сообщениях - PullRequest
0 голосов
/ 24 марта 2020

Мой Python код ниже. По сути, он устанавливает соединение с базой данных SQL Server и получает список уведомлений для размещения на канале Slack. Несколько уведомлений - если их время находится на близком расстоянии - иногда отправляются вместе на канал Slack в виде сообщения.

В настоящее время выводится либо

User John submitted new notification. Link:

, либо

User John submitted new notification. Link:
User Jane submitted new notification. Link:
User Max submitted new notification. Link:

Python код:

import requests
import json
import adodbapi
import adodbapi.ado_consts as adc
import adodbapi.is64bit as is64bit

sqlconn = adodbapi.connect('Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security 
Info=False;Initial Catalog="MyDatabase";Data Source=localhost,1360');
cur = sqlconn.cursor()
cur.execute('''
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DECLARE @PostedOn datetime
SELECT @PostedOn=LastChecked FROM Notifications
select Email,a.PostedOn, '<https://www.website.com/' +CASE WHEN a.QuestionId IS NOT NULL THEN 
'question' ELSE 'article' END+'/'+CONVERT(varchar,COALESCE(A.questionId,A.ArticleId))+'|Link>'
from UserProfile u
inner join answer a on a.UserId=u.UserId
where exists(select * from Topic et where et.UserId=u.UserId)
AND u.IsExpert=1
AND A.Postedon>@PostedOn

update Notifications
set LastChecked=GETDATE()
''')


sqlconn.commit()
url = 'http://ipaddress:port/bot/chatsecrets/notification-network'
headers = {'content-type': 'application/json'}
hasrows=0
postlist=''
template ='''User {0} submitted new notification. {1}:'''
for row in cur.fetchall():
    postlist = postlist +'\n'+template.format(row[0],row[2])
    hasrows=1

if hasrows:
    response = requests.post(url, data=json.dumps({'secret': postlist}), headers=headers)

print (postlist)

Я хотел бы настроить код так, чтобы бот мог отправлять новое сообщение Slack для каждого нового уведомления, а не собирать список уведомлений и отправлять их как массовое обновление.

...