Skip to main content

Async and fast api wrapper for IrisCallback API

Project description

IrisPY

Асинхронная и быстрая библиотека для Iris Callback API.

С помощью Iris Callback API вы можете получать сигналы из бесед, на которые вы подписались. Это поможет вам обрабатывать информацию способом, который удобен для вас без каких-либо ограничений.

Для этого необходимо создать свой сервер, который будет принимать запросы от серверов Iris.

Установка

  1. Новейшая версия:
    pip install irispy==1.2

  2. С помощью установщика pip из GitHub:
    pip install https://github.com/zpodushkin/irispy/archive/master.zip --upgrade

Кастомизация

downloads downloads

После установки 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for irispy, version 1.2
Filename, size File type Python version Upload date Hashes
Filename, size irispy-1.2.tar.gz (11.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page