diff --git a/LiteVkApi/__init__.py b/LiteVkApi/__init__.py
index f682bc2..65386d4 100644
--- a/LiteVkApi/__init__.py
+++ b/LiteVkApi/__init__.py
@@ -1,32 +1,89 @@
-# =============================================================================
-# Придумал и разработал - MaMush (vk.com/maks.mushtriev2, t.me/Error_mak25)
-# Гитхаб - github.com/Ma-Mush/LiteVKApi
-# PypI - pypi.org/project/litevkapi/
-
-
-# Убрал chats кроме проверки сообщений, login токен и ид метами поменял, send_message, edit_message, аргументы в msg
-# =============================================================================
try:
import vk_api
-except: raise ImportError(
+except ImportError: raise ImportError(
"Ошибка авторизации (login):\n =====\nНе установлена библиотека vk_api - pip3 install vk_api\n====="
)
from vk_api.utils import get_random_id
-from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.bot_longpoll import VkBotLongPoll
from threading import Thread
-
-class _keybord_for_send_if_None(): # Так было проще всего, просто поверьте
- def get_keyboard(*arg):
- pass
+from json import dumps
+from dataclasses import dataclass
class LiteVkApiError(Exception):
pass
-class Vk(object):
+@dataclass
+class Keyboard(object):
+ def __init__(self, permanent:bool=True, inline:bool=False, buttons:list=[]):
+ self.keyboard = self._dump({
+ 'one_time': not permanent,
+ 'inline': inline,
+ 'buttons': buttons
+ })
+
+ def _dump(self, *args, **kwargs):
+ kwargs['ensure_ascii'] = False
+ kwargs['separators'] = (',', ':')
+ return dumps(*args, **kwargs)
+class Button(object):
+ def text(label, color, callback=False, payload=None):
+ color = color.lower()
+ m = [
+ ['positive', '3', 'зеленый'],
+ ['negative', '2', 'красный'],
+ ['secondary', '1', 'белый'],
+ ['primary', '0', 'синий'],
+ ]
+ for i in m:
+ if color in i:
+ return {
+ 'color': i[0].lower(),
+ 'action': {
+ 'type': "callback" if callback else "text",
+ 'payload': payload,
+ 'label': label,
+ }
+ }
+
+ def url(label, link, payload=None):
+ return {
+ 'action': {
+ 'type': "open_link",
+ 'link': link,
+ 'label': label,
+ 'payload': payload,
+ }
+ }
+
+ def open_app(app_id, owner_id, label, hash, payload=None):
+ return {
+ 'action': {
+ 'type': "open_app",
+ 'app_id': app_id,
+ 'owner_id': owner_id,
+ 'label': label,
+ 'hash': hash,
+ 'payload': payload,
+ }
+ }
+
+ def vk_pay(hash, payload=None):
+ return {
+ 'action': {
+ 'type': "vkpay",
+ 'hash': hash,
+ 'payload': payload,
+ }
+ }
+
+class EmptyKeyboard():
+ keyboard = ""
+ keyboard_close = '{"buttons":[],"one_time":true}'
+
+class Client(object):
def __init__(self, vk, vk_session, key, server, ts):
self.vk, self.vk_session, self.key, self.server, self.ts, self.event_msg = vk, vk_session, key, server, ts, ""
@@ -61,38 +118,17 @@ def _upload_file(self, file_names, peer):
)
attachment.append("doc{}_{}".format(mydoc["owner_id"], mydoc["id"]))
return attachment
-
- def _color(self, keyboard, title, col, callback=False, payload=None):
- col = col.upper()
- m = [
- ["POSITIVE", "3", "ЗЕЛЕНЫЙ"],
- ["NEGATIVE", "2", "КРАСНЫЙ"],
- ["SECONDARY", "1", "БЕЛЫЙ"],
- ["PRIMARY", "0", "СИНИЙ"],
- ]
- if not callback:
- button = keyboard.add_button
- else:
- button = keyboard.add_callback_button
-
- for i in range(len(m)):
- if col in m[i]:
- button(title, color=getattr(VkKeyboardColor, m[i][0]), payload=payload)
- return 0
- raise LiteVkApiError(
- "Ошибка создания клавиатуры (new_keyboard):\n=====\nНеправильно указан цвет/указан специальный объект клавиатуры\n====="
- )
def login(
- tok:str,
+ token:str,
id_group:int=None,
- userbot=False,
+ userbot:bool=False,
my_key=None,
my_server=None,
my_ts=None,
):
try:
- vk_session = vk_api.VkApi(token=tok)
+ vk_session = vk_api.VkApi(token=token)
except:
raise LiteVkApiError(
"Ошибка авторизации (login):\n=====\nНе действительный токен или указан id вместо токена\n====="
@@ -117,30 +153,28 @@ def login(
"Ошибка авторизации (login):\n=====\nУкажите значения key, server, ts! Их можно сгененировать тут - https://vk.com/dev/groups.getLongPollServer \n====="
)
- return Vk(vk, vk_session, my_key, my_server, my_ts) # Я знаю, что это ужасно, но не хочу отходить от Vk.login()
+ return Client(vk, vk_session, my_key, my_server, my_ts) # Я знаю, что это ужасно, но не хочу отходить от Client.login()
def get_session(self):
return self.vk_session
def give_session(session, my_key=None, my_server=None, my_ts=None):
vk = session.get_api()
- return Vk(vk, session, my_key, my_server, my_ts)
+ return Client(vk, session, my_key, my_server, my_ts)
def msg(
self,
text:str,
userid:int or str,
- photo:list or tuple or set=[],
+ photos:list or tuple or set=[],
files:list or tuple or set=[],
- keyboard=None,
+ keyboard:Keyboard=EmptyKeyboard,
reply_to:int=None
):
- if photo != []:
- photo = self._upload_photo(photo, userid)
- if files != []:
+ if photos:
+ photos = self._upload_photo(photos, userid)
+ if files:
files = self._upload_file(files, userid)
- if keyboard == None:
- keyboard = _keybord_for_send_if_None()
try:
return self.vk.messages.send(
key=self.key,
@@ -149,8 +183,8 @@ def msg(
message=text,
peer_id=userid,
random_id=get_random_id(),
- attachment=photo + files,
- keyboard=keyboard.get_keyboard(),
+ attachment=photos + files,
+ keyboard=keyboard.keyboard,
reply_to=reply_to)
except:
raise LiteVkApiError(
@@ -164,9 +198,9 @@ def send_message(
userid:int or str,
photos:list or tuple or set=[],
files:list or tuple or set=[],
- keyboard=None,
- reply_to:int=None
- ): # Кому удобнее так, чем msg
+ keyboard:Keyboard=EmptyKeyboard,
+ reply_to:int=None
+ ): # Кому удобнее так, чем msg
return self.msg(text=text, userid=userid, photos=photos, files=files, keyboard=keyboard, reply_to=reply_to)
def edit_message(
@@ -176,14 +210,12 @@ def edit_message(
messid:int,
photo:list or tuple or set=[],
files:list or tuple or set=[],
- keyboard=None
+ keyboard:Keyboard=EmptyKeyboard
):
if photo != []:
photo = self._upload_photo(photo, userid)
if files != []:
files = self._upload_file(files, userid)
- if keyboard == None:
- keyboard = _keybord_for_send_if_None()
try:
return self.vk.messages.edit(
key=self.key,
@@ -193,7 +225,7 @@ def edit_message(
peer_id=userid,
message_id=messid,
attachment=photo + files,
- keyboard=keyboard.get_keyboard(),
+ keyboard=keyboard.keyboard,
)
except:
raise LiteVkApiError(
@@ -220,7 +252,13 @@ def check_new_msg(self, chat:bool=False):
def get_event(self):
return self.event_msg
- def send_photo(self, file_names:list or set or tuple, userid:int or str, msg:str=None):
+ def send_photo(
+ self,
+ file_names:list or set or tuple,
+ userid:int or str,
+ msg:str=None,
+ keyboard:Keyboard=EmptyKeyboard
+ ):
attachment = self._upload_photo(file_names, userid)
try:
return self.vk.messages.send(
@@ -231,13 +269,20 @@ def send_photo(self, file_names:list or set or tuple, userid:int or str, msg:str
message=msg,
random_id=get_random_id(),
attachment=attachment,
+ keyboard=keyboard.keyboard,
)
except:
raise LiteVkApiError(
"Ошибка отправки фото (send_photo):\n=====\nНеправильно введен один из параметров отправки сообщений\n====="
)
- def send_file(self, file_names, userid, msg=None):
+ def send_file(
+ self,
+ file_names:list or set or tuple,
+ userid:int or str,
+ msg:str=None,
+ keyboard:Keyboard=EmptyKeyboard
+ ):
attachment = self._upload_file(file_names, userid)
try:
return self.vk.messages.send(
@@ -247,60 +292,20 @@ def send_file(self, file_names, userid, msg=None):
peer_id=userid,
message=msg,
random_id=get_random_id(),
- attachment=attachment
+ attachment=attachment,
+ keyboard=keyboard.keyboard,
)
except:
raise LiteVkApiError(
"Ошибка отправки файла (send_file):\n=====\nНеправильно введен один из параметров отправки сообщений\n====="
)
- def new_keyboard(self, dicts:dict, perm:bool=True):
- keyboard = VkKeyboard(one_time=(not perm))
- try:
- for i in dicts.keys():
- if i == "new_line":
- keyboard.add_line()
- elif i == "vk_pay":
- keyboard.add_vkpay_button(hash=dicts[i])
- elif i == "open_app":
- for key, value in dicts[i].items():
- if key == "app_id":
- app_id = value
- elif key == "owner_id":
- owner_id = value
- elif key == "label" or key == "text":
- label = value
- elif key == "hash":
- hash1 = value
- keyboard.add_vkapps_button(
- app_id, owner_id, label, hash1
- )
- elif i == "open_link":
- for key, value in dicts[i].items():
- if key == "label" or key == "text":
- label = value
- elif key == "link":
- link = value
- keyboard.add_openlink_button(label, link)
- elif i == "callback" or i == "inline":
- payload = None
- for key, value in dicts[i].items():
- if key == "label" or key == "text":
- label = value
- elif key == "color":
- col = value
- elif key == "payload":
- payload = value
- self._color(keyboard, label, col, True, payload)
- else:
- self._color(keyboard, i, dicts[i])
- except Exception:
- raise LiteVkApiError(
- "Ошибка создания клавиатуры (new_keyboard):\n=====\nНеправильно указан один из параметров клавиатуры\n====="
- )
- return keyboard
-
- def send_keyboard(self, keyboard, userid:int or str, msg:str="Клавиатура!"):
+ def send_keyboard(
+ self,
+ keyboard:Keyboard,
+ userid:int or str,
+ msg:str="Клавиатура!"
+ ):
try:
return self.vk.messages.send(
key=self.key,
@@ -309,7 +314,7 @@ def send_keyboard(self, keyboard, userid:int or str, msg:str="Клавиатур
peer_id=userid,
message=msg,
random_id=get_random_id(),
- keyboard=keyboard.get_keyboard()
+ keyboard=keyboard.keyboard
)
except:
raise LiteVkApiError(
@@ -317,9 +322,11 @@ def send_keyboard(self, keyboard, userid:int or str, msg:str="Клавиатур
(бот раньше не писал ему сообщения или не находится в беседе)\n====="
)
- def delete_keyboard(self, userid:int or str, msg:str="Клавиатура закрыта!"):
- keyboard = VkKeyboard(one_time=True)
- keyboard.keyboard["buttons"] = []
+ def delete_keyboard(
+ self,
+ userid:int or str,
+ msg:str="Клавиатура закрыта!"
+ ):
try:
return self.vk.messages.send(
key=self.key,
@@ -328,7 +335,7 @@ def delete_keyboard(self, userid:int or str, msg:str="Клавиатура за
peer_id=userid,
message=msg,
random_id=get_random_id(),
- keyboard=keyboard.get_keyboard(),
+ keyboard=EmptyKeyboard.keyboard_close,
)
except:
raise LiteVkApiError(
@@ -336,13 +343,21 @@ def delete_keyboard(self, userid:int or str, msg:str="Клавиатура за
(бот раньше не писал ему сообщения или не находится в беседе)\n====="
)
- def mailing(self, text:str, userids:list or set or tuple, safe:list=[]):
+ def mailing(
+ self,
+ text:str,
+ userids:list or set or tuple,
+ safe:list=[],
+ photos:list or tuple or set=[],
+ files:list or tuple or set=[],
+ keyboard:Keyboard=EmptyKeyboard,
+ ):
def r(text, userids):
try:
for i in userids:
try:
if i not in safe:
- Vk.msg(self, text, i)
+ Client.msg(self, text, i, photos, files, keyboard)
except:
pass
except:
@@ -380,7 +395,7 @@ def get_all_message_data(self):
def get_all_open_id(self, message_data=None):
if message_data is None:
- message_data = Vk.get_all_message_data(self)
+ message_data = self.get_all_message_data()
ret = []
for i in message_data:
ret.append(i["peer_id"])
diff --git a/README.md b/README.md
index 030062e..992ada3 100644
--- a/README.md
+++ b/README.md
@@ -12,175 +12,292 @@ P.s. Если вы читаете это в PypI, то у вас могут не
Для начала установите vk_api, если он не установлен - pip3 install vk_api
Скрипт библиотеки написан в виде функций и различных переменных в классе, поэтому можно использовать несколько вариантов импорта:
-Рекомендую - from LiteVkApi import Vk (будет описана здесь), import LiteVkApi (придется использовать LiteVkApi.Vk._), < один из предыдущих вариантов > as < название > (вместо названия импортированного модуля можно использовать свое имя)
-
-## Vk.Login(token, id_group=None, userbot=False, my_key=0, my_server=0, my_ts=0) *
-
-### Функция ВСЕГДА имеет объект Vk
-Функция регистрирует вас на сервере ВКонтакте и с обновления 2.0 возвращает сессию в переменную.
-Параметры:
+Рекомендую - from LiteVkApi import Client (будет описана здесь), import LiteVkApi (придется использовать LiteVkApi.Client._), < один из предыдущих вариантов > as < название > (вместо названия импортированного модуля можно использовать свое имя)
+
+
======
+ Что нового в обновлении 2.4
+
+- ### Переработка клавиатуры
+ Теперь она генерируется специальным классом Keyboard и по отдельны кнопкам (класс Button), подробнее читайте в соответсвующих разделах ниже.
+
+- ### Класс Vk теперь называется Client
+ Я все больше беру пример с библиотеки Telethon :)
+
+- ### Исправлены мелкие ошибки, переработаны некоторые части кода библиотеки
+
+- ### Переработа документация
+
+
+
+======
+
+
+
+# Классы
+
+## - Client - класс взаимодействия с Вк
+
+ Функции
+
+* ## Client.login(token, id_group, userbot, my_key, my_server, my_ts) *
+ ### Функция ВСЕГДА имеет объект Client
+ Функция регистрирует вас на сервере ВКонтакте и возвращает сессию в переменную.
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ token | Токен сообщества в виде строки (например 'a244f42a6eaec65dbeh1ee13aab8ce7355311448868357e545c27cd648025c8a31ee66f4528a0a4ca98be')
+ id_group | id группы в числовом виде (например 200397283), если используется юзер-бот - любое число или None (нужен, только если вы используете токен группы)
+ userbot | Для страницы (а не для группы) вы используете бота? (True/False) По умолчанию False
+ get_session | Если True - возвращает сессию в переменную (для удобства использования вместе vk_api). По умолчанию False
+ ост. | Настройки для беседы, узать тут - https://vk.com/dev/groups.getLongPollServer
+
+
+
+* ## _.get_session()
+ Возвращает сессию Вконтакте, т.е. ели вы уже вошли через Client.login и вам надо пользоваться обычным vk_api, то вы можете использовать эту сессию, чтобы не входить снова. (Тоже самое на vk_api - vk_session = vk_api.VkApi(token = токен))
+
+* ## Client.give_session(session) *
+ #### Функция ВСЕГДА имеет объект Client
+ Регистрирует вашу сессию Вк, но только если вы уже входили через другие api и передали ее в параметр session (для vk_api сессия получается через session = vk_api.VkApi(token = токен))
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ session | Сессия в Вк от vk_api
+ ост. | Настройки для беседы, узать тут - https://vk.com/dev/groups.getLongPollServer
+
+
+
+* ## _.msg(text, userid, photo, files, keyboard, reply_to)
+ Отправляет сообщение пользователю по ID / беседе по ее номеру с заданным текстом
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ text | Текст сообщения
+ userid | ID пользователя/беседы для отправкии сообщеия
+ photo | Массив с путями до фотографий, которые нужно отправить
+ files | Массив с путями до файлов, которые нужно отправить
+ keyboard | Клавиатура, полученная с помощью Keyboard (подробнее - ниже)
+ reply_to | ID сообщения, на котороее нужно ответить
+
+
+
+* ## _.send_message(text, userid, photo, files, keyboard, reply_to)
+ То же самое, что и _.msg
+
+* ## _.edit_message(text, userid, messid, photo, files, keyboard)
+ Изменяет сообщение по ID
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ text | Текст сообщения
+ userid | ID пользователя/беседы, куда было отправлено сообщение
+ messid | ID сообщения, которое нужно изменить
+ photo | Массив с путями до фотографий, которые нужно отправить
+ files | Массив с путями до файлов, которые нужно отправить
+ keyboard | Клавиатура, полученная с помощью Keyboard (подробнее - ниже)
+
+
+
+* ## _.check_new_msg(chat)
+ Используется для проверки новых сообщений (возвращает True / False)
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
+
+
+
+* ## _.get_event()
+ Возвращает данные о новом сообщении при его наличии. Основные параметры выданных данных - user_id / chat_id, text. Подробнее в документации vk_api.
+
+* ## _.send_photo(file_names, userid, msg, keyboard)
+ Отправляет фото с сообщением / без него пользователю/беседе.
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ file_name | массив файлов в директории запущенного питон-файла или полный путь к нему
+ userid | ID пользователя/беседы для отправкии сообщеия
+ msg | Текст сообщения (по умолчанию без него)
+ keyboard | Клавиатура, полученная с помощью Keyboard (подробнее - ниже)
+
+
+
+* ## _.send_file(file_names, userid, msg, keyboard)
+ Отправляет файл с сообщением / без него пользователю/беседе.
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ file_names | Массив файлов в директории запущенного питон-файла или полный путь к нему
+ userid | ID пользователя/беседы для отправкии сообщеия
+ msg | Текст сообщения (по умолчанию без него)
+ keyboard | Клавиатура, полученная с помощью Keyboard (подробнее - ниже)
+
+
+
+* ## _.send_keyboard(keyboard, userid, msg)
+ Отправляем пользователю созданнуб раннее клавиатуру
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ keyboard | Клавиатура, созданная раннее
+ userid | Ид пользователя / беседы
+ msg | Сообщение при отправке клавиатуры (по умолчанию 'Клавиатура!')
+
+
+
+* ## _.delete_keyboard(userid, msg)
+ Удаляет клавиатуру у пользователя.
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ userid | Ид пользователя / беседы
+ msg | Сообщение при удалении клавиатуры (по умолчанию 'Клавиатура закрыта!')
+
+
+
+* ## _.mailing(text, userids, safe)
+ Делает рассылку независимо от других действий (бот будет отвечать во время рассылки).
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ text | Текст сообщения
+ userids | Массив с ID пользователей / бесед (например - [123456, 1234567, 12345678])
+ safe | Массив с ID пользователей / бесед, которые отказались от рассылки, по умолчанию таких нет
+
+
+
+* ## _.get_all_message_data()
+ Возвращает массив со словарями с данными о последних сообщениях всех чатов, где находился бот (и ЛС, и беседы, и боты). Внимание! Функция достаточно долгая для ботов с большой аудиторией. Может занимать от долей секунды до нескольких минут.
+ Что находится в словарях:
+
+ Название | Что это?
+ ------------- | -------------
+ date | Количиство секунд с 01.01.1970 00:00 UTC, также как time.time()
+ from_id | Id группы или пользователя, кто отправил последнее сообщение (может быть как и бот, так и пользователь)
+ id | Id этого сообщения
+ out | 0 / 1, 0 - последнее сообщение присали вам, 1 - последнее сообщение прислали вы
+ peer_id | Id чата - chat_id если это беседа, user_id если это Лс (ну или id группы если это бот)
+ random_id | Какой рандомный Id у сообщения (нужен для его отправки, фактически бесполезен)
+ text | Текст сообщения
+ attachments | Описание вложений (фото, видео, файлы, стикеры и тд.) последнего сообщения (если это просто текст - [])
+ admin_author_id | Если out=1 и писал не бот, а человек, то в этот параметр передается id админа, который писал сообщение
+ update_time | Если сообщение редактировали, то передается время редактирования в формате, как в date
+ conversation_message_id | Уникальный автоматически увеличивающийся номер для всех сообщений с этим peer
+ fwd_messages | Массив пересланных сообщений, если они есть (если нет - [])
+ important | В документации не нашел, скорее всего избарнный (важный) чат или нет (True/False)
+ is_hidden | В документации не нашел, скорее всего скрытое сообщение (удалено у меня) или нет (но это не точно) (True/False)
+
+
+
+
+* ## _.get_all_open_id(message_data)
+ Возвращает в переменную массив с Id всех пользоватлей, которые когда-либо писали боту или id бесед, где он находится (куда ему можно писать - для рассылки)
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ message_data | Данные, полученные с помощью get_all_message_data*, по умолчанию None, функция * вызывается автоматически
+
+
+
+* ## _.VkMethod(method_name, arg)
+ Возвращает в переменную данные, полученные в результате запроса с помощью Вк-метода. Создана для удобства, чтобы не имортировать vk_api и получать сессию)
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ method_name | Назване Вк-метода (все методы тут - https://vk.com/dev/methods )
+ arg | Параметры для метода в виде словаря
+
+
+
+
+
+## - Keyboard - класс для создания клавиатуры
+ Описание
+
Название | Что это?
------------- | -------------
-token | Токен сообщества в виде строки (например 'a244f42a6eaec65dbeh1ee13aab8ce7355311448868357e545c27cd648025c8a31ee66f4528a0a4ca98be')
-id_group | id группы в числовом виде (например 200397283), если используется юзер-бот - любое число (нужен, только если вы используете токен группы)
-userbot | Для страницы (а не для группы) вы используете бота? (True/False) По умолчанию False
-get_session | Если True - возвращает сессию в переменную (для удобства использования вместе vk_api). По умолчанию False
-ост. | Настройки для беседы, узать тут - https://vk.com/dev/groups.getLongPollServer
+permanent | При True - клавиатуру можно нажимать много раз, при False - пропадает после первого
+inline | При True - клавиатура в сообщении, при False - как обычно, снизу экрана
+buttons* | Двойной массив, заполенный массивами, в которых объекты - кнопки, полученные из класса Buttons (ниже)
-p.s. Для бесед не тестировал, возможны ошибки)
-## _.get_session()
-Возвращает сессию Вконтакте, т.е. ели вы уже вошли через Vk.login и вам надо пользоваться обычным vk_api, то вы можете использовать эту сессию, чтобы не входить снова. (Тоже самое на vk_api - vk_session = vk_api.VkApi(token = токен))
+ * Подробнее про праметр "buttons". Это двойной массив, имеет вид [[кнопка, кнопка], [кнопка]]. Как нетрудно догадаться - вложенные массивы подразумевают строки с кнопками. То есть, если вы хотите разместить 2 кнопки на первой строке, а еще 1 на второй - используйте конструкнию выше. При 3-ух кнопках по одной на строке - [[кнопка], [кнопка], [кнопка]].
+
-## Vk.give_session(session) *
+## - Button - класс для создания кнопок для клавиатуры (Keyboard)
+ Функции
-#### Функция ВСЕГДА имеет объект Vk
-Регистрирует вашу сессию Вк, но только если вы уже входили через другие api и передали ее в параметр session (для vk_api сессия получается через session = vk_api.VkApi(token = токен))
-Параметры:
-Название | Что это?
-------------- | -------------
-session | Сессия в Вк
-ост. | Настройки для беседы, узать тут - https://vk.com/dev/groups.getLongPollServer
+* ## Button.text(label, color, callback, payload)
+ Возвращает обычную кнопку с текстом
+ Параметры
+
+ Название | Что это?
+ ------------- | -------------
+ label | Текст кнопки
+ color | Цвет (Синий - 'primary', '0', 'синий'; Белый - 'secondary', '1', 'белый'; Красный - 'negative', '2', 'красный'; Зелёный - 'positive', '3', 'зеленый')
+ callback | Коллбэк это кнопка или нет (True/False)
+ payload | Данные для старых клиентов ВК (я сам хз че это, в доке Вк так написано)
-## _.msg(text, userid, photo=[], files=[], keyboard=None, reply_to=None)
-Отправляет сообщение пользователю по ID / беседе по ее номеру с заданным текстом
-Параметры:
-Название | Что это?
-------------- | -------------
-text | Текст сообщения
-userid | ID пользователя/беседы для отправкии сообщеия
-photo | Массив с путями до фотографий, которые нужно отправить
-files | Массив с путями до файлов, которые нужно отправить
-keyboard | Клавиатура, полученная с помощью _.new_keyboard()
-reply_to | ID сообщения, на котороее нужно ответить
-
-## _.send_message(text, userid, photo=[], files=[], keyboard=None, reply_to=None)
-То же самое, что и _.msg
-
-## _.edit_message(text, userid, messid, photo=[], files=[], keyboard=None)
-Изменяет сообщение по ID
-Параметры:
-Название | Что это?
-------------- | -------------
-text | Текст сообщения
-userid | ID пользователя/беседы, куда было отправлено сообщение
-messid | ID сообщения, которое нужно изменить
-photo | Массив с путями до фотографий, которые нужно отправить
-files | Массив с путями до файлов, которые нужно отправить
-keyboard | Клавиатура, полученная с помощью _.new_keyboard()
-
-## _.check_new_msg(chat=False)
-Используется для проверки новых сообщений (возвращает True / False)
-Параметры:
-Название | Что это?
-------------- | -------------
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
+
-## _.get_event()
-Возвращает данные о новом сообщении при его наличии. Основные параметры выданных данных - user_id / chat_id, text. Подробнее в документации vk_api.
-## _.send_photo(file_names, userid, msg=None)
-Отправляет фото с сообщением / без него пользователю/беседе.
-Параметры:
-Название | Что это?
-------------- | -------------
-file_name | массив файлов в директории запущенного питон-файла или полный путь к нему
-userid | ID пользователя/беседы для отправкии сообщеия
-msg | Текст сообщения (по умолчанию без него)
+* ## Button.url(label, link, payload)
+ Возвращает кнопку с ссылкой
+ Параметры
-## _.send_file(file_names, userid, msg=None)
-Отправляет файл с сообщением / без него пользователю/беседе.
-Параметры:
-Название | Что это?
-------------- | -------------
-file_names | Массив файлов в директории запущенного питон-файла или полный путь к нему
-userid | ID пользователя/беседы для отправкии сообщеия
-msg | Текст сообщения (по умолчанию без него)
+ Название | Что это?
+ ------------- | -------------
+ label | Текст кнопки
+ link | Ссылка, которая будет открыта при нажатии
+ payload | Данные для старых клиентов ВК
-## _.new_keyboard(dict, perm=True)
-Создание клавиатуры (возвращает данные в переменную для отправки)
-Параметры:
-Название | Что это?
-------------- | -------------
-dict | Словарь с данными по кнопкам.
-perm | Будет ли сохранятся клавиатура после нажатия (True / False)? По умолчанию True. (Лайфхак - False можно использовать вместо delete_keyboard при поэтапной выдаче клавиатур)
+
-По кнопкам:
+* ## Button.open_app(app_id, owner_id, label, hash, payload)
+ Возвращает кнопку для открытия указанного приложения VK mini apps
+ Параметры
-+ Словарь для обычной кнопки - {Текст:Цвет} (все цвета - ['POSITIVE', '3', 'ЗЕЛЕНЫЙ'], ['NEGATIVE', '2', 'КРАСНЫЙ'], ['SECONDARY', '1', 'БЕЛЫЙ'], ['PRIMARY', '0', 'СИНИЙ']).
-+ Для переноса на новую линию - {"new_line":""}.
-+ Для открытие перевода в VkPay - {"vk_pay":hash твоего кошелька}.
-+ Для открытия мини-приложения Вконтакте - {"open_app":{"app_id":ид приложения, "owner_id":owner id приложения, "label":текст на кнопке, "hash":хэш приложения}}
-+ Для открытия ссылки на любой ресурс - {"open_link":{"label":текст кнопки, "link":ссылка с http / https}}
-+ Для создания callback (inline) кнопки - {"callback":{"label":текст кнопки, "color":цвет кнопки, "payload":данные для callback api (по умолчанию None)}}
+ Название | Что это?
+ ------------- | -------------
+ app_id | ID приложения
+ app_hash | Хэш приложения
+ label | Текст кнопки
+ hash | Хэш
+ payload | Данные для старых клиентов ВК
-## _.send_keyboard(keyboard, userid, msg='Клавиатура!')
-Отправляем пользователю созданнуб раннее клавиатуру
-Параметры:
-Название | Что это?
-------------- | -------------
-keyboard | Клавиатура, созданная раннее
-userid | Ид пользователя / беседы
-msg | Сообщение при отправке клавиатуры (по умолчанию 'Клавиатура!')
+
-## _.delete_keyboard(userid, msg='Клавиатура закрыта!')
-Удаляет клавиатуру у пользователя.
-Параметры:
-Название | Что это?
-------------- | -------------
-userid | Ид пользователя / беседы
-msg | Сообщение при удалении клавиатуры (по умолчанию 'Клавиатура закрыта!')
+* ## Button.vk_pay(hash, payload)
+ Возвращает кнопку для открытия VK pay
+ Параметры
-## _.mailing(text, userids, safe=[])
-Делает рассылку независимо от других действий (бот будет отвечать во время рассылки).
-Параметры:
-Название | Что это?
-------------- | -------------
-text | Текст сообщения
-userids | Массив с ID пользователей / бесед (например - [123456, 1234567, 12345678])
-safe | Массив с ID пользователей / бесед, которые отказались от рассылки, по умолчанию таких нет
+ Название | Что это?
+ ------------- | -------------
+ hash | Хэш аккаунта VK pay
+ payload | Данные для старых клиентов ВК
-## _.get_all_message_data()
-Возвращает массив со словарями с данными о последних сообщениях всех чатов, где находился бот (и ЛС, и беседы, и боты). Внимание! Функция достаточно долгая для ботов с большой аудиторией. Может занимать от долей секунды до нескольких минут.
+
-Что находится в словарях:
-Название | Что это?
-------------- | -------------
-date | Количиство секунд с 01.01.1970 00:00 UTC, также как time.time()
-from_id | Id группы или пользователя, кто отправил последнее сообщение (может быть как и бот, так и пользователь)
-id | Id этого сообщения
-out | 0 / 1, 0 - последнее сообщение присали вам, 1 - последнее сообщение прислали вы
-peer_id | Id чата - chat_id если это беседа, user_id если это Лс (ну или id группы если это бот)
-random_id | Какой рандомный Id у сообщения (нужен для его отправки, фактически бесполезен)
-text | Текст сообщения
-attachments | Описание вложений (фото, видео, файлы, стикеры и тд.) последнего сообщения (если это просто текст - [])
-admin_author_id | Если out=1 и писал не бот, а человек, то в этот параметр передается id админа, который писал сообщение
-update_time | Если сообщение редактировали, то передается время редактирования в формате, как в date
-conversation_message_id | Уникальный автоматически увеличивающийся номер для всех сообщений с этим peer
-fwd_messages | Массив пересланных сообщений, если они есть (если нет - [])
-important | В документации не нашел, скорее всего избарнный (важный) чат или нет (True/False)
-is_hidden | В документации не нашел, скорее всего скрытое сообщение (удалено у меня) или нет (но это не точно) (True/False)
-
-## _.get_all_open_id(message_data=None)
-Возвращает в переменную массив с Id всех пользоватлей, которые когда-либо писали боту или id бесед, где он находится (куда ему можно писать - для рассылки)
-Параметры:
-Название | Что это?
-------------- | -------------
-message_data | Данные, полученные с помощью get_all_message_data*, по умолчанию None, функция * вызывается автоматически
+
-## _.VkMethod(method_name, arg)
-Возвращает в переменную данные, полученные в результате запроса с помощью Вк-метода. Создана для удобства, чтобы не имортировать vk_api и получать сессию)
-Параметры:
-Название | Что это?
-------------- | -------------
-method_name | Назване Вк-метода (все методы тут - https://vk.com/dev/methods )
-arg | Параметры для метода в виде словаря
# Примеры
## Отправка сообщения с тем же текстом, тому же пользователю, что и прислали нам:
```python
-from LiteVkApi import Vk
-vk_session = Vk.login("твой токен", твой ид)
+from LiteVkApi import Client
+vk_session = Client.login("твой токен", твой ид)
while True:
if vk_session.check_new_msg():
event = vk_session.get_event()
@@ -188,8 +305,8 @@ while True:
```
## Простейший бот:
```python
-from LiteVkApi import Vk
-vk_session = Vk.login("твой токен", твой ид)
+from LiteVkApi import Client
+vk_session = Client.login("твой токен", твой ид)
while True:
if vk_session.check_new_msg():
event = vk_session.get_event()
@@ -201,11 +318,9 @@ while True:
```
## Создание, отправка и удаление клавиатуры:
```python
-from LiteVkApi import Vk
-vk_session = Vk.login("твой токен", твой ид)
-kbrd = {'Клавиатура':"синий", 'new_line':"", 'Закрыть клавиатуру':'3',
-'new_line':'', 'open_link':{'label':'Создатель библиотеки', 'link':'https://vk.com/maks.mushtriev2'}}
-keyboard = vk_session.new_keyboard(kbrd)
+from LiteVkApi import Client
+vk_session = Client.login("твой токен", твой ид)
+keyboard = Keyboard(True, False, [[Button.text("Клавиатура", "синий")], [Button.text("Закрыть клавиатуру", "синий")], [Button.url("Создатель библиотеки", "https://vk.com/maks.mushtriev2")]])
while True:
if vk_session.check_new_msg():
event = vk_session.get_event()
@@ -237,11 +352,11 @@ vk_session.mailing('Рассылка!', mass_ids)
# Контакты
-Что-то не работает, есть вопросы, пожелания? Пиши - vk.com/maks.mushtriev2, t.me/Error_mak25
+Что-то не работает, есть вопросы, пожелания? Пиши - [Telegram](https://t.me/Error_mak25), [VK](https://vk.com/maks.mushtriev2)
-Мой блог - vk.com/mamush_blog
+Мой блог - [Telegram](https://t.me/mamush_blog), [VK](https://vk.com/mamush_blog)
-Донат - vk.cc/az7BQK (Киви)
+Донат - [Киви, оплата кошельком/номером телефона/любой картой без комиссии (тык)](https://qiwi.com/n/NADEZNIEINVEST)
### Удачи!
diff --git a/requirements.txt b/requirements.txt
index 03a93d4..65674ee 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1 @@
-vk-api==11.9.1
\ No newline at end of file
+vk-api==11.9.8
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 22ae7dc..ac9e423 100644
--- a/setup.py
+++ b/setup.py
@@ -5,291 +5,19 @@
# LiteVkApi
Бот в Вк? Легко!
-Pypi - https://pypi.org/project/LiteVkApi/
-
-# КРАТКАЯ ДОКУМЕНТАЦИЯ
-Привет! Эта библиотека создана для быстрого написания ботов (преимущественно ЛС) в ВК. Мне захотелось, чтобы ботов писать было быстро и легко, поэтому я сделал удобную библиотеку с самыми популярными функциями vk_api. Сейчас я расскажу вам о ней!
-
-P.s. Если вы читаете это в PypI, то у вас могут некорректно отображаться таблички с пояснениями функций. На Гитхабе все хорошо - https://github.com/Ma-Mush/LiteVkApi/
-
-# Внимание!
-
-### С обновления 2.0 структура библиотеки немного поменялась.
-
-Боты, написанные на версиях 1.x не будут работать на версиях 2.x. Чтобы они снова работали, достаточно записать в переменную Vk функцию Vk.login, вот так:
-```
-Vk = Vk.login(параметры)
-```
-
-Теперь вы можете регистрировать одновременно сразу несколько ботов и использовать свои переменные в качестве объекта функции (в документации рассмотрена переменная Vk).
-
-Этот код:
-```python
-from LiteVkApi import Vk
-Vk = Vk.login(твой ид, "твой токен")
-while True:
- if Vk.check_new_msg():
- event = Vk.get_event()
- Vk.msg(event.text, event.user_id)
-```
-
-Будет работать абсолютно так-же, как и этот:
-```python
-from LiteVkApi import Vk
-vk_session = Vk.login(твой ид, "твой токен")
-while True:
- if vk_session.check_new_msg():
- event = vk_session.get_event()
- vk_session.msg(event.text, event.user_id)
-```
-
-### Обратите внимание, что не все функции должны принимать в качестве объекта Вашу переменную!
-Так, функции Vk.login и Vk.give_session ВСЕГДА ДОЛЖНЫ БЫТЬ С "Vk"
-
-
-## Импорты
-Для начала установите vk_api, если он не установлен - pip3 install vk_api
-
-Скрипт библиотеки написан в виде функций и различных переменных в классе, поэтому можно использовать несколько вариантов импорта:
-Рекомендую - from LiteVkApi import Vk (будет описана здесь), import LiteVkApi (придется использовать LiteVkApi.Vk._), < один из предыдущих вариантов > as < название > (вместо названия импортированного модуля можно использовать свое имя)
-
-## _.help()
-Функция выведет в консоль информацию, которая описывает основное строение билиотеки, как с ней работать, что она может и так далее. Вообщем документация на минималках)
-
-## Vk.Login(id_group, token, userbot=False, chats=False, my_key=0, my_server=0, my_ts=0) *
-
-### Функция ВСЕГДА имеет объект Vk
-Функция регистрирует вас на сервере ВКонтакте и с обновления 2.0 возвращает сессию в переменную.
-Параметры:
-Название | Что это?
-------------- | -------------
-id_group | id группы в числовом виде (например 200397283), если используется юзер-бот - любое число
-token | Токен сообщества в виде строки (например 'a244f42a676ec65dbod1e713aab88e735e311448868357u545c27cd64802tc8a31ee66e462 8a0a4ca98be')
-userbot | Для страницы (а не для группы) вы используете бота? (True/False) По умолчанию False
-get_session | Если True - возвращает сессию в переменную (для удобства использования вместе vk_api). По умолчанию False
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-ост. | Настройки для беседы, узать тут - https://vk.com/dev/groups.getLongPollServer
-
-p.s. Для бесед не тестировал, возможны ошибки)
-
-## _.get_session()
-Возвращает сессию Вконтакте, т.е. ели вы уже вошли через Vk.login и вам надо пользоваться обычным vk_api, то вы можете использовать эту сессию, чтобы не входить снова. (Тоже самое на vk_api - vk_session = vk_api.VkApi(token = токен))
-
-## Vk.give_session(session) *
-
-#### Функция ВСЕГДА имеет объект Vk
-Регистрирует вашу сессию Вк, но только если вы уже входили через другие api и передали ее в параметр session (для vk_api сессия получается через session = vk_api.VkApi(token = токен))
-Параметры:
-Название | Что это?
-------------- | -------------
-session | Сессия в Вк
-ост. | Настройки для беседы, узать тут - https://vk.com/dev/groups.getLongPollServer
-
-## _.msg(text, userid chats=False)
-Отправляет сообщение пользователю по ID / беседе по ее номеру с заданным текстом
-Параметры:
-Название | Что это?
-------------- | -------------
-text | Текст сообщения
-userid | ID пользователя/беседы для отправкии сообщеия
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.check_new_msg()
-Используется для проверки новых сообщений (возвращает True / False)
-Параметры:
-Название | Что это?
-------------- | -------------
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.get_event()
-Возвращает данные о новом сообщении при его наличии. Основные параметры выданных данных - user_id / chat_id, text. Подробнее в документации vk_api.
-
-## _.send_photo(file_name, userid, msg=None, chats=False)
-Отправляет фото с сообщением / без него пользователю/беседе.
-Параметры:
-Название | Что это?
-------------- | -------------
-file_name | имя файла в директории запущенного питон-файла или полный путь к нему
-userid | ID пользователя/беседы для отправкии сообщеия
-msg | Текст сообщения (по умолчанию без него)
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.new_keyboard(dicts, perm=True)
-Создание клавиатуры (возвращает данные в переменную для отправки)
-Параметры:
-Название | Что это?
-------------- | -------------
-dicts | Масив со словарями, содержащими данные о кнопках.
-perm | Будет ли сохранятся клавиатура после нажатия (True / False)? По умолчанию True. (Лайфхак - False можно использовать вместо delete_keyboard при поэтапной выдаче клавиатур)
-
-По кнопкам:
-
-Словарь для обычной кнопки - {Текст:Цвет} (все цвета - ['POSITIVE', '3', 'ЗЕЛЕНЫЙ'], ['NEGATIVE', '2', 'КРАСНЫЙ'], ['SECONDARY', '1', 'БЕЛЫЙ'], ['PRIMARY', '0', 'СИНИЙ']).
-
-Для переноса на новую линию - {"new_line":""}.
-
-Для открытие перевода в VkPay - {"vk_pay":hash твоего кошелька}.
-
-Для открытия мини-приложения Вконтакте - {"open_app":[{"app_id":ид приложения}, {"owner_id":owner id приложения}, {"label":текст на кнопке}, {"hash":хэш приложения}]}
-
-Для открытия ссылки на любой ресурс - {"open_link":[{"label":текст кнопки}, {"link":ссылка с http / https / www}]}
-
-## _.send_keyboard(keyboard, userid, msg='Клавиатура!', chats=False)
-Отправляем пользователю созданнуб раннее клавиатуру
-Параметры:
-Название | Что это?
-------------- | -------------
-keyboard | Клавиатура, созданная раннее
-userid | Ид пользователя / беседы
-msg | Сообщение при отправке клавиатуры (по умолчанию 'Клавиатура!')
-chats | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.delete_keyboard(userid, msg='Клавиатура закрыта!', chats=False)
-Удаляет клавиатуру у пользователя.
-Параметры:
-Название | Что это?
-------------- | -------------
-userid | Ид пользователя / беседы
-msg | Сообщение при удалении клавиатуры (по умолчанию 'Клавиатура закрыта!')
-chats | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.send_file(file_name, userid, msg=None, chats=False)
-Отправляет файл с сообщением / без него пользователю/беседе.
-Параметры:
-Название | Что это?
-------------- | -------------
-file_name | имя файла в директории запущенного питон-файла или полный путь к нему
-userid | ID пользователя/беседы для отправкии сообщеия
-msg | Текст сообщения (по умолчанию без него)
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.mailing(text, userids, safe=[], chats=False)
-Делает рассылку независимо от других действий (бот будет отвечать во время рассылки).
-Параметры:
-Название | Что это?
-------------- | -------------
-text | Текст сообщения
-userids | Массив с ID пользователей / бесед (например - [123456, 1234567, 12345678])
-safe | Массив с ID пользователей / бесед, которые отказались от рассылки, по умолчанию таких нет
-chat | Для беседы вы используете бота или нет (True / False)? По умолчанию False
-
-## _.get_all_message_data()
-Возвращает массив со словарями с данными о последних сообщениях всех чатов, где находился бот (и ЛС, и беседы, и боты). Внимание! Функция достаточно долгая для ботов с большой аудиторией. Может занимать от 0.1 секунды до минуты.
-
-Что находится в словарях:
-Название | Что это?
-------------- | -------------
-date | Количиство секунд с 01.01.1970 00:00 UTC, также как time.time()
-from_id | Id группы или пользователя, кто отправил последнее сообщение (может быть как и бот, так и пользователь)
-id | Id этого сообщения
-out | 0 / 1, 0 - последнее сообщение присали вам, 1 - последнее сообщение прислали вы
-peer_id | Id чата - chat_id если это беседа, user_id если это Лс (ну или id группы если это бот)
-random_id | Какой рандомный Id у сообщения (нужен для его отправки, фактически бесполезен)
-text | Текст сообщения
-attachments | Описание вложений (фото, видео, файлы, стикеры и тд.) последнего сообщения (если это просто текст - [])
-admin_author_id | Если out=1 и писал не бот, а человек, то в этот параметр передается id админа, который писал сообщение
-update_time | Если сообщение редактировали, то передается время редактирования в формате, как в date
-conversation_message_id | Уникальный автоматически увеличивающийся номер для всех сообщений с этим peer
-fwd_messages | Массив пересланных сообщений, если они есть (если нет - [])
-important | В документации не нашел, скорее всего избарнный (важный) чат или нет (True/False)
-is_hidden | В документации не нашел, скорее всего скрытое сообщение (удалено у меня) или нет (но это не точно) (True/False)
-
-## _.get_all_open_id(message_data=None)
-Возвращает в переменную массив с Id всех пользоватлей, которые когда-либо писали боту или id бесед, где он находится (куда ему можно писать - для рассылки)
-Параметры:
-Название | Что это?
-------------- | -------------
-message_data | Данные, полученные с помощью get_all_message_data*, по умолчанию None, функция * вызывается автоматически
-
-## _.VkMethod(method_name, arg)
-Возвращает в переменную данные, полученные в результате запроса с помощью Вк-метода. Создана для удобства, чтобы не имортировать vk_api и получать сессию)
-Параметры:
-Название | Что это?
-------------- | -------------
-method_name | Назване Вк-метода (все методы тут - https://vk.com/dev/methods )
-arg | Параметры для метода в виде словаря
-
-# Примеры
-## Отправка сообщения с тем же текстом, тому же пользователю, что и прислали нам:
-```python
-from LiteVkApi import Vk
-vk_session = Vk.login(твой ид, "твой токен")
-while True:
- if vk_session.check_new_msg():
- event = vk_session.get_event()
- vk_session.msg(event.text, event.user_id)
-```
-## Простейший бот:
-```python
-from LiteVkApi import Vk
-vk_session = Vk.login(твой ид, "твой токен")
-while True:
- if vk_session.check_new_msg():
- event = vk_session.get_event()
- eventxt, userid = event.text, event.user_id
- if eventxt == 'Привет':
- vk_session.msg(f'Привет, {userid}', userid)
- elif eventxt == 'Как дела?':
- vk_session.msg('Хорошо, а у тебя?', userid)
-```
-## Создание, отправка и удаление клавиатуры:
-```python
-from LiteVkApi import Vk
-vk_session = Vk.login(твой ид, "твой токен")
-while True:
- if vk_session.check_new_msg():
- event = vk_session.get_event()
- if event.text == 'Клавиатура':
- kbrd = [{'Клавиатура':"синий"}, {'new_line':""}, {'Закрыть клавиатуру':'3'},
-{'new_line':''}, {'open_link':[{'label':'Создатель библиотеки'}, {'link':'https://vk.com/maks.mushtriev2'}]}]
- keyboard = vk_session.new_keyboard(kbrd)
- vk_session.send_keyboard(keyboard, event.user_id, 'А вот и клавиатура!')
- elif event.text == 'Закрыть клавиатуру':
- vk_session.delete_keyboard(event.user_id, 'Теперь клавиатура закрыта!')
-```
-## Отправка файла и фото:
-```python
-from LiteVkApi import Vk
-vk_session = Vk.login(твой ид, "твой токен")
-while True:
- if vk_session.check_new_msg():
- event = vk_session.get_event()
- try:
- vk_session.send_photo(event.text, event.user_id, 'Отправляю фото...')
- vk_session.send_file(event.text, event.user_id, 'Отправляю файл...')
- except:
- vk_session.msg('Не могу найти файл {} или указанный файл не является фотографией'.format(event.text), event.user_id)
-```
-## Рассылка кому только можно
-```python
-from LiteVkApi import Vk
-vk_session = Vk.login(твой ид, "твой токен")
-mass_ids = vk_session.get_all_open_id()
-vk_session.mailing('Рассылка!', mass_ids)
-```
-
-# Контакты
-
-Что-то не работает, есть вопросы, пожелания? Пиши - vk.com/maks.mushtriev2, t.me/Error_mak25
-
-Мой блог - vk.com/mamush_blog
-
-Донат - vk.cc/az7BQK (Киви)
-
-
-### Удачи!
+Из-за некорректного отображения документации в PyPI, она была полностью перемещена на гитхаб - https://github.com/Ma-Mush/LiteVkApi/
"""
setup(
name="LiteVkApi",
- version="2.1.1",
- description="Библиотека для лекгого написания ботов ВК!",
+ version="2.4",
+ description="Библиотека для легкого написания ботов ВК!",
packages=["LiteVkApi"],
author_email="ma_mush@mail.ru",
zip_safe=False,
- python_requires=">=3.6",
+ python_requires=">=3.8",
long_description=long_description,
long_description_content_type="text/markdown",
- install_requires= "vk-api==11.9.1"
+ install_requires= "vk-api==11.9.8"
)