我试图制作一张Discord webhook海报,只要文件更新(添加一行)并附带一组特定字词,就会发出邮件请求。
让我们说新行有" TRIGGER WORD"然后它会触发发布请求。我已经开始使服务读取文件,但不知道如何创建触发器部分
import requests
import schedule
import time
link = 'webhook link'
def job():
file = open('/root/rak/b7/client.log','r').read()
payload={'content': '@everyone '}
r = requests.post(link, data=payload)
schedule.every(1).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
此处有效负载将包含行中的所有内容以及@everyone
内容。我无法弄清楚如何做到这一点。
关于文件;它每秒更新一次(增加1-2行)。特定的触发词可能位于任何一个新行中。
答案 0 :(得分:0)
执行此操作的一种简单方法是跟踪上次运行job()
时文件的大小。删除那么多将给你新的部分。随着文件变大,这会变慢,但根据你的情况可能没问题。
oldSize = 0
def job():
global oldSize
fileContents = open('/root/rak/b7/client.log','r').read()
newSize = len(fileContents)
newFileContents = fileContents[oldSize : ] #delete the old stuff
addedLines = newFileContents.split('\n') #split by lines
for line in addedLines:
if line.find('TRIGGER WORDS') != -1:
payload={'content': '@everyone ' + line}
r = requests.post(link, data=payload)
oldSize = newSize #make oldSize have correct value next time