Fixed attachments preview and .doc(x) duplicating
This commit is contained in:
parent
533213f969
commit
44bca45a38
2
bot.py
2
bot.py
@ -81,7 +81,7 @@ def verifycode(code):
|
|||||||
|
|
||||||
|
|
||||||
def info_extractor(info):
|
def info_extractor(info):
|
||||||
info = info[0].url[8:-1].split('.')
|
info = info[-1].url[8:-1].split('.')
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,13 +32,13 @@ class VkPolling:
|
|||||||
def handle_messages(m, vk_user, bot, chat_id, mainmessage=None):
|
def handle_messages(m, vk_user, bot, chat_id, mainmessage=None):
|
||||||
user = vk.API(vk_user.session).users.get(user_ids=m["uid"], fields=[])[0]
|
user = vk.API(vk_user.session).users.get(user_ids=m["uid"], fields=[])[0]
|
||||||
if 'body' in m and not 'attachment' in m and not 'geo' in m and not 'fwd_messages' in m:
|
if 'body' in m and not 'attachment' in m and not 'geo' in m and not 'fwd_messages' in m:
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"])
|
data = add_user_info(m, user["first_name"], user["last_name"])[:-1] + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
if 'attachment' in m:
|
if 'attachment' in m:
|
||||||
attachment_handler(m, user, bot, chat_id, mainmessage)
|
attachment_handler(m, user, bot, chat_id, mainmessage)
|
||||||
if 'geo' in m:
|
if 'geo' in m:
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"])
|
data = add_user_info(m, user["first_name"], user["last_name"]) + add_reply_info(m)
|
||||||
geo = bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
geo = bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
bot.send_venue(chat_id, m['geo']['coordinates'].split(' ')[0], m['geo']['coordinates'].split(' ')[1],
|
bot.send_venue(chat_id, m['geo']['coordinates'].split(' ')[0], m['geo']['coordinates'].split(' ')[1],
|
||||||
@ -46,7 +46,8 @@ def handle_messages(m, vk_user, bot, chat_id, mainmessage=None):
|
|||||||
disable_notification=check_notification(m),
|
disable_notification=check_notification(m),
|
||||||
reply_to_message_id=geo.message_id).wait()
|
reply_to_message_id=geo.message_id).wait()
|
||||||
if 'fwd_messages' in m:
|
if 'fwd_messages' in m:
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"]) + '<i>Пересланные сообщения</i>'
|
data = add_user_info(m, user["first_name"],
|
||||||
|
user["last_name"]) + '<i>Пересланные сообщения</i>' + add_reply_info(m)
|
||||||
reply = bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
reply = bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m),
|
disable_notification=check_notification(m),
|
||||||
reply_to_message_id=mainmessage).wait().message_id
|
reply_to_message_id=mainmessage).wait().message_id
|
||||||
@ -63,22 +64,23 @@ def handle_updates(vk_user, bot, chat_id, updates):
|
|||||||
def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
||||||
if m['attachment']['type'] == 'photo':
|
if m['attachment']['type'] == 'photo':
|
||||||
for photo in m['attachments']:
|
for photo in m['attachments']:
|
||||||
data = add_reply_info(m, user['first_name'], user['last_name']) + '<a href="{}">Фото</a>'.format(
|
data = add_user_info(m, user['first_name'], user['last_name']) + '<a href="{}">Фото</a>'.format(
|
||||||
get_max_src(photo['photo']))
|
get_max_src(photo['photo'])) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
if m['attachment']['type'] == 'video':
|
if m['attachment']['type'] == 'video':
|
||||||
for vid in m['attachments']:
|
for vid in m['attachments']:
|
||||||
link = 'https://vk.com/video{}_{}'.format(vid['video']['owner_id'],
|
link = 'https://vk.com/video{}_{}'.format(vid['video']['owner_id'],
|
||||||
vid['video']['vid'])
|
vid['video']['vid'])
|
||||||
data = add_reply_info(m, user['first_name'], user['last_name']) + '<a href="{}">Видео</a>'.format(link)
|
data = add_user_info(m, user['first_name'], user['last_name']) + '<a href="{}">Видео</a>'.format(
|
||||||
|
link) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
if m['attachment']['type'] == 'audio':
|
if m['attachment']['type'] == 'audio':
|
||||||
for audio in m['attachments']:
|
for audio in m['attachments']:
|
||||||
data = add_reply_info(m, user['first_name'], user['last_name']) + '🎵 <code>{} - {}</code>'.format(
|
data = add_user_info(m, user['first_name'], user['last_name']) + '🎵 <code>{} - {}</code>'.format(
|
||||||
audio['audio']['artist'],
|
audio['audio']['artist'],
|
||||||
audio['audio']['title'])
|
audio['audio']['title']) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
if m['attachment']['type'] == 'doc':
|
if m['attachment']['type'] == 'doc':
|
||||||
@ -86,8 +88,8 @@ def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
|||||||
if doc['doc']['ext'] == 'gif':
|
if doc['doc']['ext'] == 'gif':
|
||||||
try:
|
try:
|
||||||
link = doc['doc']['url']
|
link = doc['doc']['url']
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"]) + '<a href="{}">GIF</a>'.format(
|
data = add_user_info(m, user["first_name"], user["last_name"]) + '<a href="{}">GIF</a>'.format(
|
||||||
link)
|
link) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
except:
|
except:
|
||||||
@ -96,9 +98,9 @@ def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
|||||||
elif doc['doc']['ext'] == 'pdf' or doc['doc']['ext'] == 'zip':
|
elif doc['doc']['ext'] == 'pdf' or doc['doc']['ext'] == 'zip':
|
||||||
try:
|
try:
|
||||||
link = doc['doc']['url']
|
link = doc['doc']['url']
|
||||||
data = add_reply_info(m, user["first_name"],
|
data = add_user_info(m, user["first_name"],
|
||||||
user["last_name"], ) + '<a href="{}">Документ</a>'.format(
|
user["last_name"], ) + '<a href="{}">Документ</a>'.format(
|
||||||
link)
|
link) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
except:
|
except:
|
||||||
@ -107,7 +109,8 @@ def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
|||||||
elif doc['doc']['ext'] == 'jpg' or doc['doc']['ext'] == 'png':
|
elif doc['doc']['ext'] == 'jpg' or doc['doc']['ext'] == 'png':
|
||||||
try:
|
try:
|
||||||
link = doc['doc']['url']
|
link = doc['doc']['url']
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"], ) + '<i>Документ</i>'
|
data = add_user_info(m, user["first_name"],
|
||||||
|
user["last_name"], ) + '<i>Документ</i>' + add_reply_info(m)
|
||||||
notification = bot.send_message(chat_id, data, parse_mode='HTML',
|
notification = bot.send_message(chat_id, data, parse_mode='HTML',
|
||||||
disable_notification=check_notification(m),
|
disable_notification=check_notification(m),
|
||||||
reply_to_message_id=mainmessage).wait()
|
reply_to_message_id=mainmessage).wait()
|
||||||
@ -121,8 +124,8 @@ def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
|||||||
elif doc['doc']['ext'] == 'ogg':
|
elif doc['doc']['ext'] == 'ogg':
|
||||||
try:
|
try:
|
||||||
link = doc['doc']['url']
|
link = doc['doc']['url']
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"], ) + \
|
data = add_user_info(m, user["first_name"], user["last_name"], ) + \
|
||||||
'<a href="{}">Аудио</a>'.format(link)
|
'<a href="{}">Аудио</a>'.format(link) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
except:
|
except:
|
||||||
@ -130,37 +133,46 @@ def attachment_handler(m, user, bot, chat_id, mainmessage=None):
|
|||||||
|
|
||||||
elif doc['doc']['ext'] == 'doc' or doc['doc']['ext'] == 'docx':
|
elif doc['doc']['ext'] == 'doc' or doc['doc']['ext'] == 'docx':
|
||||||
try:
|
try:
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"], ) + '<i>Документ</i>'
|
data = add_user_info(m, user["first_name"],
|
||||||
|
user["last_name"], ) + '<i>Документ</i>' + add_reply_info(m)
|
||||||
notification = bot.send_message(chat_id, data, parse_mode='HTML',
|
notification = bot.send_message(chat_id, data, parse_mode='HTML',
|
||||||
disable_notification=check_notification(m),
|
disable_notification=check_notification(m),
|
||||||
reply_to_message_id=mainmessage).wait()
|
reply_to_message_id=mainmessage).wait()
|
||||||
uploading = bot.send_chat_action(chat_id, 'upload_document')
|
uploading = bot.send_chat_action(chat_id, 'upload_document')
|
||||||
file = wget.download(requests.get(doc['doc']['url']).url)
|
file = wget.download(requests.get(doc['doc']['url']).url)
|
||||||
bot.send_document(chat_id, open(file, 'rb'),
|
openedfile = open(file, 'rb')
|
||||||
|
bot.send_document(chat_id, openedfile,
|
||||||
reply_to_message_id=notification.message_id,
|
reply_to_message_id=notification.message_id,
|
||||||
disable_notification=check_notification(m)).wait()
|
disable_notification=check_notification(m)).wait()
|
||||||
uploading.wait()
|
uploading.wait()
|
||||||
file.close()
|
openedfile.close()
|
||||||
os.remove(file)
|
os.remove(file)
|
||||||
except:
|
except:
|
||||||
send_doc_link(doc, m, user, bot, chat_id, mainmessage)
|
send_doc_link(doc, m, user, bot, chat_id, mainmessage)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
send_doc_link(doc, m, user, bot, chat_id, mainmessage)
|
send_doc_link(doc, m, user, bot, chat_id, mainmessage)
|
||||||
|
|
||||||
if m['attachment']['type'] == 'sticker':
|
if m['attachment']['type'] == 'sticker':
|
||||||
link = m['attachment']['sticker']['photo_512']
|
link = m['attachment']['sticker']['photo_512']
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"], ) + '<a href="{}">Стикер</a>'.format(link)
|
data = add_user_info(m, user["first_name"], user["last_name"]) + '<a href="{}">Стикер</a>'.format(
|
||||||
|
link) + add_reply_info(m)
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
# TODO: Wall Posts and comments
|
# TODO: Wall Posts and comments
|
||||||
|
|
||||||
|
|
||||||
|
def check_expansion(document):
|
||||||
|
print(document['doc']['title'].split('.'))
|
||||||
|
if len(document['doc']['title'].split('.')) - 1:
|
||||||
|
return document['doc']['title']
|
||||||
|
else:
|
||||||
|
return document['doc']['title'] + '.' + document['doc']['ext']
|
||||||
|
|
||||||
|
|
||||||
def send_doc_link(doc, m, user, bot, chat_id, mainmessage=None):
|
def send_doc_link(doc, m, user, bot, chat_id, mainmessage=None):
|
||||||
link = doc['doc']['url']
|
link = doc['doc']['url']
|
||||||
data = add_reply_info(m, user["first_name"], user["last_name"]) + \
|
data = add_user_info(m, user["first_name"], user["last_name"]) + \
|
||||||
'<i>Документ</i>\n<a href="{}">{}</a>'.format(link,
|
'<i>Документ</i>\n<a href="{}">{}</a>'.format(link, check_expansion(doc)) + add_reply_info(m)
|
||||||
doc['doc']['title'] + '.' + doc['doc']['ext'])
|
|
||||||
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
bot.send_message(chat_id, data, parse_mode='HTML', disable_web_page_preview=False,
|
||||||
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
disable_notification=check_notification(m), reply_to_message_id=mainmessage).wait()
|
||||||
|
|
||||||
@ -172,27 +184,24 @@ def check_forward_id(msg):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def add_reply_info(m, first_name, last_name):
|
def add_reply_info(m):
|
||||||
|
if 'chat_id' in m:
|
||||||
|
return '<a href="x{}.{}.{}">​</a>'.format(m['uid'], m['chat_id'], check_forward_id(m))
|
||||||
|
else:
|
||||||
|
return '<a href="x{}.{}.0">​</a>'.format(m['uid'], check_forward_id(m))
|
||||||
|
|
||||||
|
|
||||||
|
def add_user_info(m, first_name, last_name):
|
||||||
if m['body']:
|
if m['body']:
|
||||||
if 'chat_id' in m:
|
if 'chat_id' in m:
|
||||||
return '<a href="x{}.{}.{}">​</a><b>{} {} @ {}:</b>\n{}\n'.format(m['uid'], m['chat_id'],
|
return '<b>{} {} @ {}:</b>\n{}\n'.format(first_name, last_name, m['title'], m['body'].replace('<br>', '\n'))
|
||||||
check_forward_id(m),
|
|
||||||
first_name,
|
|
||||||
last_name, m['title'],
|
|
||||||
m['body'].replace('<br>', '\n'))
|
|
||||||
else:
|
else:
|
||||||
return '<a href="x{}.{}.0">​</a><b>{} {}:</b>\n{}\n'.format(m['uid'], check_forward_id(m), first_name,
|
return '<b>{} {}:</b>\n{}\n'.format(first_name, last_name, m['body'].replace('<br>', '\n'))
|
||||||
last_name,
|
|
||||||
m['body'].replace('<br>', '\n'))
|
|
||||||
else:
|
else:
|
||||||
if 'chat_id' in m:
|
if 'chat_id' in m:
|
||||||
return '<a href="x{}.{}.{}">​</a><b>{} {} @ {}:</b>\n'.format(m['uid'], m['chat_id'],
|
return '<b>{} {} @ {}:</b>\n'.format(first_name, last_name, m['title'])
|
||||||
check_forward_id(m),
|
|
||||||
first_name,
|
|
||||||
last_name, m['title'])
|
|
||||||
else:
|
else:
|
||||||
return '<a href="x{}.{}.0">​</a><b>{} {}:</b>\n'.format(m['uid'], check_forward_id(m), first_name,
|
return '<b>{} {}:</b>\n'.format(first_name, last_name)
|
||||||
last_name)
|
|
||||||
|
|
||||||
|
|
||||||
def check_notification(value):
|
def check_notification(value):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user