forked from zume2020/Telegram-bot-Google-Drive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.py
70 lines (53 loc) · 2.23 KB
/
bot.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
#!/usr/bin/env python
from __future__ import print_function
import os
import telegram
import logging
from telegram.ext import Updater
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler ,MessageHandler
from telegram.ext import MessageHandler, Filters
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
from apiclient.http import MediaFileUpload
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',level=logging.INFO)
logger = logging.getLogger(__name__)
SCOPES = 'https://www.googleapis.com/auth/drive'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secrets.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v2', http=creds.authorize(Http()),cache_discovery=False)
def start(update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text="Upload files here.")
def file_handler(update, context):
file = context.bot.getFile(update.message.document.file_id)
file.download(update.message.document.file_name)
FILES = ((update.message.document.file_name, False),(update.message.document.file_name, True),)
for filename, convert in FILES:
metadata = {'name': filename}
media = MediaFileUpload(filename, chunksize=1024 * 1024, mimetype='application/x-rar-compressed', resumable=True)
request = DRIVE.files().create(body=metadata,
media_body=media)
response = None
while response is None:
status, response = request.next_chunk()
if status:
print( "Uploaded %d%%." % int(status.progress() * 100))
print ("Upload Complete!")
def silentremove(filename):
try:
os.remove(filename)
except OSError:
pass
def error(bot, update, error):
logger.warning('Update "%s" caused error "%s"', update, error)
def main():
updater = Updater(token='TOKEN',use_context=True)
dispatcher = updater.dispatcher
updater.dispatcher.add_handler(CommandHandler('start', start))
dispatcher.add_handler(MessageHandler(Filters.document,file_handler))
updater.start_polling()
if __name__ == '__main__':
main()