-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathup.py
138 lines (127 loc) · 5.06 KB
/
up.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# !/usr/bin/python
# -*- coding: utf-8 -*-
# @time : 2022/04/09 21:27
# @author : xiaomi
# @desc :tg机器人上传代码到git
# 依赖:
#pip install gitpython
#pip install retrying
#pip install pysocks
#
from git import Repo
#from turtle import update
import requests
import time,os, json,logging
from retrying import retry
requests.packages.urllib3.disable_warnings()
#botToken
botToken="5616194596:AAHwiTM7h3R1DuBoG8tWlr-JDjUk3AayToE"
#要监听的群组id
listem_id= -1001384788031
#代理地址
proxies={
#不需要代理禁用这两行
#'http': "http://127.0.0.1:7890",
#'https': "http://127.0.0.1:7890"
}
#基本设置,可以替代注释里的配置项
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__) #创建logger对象
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler("bot.log") #创建handler对象,保存文件
handler.setLevel(logging.INFO)
log_format = '[%(levelname)s TIME:%(asctime)s] %(message)s'
formatter = logging.Formatter(log_format)
handler.setFormatter(formatter)
logger.addHandler(handler)
updateId = None
s = requests.session()
s.keep_alive = False
def getUpdates(offset):
global updateId
if (offset):
url = "https://api.telegram.org/bot"+botToken+"/getUpdates?offset="+str(offset)
else:
url = "https://api.telegram.org/bot"+botToken+"/getUpdates"
response = requests.request("GET", url, data=None, headers=None,proxies=proxies,verify=False)
resultStr = response.text
result = json.loads(resultStr)
if (result["ok"]==True):
messages = result["result"]
for message in messages:
if(("message" in message)==False):
updateId = message["update_id"]+1
break
chat_id = message["message"]["chat"]["id"]
if (message["message"]["chat"]["id"]==listem_id):
if("document" in message["message"]):
file_name = message["message"]["document"]["file_name"]
downFile(message["message"]["document"]["file_id"],file_name,chat_id)
else:
if("text" in message["message"]):
text = message["message"]["text"]
logger.info(message["message"]["chat"]["title"]+"("+str(message["message"]["chat"]["id"])+")消息:"+text)
if("删除 " in text):
fileName = text.replace("删除 ","")
sendMsg(chat_id,"开始删除: "+fileName)
try:
os.unlink(fileName)
except:
sendMsg(chat_id,"本地文件不存在")
if(pushFile()):
sendMsg(chat_id,fileName+"删除成功")
else:
sendMsg(chat_id,fileName+"删除失败,网络异常")
updateId = message["update_id"]+1
def downFile(fileId,file_name,chat_id):
sendMsg(chat_id,"开始上传:"+file_name)
fileIdUrl = "https://api.telegram.org/bot"+botToken+"/getFile?file_id="+fileId
response = requests.request("GET", fileIdUrl, data=None, headers=None,proxies=proxies,verify=False)
resultStr = response.text
result = json.loads(resultStr)
if (result["ok"]==True):
filePath = result["result"]["file_path"]
filePathUrl = "https://api.telegram.org/file/bot"+botToken+"/"+filePath
down_res = requests.request("GET", filePathUrl, data=None, headers=None,proxies=proxies,verify=False)
with open(file_name,"wb") as code:
b = code.write(down_res.content)
logger.info(b)
logger.info("文件下载成功:"+file_name)
pushResult = pushFile()
if(pushResult):
sendMsg(chat_id,file_name+"上传成功")
return
sendMsg(chat_id,file_name+"上传失败,网络异常")
def pushFile():
dirfile = os.path.abspath('') # code的文件位置,我默认将其存放在根目录下
repo = Repo(dirfile)
g = repo.git
g.pull()
g.add("--all")
try:
g.commit("-m auto update")
except:
logger.info("没有任何改变,无须更新")
return True
try:
push(g)
return True
except:
logger.info("上传失败")
return False
@retry()
def push(git):
logger.info("git push")
git.push()
def sendMsg(chat_id,text):
url = "https://api.telegram.org/bot"+botToken+"/sendMessage?chat_id="+str(chat_id)+"&text="+text
response = requests.request("GET", url, data=None, headers=None,proxies=proxies,verify=False)
resultStr = response.text
if __name__ == '__main__':
logger.info('启动成功,开始监听群消息')
while True:
try:
getUpdates(updateId)
except:
logger.info("网络异常")
time.sleep(3)