diff --git a/bot.py b/bot.py
index 0e3b1f3..ee67cef 100644
--- a/bot.py
+++ b/bot.py
@@ -1,19 +1,20 @@
-import telebot
-from telebot import types
-from vk_messages import VkMessage, VkPolling
-import vk
-import threading
-import re
import logging
-import requests
-import ujson
-import wget
import os
-from PIL import Image
+import re
+import threading
+import ujson
+
import cherrypy
import redis
+import requests
+import telebot
+import vk
+import wget
+from PIL import Image
+from telebot import types
from credentials import token, vk_app_id, local_port
+from vk_messages import VkMessage, VkPolling
logging.basicConfig(format='%(levelname)-8s [%(asctime)s] %(message)s', level=logging.WARNING, filename='vk.log')
@@ -34,6 +35,75 @@ mark = types.InlineKeyboardMarkup()
yes = types.InlineKeyboardButton('ВХОД', url=link)
mark.add(yes)
+"""def get_pages_switcher(offset, dialogs, markup):
+ if offset - 10 >= 0:
+ leftbutton = types.InlineKeyboardButton('◀', callback_data='page{}'.format(offset - 10)) # callback
+ else:
+ leftbutton = None
+ if dialogs[0] - (offset + 10) >= -10:
+ rightbutton = types.InlineKeyboardButton('▶', callback_data='page{}'.format(offset + 10))
+ else:
+ rightbutton = None
+
+ if leftbutton and rightbutton:
+ markup.row(leftbutton, rightbutton)
+ return
+ if leftbutton:
+ markup.row(leftbutton)
+ else:
+ markup.row(rightbutton)
+
+
+def request_user_dialogs(session):
+ order = []
+ users_ids = []
+ dialogs = vk.API(session).messages.getDialogs(offset=offset, count=10)
+ for chat in dialogs[1:]:
+ if 'chat_id' in chat:
+ order.append({'title': chat['title'], 'id': chat['chat_id']})
+ elif chat['uid'] > 0:
+ order.append({'title': chat['title'], 'id': chat['uid']})
+ users_ids.append(chat['uid'])
+ users = vk.API(session).users.get(user_ids=users_ids, fields=[])
+ for output in order:
+ if output['title'] == ' ... ':
+ for x in users:
+ if x['uid'] == output['id']:
+ current_user = x
+ break
+ output['title'] = '{} {}'.format(current_user['first_name'], current_user['last_name'])
+ if not output['title']:
+ order.remove(output)
+ return order
+
+
+def get_user_dialogs(message, order, edit=False):
+ markup = types.InlineKeyboardMarkup(row_width=2)
+ for button in range(len(order)):
+ order[button] = types.InlineKeyboardButton(order[button]['title'], callback_data=str(order[button]['id']))
+ rows = [order[x:x + 2] for x in range(0, len(order), 2)]
+ for row in rows:
+ try:
+ markup.row(row[0], row[1])
+ except:
+ markup.row(row[0])
+ get_pages_switcher(offset, dialogs, markup)
+ if edit:
+ print(bot.edit_message_reply_markup(message.chat.id, message.message_id, reply_markup=markup).wait())
+ else:
+ bot.send_message(message.chat.id, 'Выберите Диалог',
+ parse_mode='HTML', reply_markup=markup).wait()
+
+
+@bot.callback_query_handler(func=lambda call: True)
+def callback_buttons(call):
+ if call.message:
+ if 'page' in call.data:
+ bot.answer_callback_query(call.id).wait()
+ print(call.data.split('page')[1])
+ get_user_dialogs(call.message, VkMessage(vk_tokens.get(str(call.from_user.id))).session,
+ int(call.data.split('page')[1]), True)"""
+
def create_thread(uid, vk_token):
a = VkPolling()
@@ -85,6 +155,11 @@ def info_extractor(info):
return info
+"""@bot.message_handler(commands=['dialogs'])
+def dialogs_command(message):
+ get_user_dialogs(message, VkMessage(vk_tokens.get(str(message.from_user.id))).session, 0)"""
+
+
@bot.message_handler(commands=['stop'])
def stop_command(message):
if not check_thread(message.from_user.id):
@@ -339,52 +414,47 @@ def send_contact(message, userid, group, forward_messages=None):
@bot.message_handler(content_types=['document', 'voice', 'audio'])
def reply_document(message):
- if message.reply_to_message:
- try:
- vk_sender(message, send_doc)
- except Exception as e:
- bot.reply_to(message, 'Файл слишком большой, максимально допустимый размер *20мб*!',
- parse_mode='Markdown').wait()
- print('Error: {}'.format(e))
+ try:
+ vk_sender(message, send_doc)
+ except Exception as e:
+ bot.reply_to(message, 'Файл слишком большой, максимально допустимый размер *20мб*!',
+ parse_mode='Markdown').wait()
+ print('Error: {}'.format(e))
@bot.message_handler(content_types=['sticker'])
def reply_sticker(message):
- if message.reply_to_message:
- try:
- vk_sender(message, send_sticker)
- except Exception as e:
- bot.reply_to(message, 'Произошла неизвестная ошибка при отправке',
- parse_mode='Markdown').wait()
- print('Error: {}'.format(e))
+ try:
+ vk_sender(message, send_sticker)
+ except Exception as e:
+ bot.reply_to(message, 'Произошла неизвестная ошибка при отправке',
+ parse_mode='Markdown').wait()
+ print('Error: {}'.format(e))
@bot.message_handler(content_types=['photo'])
def reply_photo(message):
- if message.reply_to_message:
- try:
- vk_sender(message, send_photo)
- except Exception as e:
- bot.send_message(message.chat.id, 'Фото слишком большое, максимально допустимый размер *20мб*!',
- parse_mode='Markdown').wait()
- print('Error: {}'.format(e))
+ try:
+ vk_sender(message, send_photo)
+ except Exception as e:
+ bot.send_message(message.chat.id, 'Фото слишком большое, максимально допустимый размер *20мб*!',
+ parse_mode='Markdown').wait()
+ print('Error: {}'.format(e))
@bot.message_handler(content_types=['video', 'video_note'])
def reply_video(message):
- if message.reply_to_message:
- try:
- vk_sender(message, send_video)
- except Exception as e:
- bot.reply_to(message, 'Файл слишком большой, максимально допустимый размер *20мб*!',
- parse_mode='Markdown').wait()
- print('Error: {}'.format(e))
+ try:
+ vk_sender(message, send_video)
+ except Exception as e:
+ bot.reply_to(message, 'Файл слишком большой, максимально допустимый размер *20мб*!',
+ parse_mode='Markdown').wait()
+ print('Error: {}'.format(e))
@bot.message_handler(content_types=['contact'])
def reply_contact(message):
- if message.reply_to_message:
- vk_sender(message, send_contact)
+ vk_sender(message, send_contact)
@bot.message_handler(content_types=['text'])
@@ -414,15 +484,14 @@ def reply_text(message):
bot.send_message(message.chat.id, 'Неверная ссылка, попробуй ещё раз!').wait()
else:
bot.send_message(message.chat.id, 'Вход уже выполнен!\n/stop для выхода.').wait()
- return
+ return
- if message.reply_to_message:
- try:
- vk_sender(message, send_text)
- except Exception as e:
- bot.reply_to(message, 'Произошла неизвестная ошибка при отправке',
- parse_mode='Markdown').wait()
- print('Error: {}'.format(e))
+ try:
+ vk_sender(message, send_text)
+ except Exception as e:
+ bot.reply_to(message, 'Произошла неизвестная ошибка при отправке',
+ parse_mode='Markdown').wait()
+ print('Error: {}'.format(e))
# bot.polling()
diff --git a/vk_messages.py b/vk_messages.py
index aafc43d..73bbaad 100644
--- a/vk_messages.py
+++ b/vk_messages.py
@@ -237,7 +237,7 @@ def add_reply_info(m):
if 'chat_id' in m:
return ''.format(m['uid'], m['chat_id'], check_forward_id(m))
else:
- return ''.format(m['uid'], check_forward_id(m))
+ return ''.format(m['uid'], check_forward_id(m))
def add_user_info(m, first_name, last_name):