Async and fast api wrapper for IrisCallback API
Project description
IrisPY
Асинхронная и быстрая библиотека для Iris Callback API.
С помощью Iris Callback API вы можете получать сигналы из бесед, на которые вы подписались. Это поможет вам обрабатывать информацию способом, который удобен для вас без каких-либо ограничений.
Для этого необходимо создать свой сервер, который будет принимать запросы от серверов Iris.
Установка
-
Новейшая версия:
pip install irispy==1.2
-
С помощью установщика pip из GitHub:
pip install https://github.com/zpodushkin/irispy/archive/master.zip --upgrade
Кастомизация
После установки irispy
рекомендуется сразу же установить дополнительные модули loguru
и vbml
.
С ними фреймворк работает лучше и быстрее.
Установите loguru
и vbml
с помощью команд:
pip install loguru
pip install vbml
Примеры использования
from irispy import Dispatcher
from irispy import objects
from random import randint
import typing
dp = Dispatcher(
secret="<your_secret>",
user_id="<your_user_id>",
token="<your_vk_token>" # Получить можно здесь: https://vkhost.github.io/ (Kate Mobile)
)
chats = {} # Синхронизация чатов с Ирисом
async def send_msg(peer_id: int, message: str, attachment: str = "", **kwargs):
""" Метод для отправки сообщения.
:param peer_id: Айди беседы: Пример: 2000000666
:param message: Текст сообщения
:param attachment: Вложение: Пример: photo1_4545
:return:
"""
await dp.api.messages.send(
peer_id=peer_id,
message=message,
attachment=attachment,
random_id=randint(-2e9, 2e9),
**kwargs
)
async def get_chat(date: int) -> typing.Union[None, int]:
""" Получение айди чата через
метод "messages.search" с параметрами:
:param date: Дата в timestamp
:return: Айди чата: Пример: 2000000001
"""
try:
items = (await dp.api.messages.search(
q="!связать",
count=5
))["items"] # Получаем список чатов, в которых было найдено сообщение "!связать"
for i in items: # Проходим по ним циклом
if i["date"] == date: # Если дата отправки сообщения равна нашей дате
return i["peer_id"] # То возвращаем айди чата
except Exception as e:
print("Error: ", e)
return
@dp.event.sendMySignal(text=["повтори <text>"], lower=True)
async def wrapper(event: objects.SendMySignal, text: str):
""" Функция, которая ловит сигнал
при отправке сообщений: .с; !сигнал ...
:param text:
:param event: Объект эвента
:return:
"""
await send_msg(
peer_id=chats[event.object.chat],
message=f"Повторяю: {text}"
)
@dp.event.sendSignal(text="повтори <text>", lower=True)
async def executor(event: objects.SendSignal, text: str):
print(event, text)
@dp.event.bindChat()
async def bind(event: objects.BindChat):
if event.object.chat not in chats: # Если UID чата нет в словаре, то добавляем.
chats[event.object.chat] = await get_chat(event.message.date)
await send_msg(peer_id=chats[event.object.chat], message="Чат привязан!")
dp.run_app(host="0.0.0.0", port=80)
Больше примеров в папке /examples
Документация
История релизов
- 1.0
- Первый деплой!
- 1.0.1
- Добавление логов и обработка ошибок
- 1.0.5
- Валидация в методах
sendSignal
иsendMySignal
- Изменение структуры хендлеров
- Валидация в методах
- 1.1
- Валидаторы VBML!
- Первый и официальный релиз!
- 1.1.1
- Не работали валидаторы без аргументов. Исправлено
- Модуль «IrisPY» был загружен на PyPi!
- 1.2
- Добавлена поддержка VK API
- Добавлен User LP
Contributing
ПР поддерживаются! Мне приятно видеть ваш вклад в развитие библиотеки
Задавайте вопросы в блоке issues и в чате VK!
Лицензия
Copyright © 2019-2020 zpodushkin.
Этот проект имеет GPL-3.0 лицензию.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.